Applicare il criterio del software libero
di Richard StallmanLe quattro libertà essenziali ci forniscono il criterio per stabilire se un determinato codice è libero (ovvero se rispetta la libertà dell'utente). In quale maniera dovremmo applicarle per determinare se un pacchetto software, un sistema operativo, un computer o una pagina web sono raccomandabili?
La determinazione della natura libera o meno di un software incide prima di tutto sulle decisioni riguardanti le nostre attività private: per sostenere la nostra libertà dobbiamo scartare i programmi che ce ne priverebbero. Nondimeno, essa influisce anche su ciò che potremmo dire agli altri e fare con gli altri.
Un programma non libero è un'ingiustizia. Distribuire un programma non libero, raccomandarlo agli altri o, in linea generale, indirizzare le persone verso l'impiego di software non libero, significa indurre gli individui a rinunciare alla propria libertà. Di certo indurre le persone ad usare software non libero non è come installarlo direttamente nei loro computer, ma in ogni caso noi non dovremmo mai guidare gli altri nella direzione sbagliata.
Ad un livello più profondo, noi non dobbiamo presentare un programma non libero come una soluzione poiché ciò ne conferirebbe legittimità. Il software proprietario è un problema; presentarlo come una soluzione nega l'esistenza del problema.
Questo articolo illustra la maniera in cui noi applichiamo il criterio base del software libero nella valutazione di diverse cose, in modo da poter decidere se raccomandarle o meno.
Pacchetti software
Affinché un pacchetto software possa essere considerato libero, tutto il codice che contiene deve essere libero. E non soltanto il codice. Dal momento che i file di documentazione (comprensivi di manuali, README, change log, ecc) sono una parte tecnica essenziale di un pacchetto software, essi devono essere altrettanto liberi.
Un pacchetto software viene solitamente usato in congiunzione con molti altri pacchetti ed interagisce con alcuni di loro. Quali tipi di interazione con programmi non liberi sono accettabili dal punto di vista etico?
Noi abbiamo sviluppato GNU per creare un sistema operativo libero, dal momento che nel 1983 un sistema libero non esisteva. Quando sviluppammo i componenti iniziali di GNU, negli anni '80, era inevitabile che ogni componente dipendesse da software non libero. Ad esempio, nessun programma scritto in C poteva funzionare senza la presenza di un compilatore C non libero finché GCC non fu pronto. E nessun programma poteva funzionare senza libc di Unix fino a quando glibc non fosse divenuto operativo. Ciascun componente poteva funzionare solo nei sistemi non liberi dal momento che tutti i sistemi erano non liberi.
Una volta rilasciato il componente che poteva essere eseguito in alcuni sistemi non liberi, gli utenti lo adattarono ad altri sistemi non liberi; queste trascrizioni per piattaforme diverse non erano peggiori dal punto di vista etico rispetto al codice specifico alla piattaforma di cui noi avevamo bisogno per sviluppare queste componenti, ragione per cui abbiamo incorporato le loro patch.
Quando, nel 1992, venne rilasciato sotto licenza libera il kernel Linux, l'ultimo pezzo mancante venne fornito al sistema GNU (inizialmente, nel 1991, Linux venne rilasciato sotto una licenza non libera). La combinazione di GNU e Linux risultò in un sistema operativo completamente libero – GNU/Linux.
A quel punto avremmo potuto cancellare il supporto per piattaforme non libere, ma decidemmo di non farlo. Un sistema non libero è un'ingiustizia, ma non è colpa nostra se un utente lo utilizza. Supportare un programma libero all'interno di un tale sistema non ne aumenta l'ingiustizia complessiva. Ciò è utile non soltanto per gli utenti di tali sistemi, ma anche al fine di attrarre più persone a contribuire allo sviluppo del programma libero.
Tuttavia, un programma non libero eseguito al di sopra di un programma libero è una faccenda del tutto differente poiché spinge gli utenti a rinunciare alla libertà. In alcuni casi noi non permettiamo che ciò accada: per esempio, GCC non ammette plugin non liberi. Quando un programma rende possibile add-on non liberi, esso dovrebbe per lo meno non indirizzare la gente verso il loro uso. Ad esempio, noi preferiamo LibreOffice invece di OpenOffice perché OpenOffice suggerisce l'utilizzo di addon proprietari, mentre LibreOffice li rifugge. Abbiamo inoltre sviluppato IceCat per evitare di raccomandare gli add-on non liberi suggeriti da Firefox.
In pratica, se il pacchetto Icecat spiega come può essere eseguito nel sistema MacOS, ciò non spingerà la gente ad usare MacOS. Tuttavia, se nel suddetto pacchetto menzionassimo add-on non liberi ciò incoraggerebbe gli utenti di Icecat ad installare add-on proprietari. Per tale motivo il pacchetto Icecat, manuali e siti web inclusi, non devono fare alcuna menzione di questi add-on proprietari.
Talvolta un programma libero interagisce con uno che non lo è, ma nessuno dei due è basato sull'altro. La nostra regola in tal caso impone, qualora il programma in questione sia molto famoso, di insegnare alla gente come far interagire il nostro programma libero con quello non libero; qualora invece il programma proprietario sia poco conosciuto, non dovremmo farne alcuna menzione ma piuttosto ignorarne l'esistenza. A volte supportiamo l'interazione con il programma non libero se esso è installato, evitando però di rivelare all'utente la possibilità di tale interazione.
Noi rifiutiamo “migliorie” che funzionerebbero solamente all'interno di un sistema non libero. Migliorie di tal natura incoraggerebbero la gente ad usare il sistema proprietario invece di GNU, portandoci a segnare un autogol.
Distribuzioni GNU/Linux
Una volta reso libero il kernel Linux nel 1992, la gente cominciò a sviluppare distribuzioni di GNU/Linux. Pochissime di queste distribuzioni sono completamente libere.
Le regole applicate ai pacchetti software valgono anche per le distribuzioni: una distribuzione eticamente corretta deve contenere solo software libero ed indirizzare gli utenti esclusivamente verso questa tipologia di software. Ma che cosa implica per una distribuzione il fatto di “contenere” un particolare pacchetto software?
Alcune distribuzioni installano programmi da pacchetti binari facenti parte della distribuzione stessa; altre costruiscono ogni programma dal codice sorgente e letteralmente contengono solo la “ricetta” per scaricare e compilare il programma dal sorgente. Per quanto riguarda la questione della libertà dell'utente, la maniera in cui una distribuzione installa un dato pacchetto è irrilevante; se la distribuzione o il suo sito web presentano un pacchetto come un'opzione installabile, noi diciamo che la distribuzione in questione “contiene” quel pacchetto.
Gli utenti di un sistema libero hanno il controllo su di esso e possono installare qualsiasi cosa desiderino installarvi. Le distribuzioni libere forniscono strumenti con i quali gli utenti possono installare i propri programmi e le loro versioni modificate dei programmi liberi; possono anche installare programmi non liberi. Mettere a disposizione degli utenti questi strumenti generali non è una pecca dal punto di vista etico poiché gli sviluppatori della distribuzione non sono responsabili di ciò che gli utenti si procurano e installano di loro iniziativa.
Gli sviluppatori diventano responsabili dell'installazione di software non libero quando indirizzano gli utenti verso un programma proprietario – mettendolo, ad esempio, nella lista dei pacchetti della distribuzione oppure distribuendolo tramite i loro server, ovvero presentandolo come una soluzione piuttosto che un problema. Questo è esattamente il punto debole, dal punto di vista etico, della maggior parte delle distribuzioni.
Le persone che installano pacchetti software per conto proprio possiedono un certo tipo di raffinatezza: se gli diciamo «Baby contiene codice non libero, ma Gbaby è completamente libero», possiamo aspettarci che essi si prendano cura di ricordare quale pacchetto è libero e quale no. Tuttaviale distribuzioni vengono raccomandate ad utenti comuni i quali si dimenticherebbero di tali dettagli. Essi si chiederebbero: «Che nome mi avevano detto di usare? Credo fosse Baby».
Perciò, quando dobbiamo raccomandare una distribuzione al pubblico meno esperto, insistiamo affinché il suo nome non sia simile ad una distribuzione che scartiamo, in modo che la nostra raccomandazione di usare solamente la distribuzione libera possa essere trasmessa chiaramente e senza fraintendimenti.
Altra differenza tra una distribuzione e un pacchetto software è la probabilità che venga incluso codice non libero. Gli sviluppatori di un pacchetto ispezionano con attenzione il codice aggiunto. Qualora decidessero di creare un programma libero è inverosimile che aggiungano del codice proprietario. Vi sono state delle eccezioni a questa tendenza, incluso il caso oltremodo nocivo dei “blob binari” aggiunti al kernel Linux, ma si tratta di una frazione minima all'interno degli esistenti programmi liberi.
Al contrario, una distribuzione GNU/Linux contiene solitamente migliaia di pacchetti e gli sviluppatori di una distribuzione possono aggiungere centinaia di pacchetti ogni anno. Senza uno sforzo diligente, mirato ad evitare i pacchetti non liberi, alcuni di questi andranno sicuramente ad infiltrarsi nella distribuzione. Dal momento che le distribuzioni libere sono poche, noi chiediamo agli sviluppatori di ciascuna di esse di assicurarsi che la loro distribuzione fornisca sempre e solo software libero, rimuovendo qualsiasi codice proprietario o malware come condizione necessaria affinché la distribuzione possa essere inclusa nella nostra lista di distribuzioni libere. Si vedano le linee guida per le distribuzioni di sistemi GNU.
Un tale impegno mirato all'accertamento della natura totalmente libera di una distribuzione non viene invece richiesto nel caso dei pacchetti di software libero: non è fattibile e, fortunatamente, non è nemmeno necessario. Ottenere dagli sviluppatori la promessa di mantenere liberi 30.000 programmi liberi eviterebbe alcuni problemi, ma creerebbe un carico di lavoro mastodontico per lo staff della FSF; per di più, la maggior parte di questi sviluppatori non hanno alcuna relazione con il progetto GNU e potrebbero non avere alcun interesse a farci una qualsivoglia promessa. Perciò noi ci occupiamo solo dei rari casi in cui un programma libero passi ad essere non libero, una volta che vi ci imbattiamo.
Periferiche
Un'unità periferica di un computer necessita di software – a volte un driver, altre un firmware, caricato dal sistema nella periferica stessa per farla funzionare. Perciò, l'uso e la raccomandazione di un'unità periferica sono giustificate se essa può essere utilizzata in un computer che non contiene alcun software proprietario, ossia nel caso in cui il driver o il firmware che il sistema deve caricare nella periferica siano liberi.
Accertarsi di ciò è molto semplice: basta connettere l'unità periferica ad un computer con una distribuzione GNU/Linux completamente libera e vedere se funziona. Tuttavia, la maggior parte degli utenti vuole sapere se l'unità funziona prima di comprarla, motivo per cui manteniamo una lista di informazioni riguardo numerose periferiche su h-node.org, un database di hardware per sistemi operativi pienamente liberi.
Computer
Un computer contiene software a vari livelli. Basandoci su quale criterio dovremmo certificare che un computer “Rispetta la vostra libertà”?
Ovviamente il sistema operativo e tutto ciò che vi è installato deve essere libero. Negli anni '90 il software di avviamento (BIOS) divenne sostituibile e, dal momento che viene eseguito nella CPU, presenta lo stesso tipo di problematica di un sistema operativo. Conseguentemente i programmi come il firmware e i driver che sono installati con o nel sistema, come anche il software d'avvio, devono essere liberi.
Se un computer è dotato di caratteristiche hardware che richiedono driver o firmware non liberi installati con il sistema, noi potremmo comunque approvarlo. Se infatti il computer è usabile senza queste particolari funzionalità che richiedono l'installazione di firmware proprietario, e se pensiamo che la maggior parte della gente non verrà forzata ad installare software non libero per farle funzionare, allora possiamo approvarlo. Altrimenti non possiamo. Si tratta di una decisione che richiede criterio e giudizio.
Un computer può contenere firmware e microcodice modificabile preinstallato a livelli più bassi e può inoltre contenere codice all'interno di memorie di sola lettura. Abbiamo deciso al momento di non considerare questi programmi nel nostro criterio di certificazione poiché altrimenti nessun computer avrebbe potuto soddisfare il criterio stesso. Inoltre un firmware non soggetto a modifiche è, dal punto di vista etico, equivalente ai circuiti. Quindi il nostro criterio di certificazione riguarda solo il codice che viene eseguito nel processore principale del computer e non risiede nelle memorie di sola lettura. Nel momento stesso in cui il software libero diverrà possibile per altri livelli di elaborazione, esigeremo software libero pure a questi livelli.
Considerando che la certificazione di un prodotto è anche una forma di pubblicizzazione del prodotto stesso, noi insistiamo affinché il venditore, in cambio, ci supporti, ovvero che parli di software libero piuttosto che di open source e che si riferisca alla combinazione di GNU e Linux con il termine GNU/Linux. Noi non abbiamo alcun obbligo di promuovere attivamente progetti che non riconoscono l'importanza del nostro lavoro e che non supportano il nostro movimento.
Si veda il nostro criterio di certificazione.
Pagine web
Oggigiorno la maggior parte delle pagine web contiene complessi programmi JavaScript necessari al loro funzionamento. Si tratta di una pratica dannosa dal momento che ostacola la capacità dell'utente di controllare il proprio computer e, inoltre, la maggior parte di questi programmi sono proprietari: una vera ingiustizia. Sovente il codice JavaScript spia l'utente. Il codice proprietario JavaScript prende così la forma di un attacco alla libertà degli utenti.
Per contrastare questo problema abbiamo sviluppato LibreJS, un add-on per Firefox che blocca il codice JavaScript complesso non libero (non è necessario bloccare gli script semplici che implementano modifiche minori all'interfaccia utente). Noi chiediamo ai creatori dei vari siti web di liberare i loro programmi JavaScript e di marcare le rispettive licenze affinché LibreJS possa riconoscerle.
Ma è etico, nel frattempo, apporre un link ad una pagina web che contiene un programma JavaScript non libero? Se fossimo assolutamente inflessibili, i nostri link dovrebbero rimandare solamente a codice JavaScript libero. Tuttavia, molte pagine funzionano anche quando il loro codice JavaScript non viene eseguito. Inoltre, con tutta probabilità, vi imbatterete spesso in codice JavaScript non libero in ogni caso, anche qualora decidessimo di non apporre mai un link che direzioni verso una pagina contenente JavaScript proprietario; per evitare ciò dovete usare LibreJS oppure disabilitare l'esecuzione di JavaScript. Per questa serie di motivi abbiamo deciso di inserire link a quelle pagine che funzionano anche senza JavaScript non libero, esortando al contempo gli utenti a proteggersi dal codice JavaScript proprietario in generale.
Se, al contrario, una pagina non funzionasse senza l'esecuzione di codice JavaScript non libero, mettere un link che direzioni a tale pagina spingerebbe innegabilmente le persone ad eseguire tale codice non libero. Per principio, quindi, non inseriamo link verso pagine di questo tipo.
Conclusione
L'applicazione dell'idea fondamentale secondo la quale tutto il software deve essere libero porta a diverse situazioni e ad altrettanto diverse linee di condotta. Qualora si manifestassero nuovi scenari, il Progetto GNU e la Free Software Foundation adatteranno i propri criteri per guidare gli utenti verso la libertà, sia in linea di principio che in pratica. E' possibile aiutare il movimento del software libero (ce n'è molto bisogno!) raccomandando solo applicazioni, distribuzioni e prodotti hardware che rispettino la libertà.