This Time Self-Hosted
dark mode light mode Search

Software libero e sistemi operativi proprietari

Introduzione

Non molto tempo fa, sulle mailing lists e sui blog – web-log, «diari» personali, in questo caso scritti dagli sviluppatori del progetto KDE – degli sviluppatori di KDE si è trattato il problema dell’eventuale portabilità di KDE sotto Windows. La discussione è sfociata su problemi filosofici del software libero su sistemi operativi proprietari, e in generale quello che ha prodotto è stata solo una «guerra di religione».

La mia posizione su questo tema è stata a favore della portabilità, anche se qualche argomento portato dai contrari mi ha dato da pensare. Voglio quindi tentare un’analisi sui pro e i contro dell’eventualità di un KDE4Windows, paragonando queste discussioni a quello che al momento viene fatto per la portabilità in altri progetti, e cercando di dare modo a chi non ha mai sviluppato del software portabile cosa la portabilità implichi (senza scendere però troppo nei dettagli tecnici).

Il progetto GNU e i sistemi operativi proprietari

Quando Richard Stallman fondò il progetto GNU, non era disponibile un sistema operativo libero da cui partire, quindi si partì invece dagli applicativi, per essere precisi dall’Emacs dello stesso Stallman, che è stato scritto su Unix (proprietario). Inoltre, per citare lo stesso Stallman (Il progetto GNU, tratto da Software Libero — Pensiero Libero, Edizioni Stampa Alternativa.:


Alcuni di questi programmi vennero diffusi e gli utenti iniziarono a estenderli e a renderli utilizzabili su nuovi sistemi: sulle varie versioni di Unix, incompatibili tra loro, e talvolta anche su altri sistemi.
Questo processo rese tali programmi molto più potenti e attirò finanziamenti e collaboratori al progetto GNU; tuttavia probabilmente ritardò di alcuni anni la realizzazione di un sistema minimo funzionante, perché il tempo degli autori di GNU veniva impiegato a curare la compatibilità di questi programmi con altri sistemi e ad aggiungere nuove funzionalità ai componenti esistenti, piuttosto che a proseguire nella scrittura di nuovi componenti.

Questa frase riesce a far intendere perfettamente l’ambiguità che vi è nella portabilità del software libero su sistemi proprietari.

Attualmente, gran parte del software libero del progetto GNU è portabile su molti diversi sistemi, compreso Windows (per la maggior parte tramite cygwin — Cygwin è un ambiente POSIX-compatibile per Windows.). Possiamo per esempio vedere che l’elenco di sistemi su cui GNU Emacs può essere eseguito comprende (come sistemi operativi proprietari) AIX, MacOSX, MS DOS, MS Windows, Solaris e Ultrix. Dunque non c’è alcun problema di tipo «filosofico» che impedisca il porting del software libero su sistemi operativi proprietari. Anzi, la disponibilità del supporto (anche se probabilmente non funzionante) per sistemi operativi e piattaforme ormai decaduti dimostra che, anzi, è utile portare un po’ di libertà dove non ce n’è di base.

Progetti portabili

Oltre ai vari applicativi dei progetti GNU, esistono altri progetti che mirano alla più possibile portabilità in modo da poter essere eseguiti sulla quasi totalità dei sistemi operativi esistenti, possiamo prendere per esempio Mozilla oppure OpenOffice.org, ma ne esistono molti altri ancora (MySQL, Apache, PHP …)

Le ragioni per cui questi progetti vogliono essere disponibili per più piattaforme possibili è abbastanza semplice da capire in realtà: se Mozilla fosse disponibile solo per sistemi operativi liberi, rischierebbe di restare comunque un prodotto limitato rispetto ad Internet Explorer, e nessuno avrebbe mai pensato di rendere i propri siti compatibili con Mozilla, a meno che non fossero interessati loro stessi al supporto dei sistemi operativi liberi. Invece, proprio essendo un browser capace di funzionare su quasi qualsiasi sistema operativo esistente, l’interesse da parte dei webmaster di rendere il proprio sito compatibile è accresciuto dal fatto di poter supportare molte diverse piattaforme tramite un solo prodotto.
In modo simile, se OpenOffice.org fosse stato limitato ai soli sistemi operativi liberi, il suo formato di file non sarebbe potuto essere utilizzato dagli utenti di sistemi operativi proprietari, e quindi si avrebbe avuto lo stesso problema che abbiamo ancora con i formati proprietari di Microsoft Office.

Vediamo dunque che due tra i più grossi progetti liberi degli ultimi anni (di quelli che hanno avuto più successo), sono dei progetti multi-piattaforma che funzionano anche su Windows e Solaris.

Portabilità: le ragioni

Come abbiamo visto la ragione principale per cui un progetto è interessato ad essere portabile è per estendere la propria userbase, ovvero il quantitativo di utenti che usano un determinato software abitualmente. Questo è proprio lo scopo primario di Mozilla e di OpenOffice, che tentano di prendere il posto di programmi proprietari come sono Internet Explorer e Microsoft Office.

In aggiunta a questo, i progetti liberi che in qualche modo utilizzano dei formati aperti sono quasi obbligati al poter essere multi-piattaforma: in caso contrario, nessun software proprietario supporterebbe tali formati, e sia da una parte gli utenti proprietari non potrebbero leggere i documenti scritti in questi formati, sia dall’altra gli utenti di sistemi operativi liberi non potrebbero comunicare con gli altri utenti, e una cosa simile è, a tutt’oggi, impensabile.

Un altro motivo per cui un progetto libero dovrebbe realizzare almeno una parzialità a mio avviso è il fatto che per le persone comuni il problema maggiore nel cambio di sistema operativo è il trovarsi sperse in mezzo a tonnellate di applicazioni che non hanno mai visto prima. Anche se per molti informatici non esiste un problema simile, purtroppo per le persone comuni questo è un problema da non sottovalutare.
Molta gente non sa neanche quello che effettivamente si ritrova a fare al computer, non capisce che se fa doppio click su un’icona lancia l’applicazione collegata con quel tipo di file, crede semplicemente di lanciare il file. Si troverebbe molto probabilmente spaventata a non poter fare la stessa cosa sotto un altro sistema operativo o si ritrovasse di fronte un’interfaccia completamente diversa si domanderebbe cosa è successo al proprio documento per rovinarsi.
Un piano a lungo termine per tentare di spostare utenti a Windows ad un sistema operativo libero (Linux per esempio, ma potrebbe essere anche FreeBSD), potrebbe iniziare con l’installazione sulla macchina della persona di Mozilla Firefox e Thunderbird da sostituire ad Internet Explorer e Outlook Express, e poi OpenOffice per sostituire Microsoft Office.
In questo modo la gente potrebbe avere modo di abituarsi alle singole applicazioni un po’ per volta senza cambiare anche il resto dell’interfaccia di sistema, e una volta che le persone sono state abituate ad utilizzare Mozilla, OpenOffice, e tutte le altre eventuali applicazioni, il passaggio ad un sistema operativo diverso, con un’interfaccia diversa e un filesystem completamente diverso (può sembrare strano, ma per gente che è abituata a Windows e non ha mai visto altro in vita sua è ben difficile riuscire a capire il concetto alla base dei filesystem Unix e dei mount point).

Un altro vantaggio della portabilità è che, a persone che sono obbligate per un qualsiasi motivo non aggirabile ad usare sistemi operativi non liberi (nel lavoro, o per compatibilità hardware, o per qualsiasi altro motivo, non c’è limite alle cause che possono forzare in modo completo una persona ad utilizzare sistemi operativi non liberi), consente di usare almeno in parte software libero, in modo da non dipendere in modo assoluto dal software proprietario.

Per finire c’è il motivo prapagandistico: più sistemi operativi sono coinvolti nei progetti di software libero, più sono le persone che ne vengono a contatto, e più persone ne vengono a contatto, più il software libero diventa “famoso”. Non è un aspetto da sottovalutare: io stesso sono venuto per la prima volta in contatto col software libero tramite software libero scritto non per sistemi operativi liberi ma per Windows.

Le opposizioni

Ovviamente come ogni cosa al mondo, non è tutto bianco o nero, esistono degli argomenti che minano la portabilità del software su sistemi operativi non liberi, e per quanto meno numerosi delle ragioni per cui la portabilità è bene, sono alquanto gravi.

La prima critica che viene mossa, direttamente da Stallman, è quella del focalizzare della «forza programmatrice» che potrebbe essere impiegata per scrivere software libero migliore (o semplicemente più software libero) per sistemi operativi liberi.
Anche se in realtà questo fattore sta tendendo a sparire: moltissime librerie e toolkit grafici sono già loro stessi multipiattaforma (GTK, QT, apr), e permettono di scrivere il codice in modo più astratto e non troppo dipendente dal sistema operativo sottostante, non richiedendo molti sforzi per la portabilità (portare una di quelle librerie ad un altro sistema operativo è un lavoro che coinvolge un solo progetto, non le decine di progetti che le decine o centinaia di programmi che le usano.
Inoltre, molto spesso il porting viene effettuato da persone che sanno lavorare bene in quel determinato ambiente, ma per esempio non sanno molto di come programmare sotto GNU/Linux (o GNU/Hurd), e in tal caso non c’è alcuno spreco di forza lavoro.

Un altro fattore negativo nello sviluppo di software libero per sistemi operativi non liberi è relativo al fatto che fornendo applicazioni migliori a quelle presenti su Windows per determinate funzioni, c’è chi potrebbe essere tentato di non cambiare sistema operativo visto che ha già quelle applicazioni di cui ha bisogno. In reltà questo può essere vero per una certa parte, ma se una persona non è intenzionata a cambiare sistema operativo per passare ad un sistema operativo libero significa probabilmente che c’è qualcosa che manca ancora. Può esserci un motivo come quelli di cui parlavo prima, di compatibilità hardware o di necessità software. Oppure una semplice questione di facilità. Ma questo problema è imputabile ad una confluenza di cause, sia della portabilità che delle mancanze dei sistemi operativi liberi.

Invece bisogna scindere il discorso precedente dal caso in cui le applicazioni siano scritte esclusivamente per sistemi operativi non liberi. In tal caso, è sì possibile che un’applicazione libera finisca per fornire un asso nella manica per un sistema operativo non libero. Credo che molti di noi abbiano di fronte l’esempio di eMule, che è diventato in breve tempo una delle killer application di Windows, per quanto sia un software libero. Infatti molte persone abituate ad eMule sono state alla larga da sistemi operativi liberi come Linux prima dell’uscita di un suo port per Linux (i vari lMule, xMule, aMule). In tal caso però non c’è stata una «portabilità», ma una fossilizzazione su un sistema operativo non libero, che nuoce gravemente al software.

Le difficoltà

Vediamo ora, un po’ a grandi linee, quali sono le difficoltà nel creare un software libero portabile, o convertirne uno già esistente.

In entrambi i casi, il problema solitamente più grande è quando si ha a che fare con interfacce grafiche: il sistema X11, il GDI di Windows e l’ambiente Aqua di MacOSX sono completamente diversi sia come aspetto e standard, sia a livello di programmazione. Per risolvere tale problema esistono delle librerie di astrazione dei widget, ovvero dei componenti grafici visibili sullo schermo, che permettono di scrivere codice indipendente dal sistema grafico utilizzato. Purtroppo non sono molte le librerie che funzionano su tutti e tre i sistemi operativi, anzi in realtà l’unica libreria che funziona nativamente in Windows, Linux&FreeBSD e MacOSX è la libreria QT di Trolltech. Purtroppo in Windows tale libreria non è software libero, ed è rilasciata sotto un’altra licenza duale anche sotto i sistemi operativi liberi.

Gli altri maggiori problemi sono la gestione del threading e quella dei socket, che in realtà rimane uguale sia sui classici sistemi operativi liberi come Linux e FreeBSD, sia su MacOSX e (soltanto per i socket) Solaris, mentre sotto Windows è completamente diversa. Anche per questi aspetti sono disponibili librerie di astrazione multipiattaforma, ma per esempio QT e wxWindows forniscono delle proprie implementazioni di tali aspetti.
Un altro problema che viene nuovamente creato solo da Windows è la differenza completa nella gestione dei filesystem. In Windows esistono ancora le unità, eredità del vecchio MS-Dos, mentre tutti gli Unix (compresi MacOSX e Solaris) utilizzano il classico filesystem gerarchico a partire da /.

Per finire, la gestione dell’internazionalizzazione di un programma, sotto sistemi operativi liberi può essere generalmente fatta utilizzando gettext. Invece sotto Windows (e probabilmente altri sistemi operativi proprietari), la cosa non è molto più semplice.

La maggior parte dei controlli a livello di codice può essere effettuata tramite autoconf/automake, che mettono a disposizione una suite di check standard e la capacità di scripting per scrivere nuovi test particolareggiati, per verificare la compatibilità di certi costrutti con lal libreria C (per esempio) utilizzata.

Si tratta quindi per lo più di progettare il proprio programma con una certa dose di elasticità mentale, lasciando spazi di manovra per aggiungere l’eventuale portabilità verso sistemi operativi sconosciuti.

Molto peggiore è quando bisogna aggiungere portabilità ad un programma già esistente, perché ciò richiede a volte di modificare intere parti del codice. In genere, se deve essere aggiunta la portabilità ad un software già esistente, è uno sviluppatore già esperto del sistema su cui deve essere portato che deve pensare ad un modo per rendere l’applicazione compatibile senza doverlo riscrivere da capo.

Conclusione

Ho tentato di fornire entrambi i pareri riguardo alla portabilità dei software liberi sui sistemi operativi proprietari, e ho provato di porvi a conoscenza di quali sono i problemi che gli sviluppatori devono affrontare per raggiungere tale scopo. A questo punto lascio a voi decidere da che parte stare.

Per chiudere, vorrei solo spendere due parole su quegli sviluppatori che chiedono di non portare il loro software su sistemi operativi proprietari e minacciano di non unire al codice sorgente base le modifiche per far funzionare il loro programma sotto un qualsiasi sistema proprietario.

A mio avviso questo comportamento è dannoso per il software libero perché obbliga gli sviluppatori a frammentare gli sforzi: anziché avere una singola versione in cui tutti possono applicare le proprie modifiche ci saranno invece diverse linee di sviluppo separate per il supporto dei vari sistemi operativi, e questo non aiuta di certo il progetto del software libero, perchè impedisce agli sviluppatori di coordinarsi per effettuare un’unica base di codice.

Un esempio di una teoria simile viene applicata per Frozen-Bubble, i cui port per MacOSX, Windows e diversi dispositivi tascabili come cellulari e palm sono stati rilasciati in modo separto richiedendo sforzi maggiori da parte degli sviluppatori impegnati nel porting per poter risolvere problemi probabilmente simili. E questo è sicuramente uno spreco di risorse (e già non ne abbiamo troppe).

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.