Cos'è il Software Libero?
Questa definizione ha lo scopo di chiarire quali sono i requisiti che un certo programma deve soddisfare perché lo si possa considerare “software libero”. La definizione viene occasionalmente sottoposta a revisioni per chiarificarla. Per analizzare le modifiche effettuate basta leggere la sezione Storia nel seguito.
Il “Software libero” è una questione di libertà, non di prezzo. Per capire il concetto, bisognerebbe pensare alla “libertà di parola” e non alla “birra gratis” [NdT: il termine free in inglese significa sia gratuito che libero, in italiano il problema non esiste].
L'espressione “software libero” si riferisce alla libertà dell'utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software. Più precisamente, significa che gli utenti del software godono delle quattro libertà fondamentali:
* Libertà di eseguire il programma, per qualsiasi scopo (libertà 0).
* Libertà di studiare come funziona il programma e di modificarlo in modo da adattarlo alle proprie necessità (libertà 1). L'accesso al codice sorgente ne è un prerequisito.
* Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2).
* Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti da voi apportati (e le vostre versioni modificate in genere), in modo tale che tutta la comunità ne tragga beneficio (libertà 3). L'accesso al codice sorgente ne è un prerequisito.
Un programma è software libero se l'utente ha tutte queste libertà. In particolare, se è libero di ridistribuire copie, con o senza modifiche, gratis o addebitando delle spese di distribuzione a chiunque ed ovunque. Essere liberi di fare queste cose significa (tra l'altro) che non bisogna chiedere o pagare nessun permesso.
Bisogna anche avere la libertà di fare modifiche e usarle privatamente nel proprio lavoro o divertimento senza doverlo dire a nessuno. Se si pubblicano le proprie modifiche, non si deve essere tenuti a comunicarlo a qualcuno in particolare o in qualche modo particolare.
La libertà di usare un programma significa libertà per qualsiasi tipo di persona od organizzazione di utilizzarlo su qualsiasi tipo di sistema informatico, per qualsiasi tipo di attività e senza dover successivamente comunicare con lo sviluppatore o con qualche altra entità specifica. Quello che conta per questa libertà è lo scopo dell'utente, non dello sviluppatore; come utenti potete eseguire il programma per i vostri scopi; se lo ridistribuite a qualcun altro, egli è libero di eseguirlo per i propri scopi, ma non potete imporgli i vostri scopi.
La libertà di ridistribuire copie deve includere le forme binarie o eseguibili del programma e anche il codice sorgente, sia per le versioni modificate che non modificate (distribuire programmi in formato eseguibile è comodo per avere sistemi operativi liberi facili da installare). È legittimo anche se non c'è alcun modo di produrre una forma binaria o eseguibile (dal momento che alcuni linguaggi non supportano questa caratteristica), ma si deve avere la libertà di ridistribuire tali forme nel caso si trovi o si sviluppi un modo per farlo.
Affinché le libertà 1 e 3 (libertà di fare modifiche e di pubblicare versioni migliorate) abbiano senso, si deve avere accesso al codice sorgente del programma. Perciò, l'accessibilità al codice sorgente è una condizione necessaria per il software libero. Il “codice sorgente” deliberatamente offuscato non è vero codice sorgente e non può essere considerato tale.
La libertà 1 comprende la libertà di utilizzare una versione da voi modificata anziché l'originale. Se il programma è distribuito in un prodotto che, per scelta progettuale, esegue le versioni modificate da una specifica persona o azienda ma si rifiuta di eseguire quelle modificate da voi (tecnica nota come “tivoization” o come “lockdown” o come “secure boot” secondo la discutibile definizione che ne danno i suoi sostenitori), allora la libertà 1 diventa solo teorica. Ciò non è sufficiente. In altre parole, la versione eseguibile di questi programmi non è software libero anche se il codice sorgente da cui sono stati ottenuti è libero.
Un importante modo di modificare un programma è quello di includervi funzioni e moduli liberi già esistenti. Se la licenza del programma prevede che non si possano includere moduli già esistenti (nonostante abbiano una licenza appropriata), ad esempio se richiede che voi possiate aggiungere solo codice di cui detenete il copyright, allora la licenza è troppo restrittiva per essere considerata libera.
La libertà 3 comprende la libertà di usare e rilasciare le versioni modificate come software libero. Una licenza libera può anche permettere altri modi di distribuzione; insomma, non c'è l'obbligo che si tratti di una licenza con copyleft. Tuttavia, una licenza che imponesse che le versioni modificate non siano libere non si può categorizzare come licenza libera.
Queste libertà per essere reali devono essere permanenti e irrevocabili fin tanto che non si fa qualcosa di sbagliato: se lo sviluppatore del software ha il potere di revocare la licenza o di sostituirla retroattivamente con una diversa anche senza che l'utente sia causa di tale revoca, il software non è libero.
Tuttavia, certi tipi di regole sul come distribuire il software libero sono accettabili quando non entrano in conflitto con le libertà principali. Per esempio, il copyleft, noto anche impropriamente come "permesso d'autore", è (detto in poche parole) la regola per cui, quando il programma è ridistribuito, non è possibile aggiungere restrizioni per negare ad altre persone le libertà principali. Questa regola non entra in conflitto con le libertà principali, anzi le protegge.
“Software libero” non vuol dire “non-commerciale”. Un programma libero deve essere disponibile per uso commerciale, sviluppo commerciale e distribuzione commerciale. Lo sviluppo commerciale di software libero non è più inusuale: questo software commerciale libero è molto importante. Si può ottenere software libero pagandolo o non pagandolo, ma, a prescindere da come lo si è ottenuto, rimane sempre la libertà di copiare e modificare il software, persino di venderne copie.