Cos'è il software libero?
Il “software libero” è software che rispetta la libertà degli utenti e la comunità. In breve, significa che gli utenti hanno la libertà di eseguire, copiare, distribuire, studiare, modificare e migliorare il software. Quindi è una questione di libertà, non di prezzo. Per capire il concetto, bisognerebbe pensare alla “libertà di parola” e non alla “birra gratis”; in inglese a volte usiamo libre, riciclando la parola che significa “libero” in francese e spagnolo, per disambiguare [NdT: il termine free in inglese significa sia gratuito che libero, in italiano il problema non esiste].
Potreste aver pagato per una copia di un programma libero, o potreste averne ottenuto copie gratuitamente. Ma a prescindere da come lo si è ottenuto, rimane sempre la libertà di copiare e modificare il software, o anche di venderne copie.
Noi difendiamo attivamente queste libertà, perché tutti hanno diritto ad averle. Tramite queste libertà gli utenti (individualmente o nel loro complesso) controllano il programma e le sue funzioni. Quando non sono gli utenti a controllare il programma, allora il programma (che in quel caso chiamiamo “non libero” o “proprietario”) controlla gli utenti; e gli sviluppatori controllano il programma, che quindi diventa uno strumento di abuso.
Il cosiddetto “open source” è diverso: ha una filosofia diversa basata su valori diversi; benché la definizione pratica sia diversa, in realtà quasi tutti i programmi “open source” sono liberi. Spieghiamo la differenza in un articolo dedicato.
Indice
- Definizione di software libero
- Chiariamento del confine tra software libero e non
libero
- Libertà di eseguire il programma come si desidera
- Libertà di studiare il codice sorgente ed apportare modifiche
- Libertà di ridistribuire copie se si desidera: requisiti di base
- Il copyleft
- Regole sulla produzione di pacchetti e sulla distribuzione
- Regole sull'esportazione
- Considerazioni legali
- Licenze basate su contratti
- La definizione di software libero in pratica
- Al di là del software
- Storia
Avete una domanda sulle licenze libere e non trovate la risposta in questa pagina? Provate con le nostre altre pagine sulle licenze oppure se necessario contattate (in inglese) FSF Compliance Lab all'indirizzo [email protected].
Definizione di software libero
La definizione di software libero chiarisce 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 o spiegare come interpretare alcune sfumature. Per analizzare le modifiche effettuate basta leggere la sezione Storia nel seguito.
Le quattro libertà essenziali
Un programma è software libero se gli utenti del programma godono delle quattro libertà fondamentali: [1]
- Libertà di eseguire il programma come si desidera, 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 gli altri (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 modo adeguato. Altrimenti diciamo che è non libero. I modelli di distribuzione non liberi si possono differenziare a seconda di quanto si distanziano dall'essere liberi, ma per noi sono tutti non etici allo stesso modo.
In qualsiasi scenario specifico, queste libertà devono applicarsi a qualsiasi codice noi vogliamo usare o fare usare agli altri. Ad esempio, consideriamo un programma A che automaticamente lancia un programma B per svolgere determinati compiti. Se vogliamo distribuire A così com'è, allora gli utenti avranno bisogno anche di B e dovremo giudicare se la coppia di programmi A e B è libera. Altrimenti, se vogliamo modificare A in modo che non usi B, dovrà essere libero solo A e non ci importa di B.
Il software libero può essere anche commerciale
“Software libero” non vuol dire non commerciale. Al contrario, con un programma libero deve essere possibile anche l'uso commerciale, lo sviluppo commerciale, e la distribuzione commerciale. Questa politica è di importanza fondamentale – senza questa il software libero non potrebbe raggiungere i suoi obiettivi.
Vogliamo invitare tutti ad usare il sistema GNU, incluse le aziende e i loro dipendenti. E per questo è necessario permettere l'uso commerciale. Speriamo che i programmi sostitutivi liberi soppiantino i programmi proprietari equiparabili, ma non possono farlo se alle attività commerciali è proibito usarli. Vogliamo che i prodotti commerciali che contengono software includano il sistema GNU, e questo costituirebbe una distribuzione commerciale a pagamento. Lo sviluppo di software libero commerciale non è più un attività di nicchia; il software libero commerciale è molto importante. Il supporto professionale a pagamento per il software libero soddisfa un'esigenza importante.
Quindi, escludere l'utilizzo commerciale, lo sviluppo commerciale o la distribuzione commerciale ostacolerebbe la comunità del software libero e ostacolerebbe il suo cammino verso il successo. Dobbiamo concludere che un programma la cui licenza prevede queste restrizioni non può essere considerato software libero.
Un programma libero deve offrire le quattro libertà a qualunque potenziale utente che ne ottenga una copia, purché questi abbia rispettato fino a quel momento le condizioni della licenza libera applicata al programma in una qualunque precedente distribuzione. Escludere alcune delle libertà per quanto riguarda certi utenti, o esigere che gli utenti paghino, in qualsiasi forma, per poterle esercitare, equivale a non garantire le libertà in questione, e quindi rende il programma non libero.
Chiariamento del confine tra software libero e non libero
Nel resto di questo articolo spieghiamo più precisamente fino a che punto devono estendersi le varie libertà, su varie questioni, affinché un programma sia libero.
Libertà di eseguire il programma come si desidera
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 eseguire il programma come si desidera significa semplicemente che non ci sono divieti a farlo, e non ha nulla a che fare con quali funzioni ha il programma, con il fatto che possa o non possa tecnicamente funzionare in un determinato ambiente, o se è utile per una specifica attività.
Ad esempio, se il codice rifiuta arbitrariamente determinati input significativi – o addirittura fallisce incondizionatamente – ciò potrebbe rendere il programma meno utile, forse anche totalmente inutile, ma non nega agli utenti la libertà di eseguire il programma, quindi non è in conflitto con la libertà 0. Se il programma è software libero, gli utenti possono superare la perdita di utilità, perché le libertà 1 e 3 consentono agli utenti e alle comunità di creare e distribuire versioni modificate senza il codice di disturbo arbitrario.
“Come si desidera” include, opzionalmente, “per niente”, se questo è quello che si desidera. Quindi non c'è la necessità di una libertà aggiuntiva “di non eseguire un programma”.
Libertà di studiare il codice sorgente ed apportare modifiche
Affinché le libertà 1 e 3 (libertà di fare modifiche e di pubblicare versioni modificate) abbiano senso, è necessario 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 una richiesta vuota senza alcun valore concreto. 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.
Se una modifica costituisca o meno un miglioramento è una questione soggettiva. Se i vostri diritti di modificare un programma sono, nella pratica, limitati a variazioni che qualcun altro considera miglioramenti, quel programma non è libero.
Un caso particolare della libertà 1 consiste nel cancellare il codice del programma in modo che ritorni senza aver fatto nulla, o fargli chiamare un altro programma. Quindi la libertà 1 comprende la “libertà di cancellare il programma”.
Libertà di ridistribuire copie se si desidera: requisiti di base
La libertà di distribuire (libertà 2 e 3) significa che si è liberi 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 alcun permesso.
Bisogna anche avere la libertà di fare modifiche e usarle privatamente nel proprio lavoro o per svago 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à 3 comprende la libertà di 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.
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.
Il copyleft
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 è (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.
Nel progetto GNU, usiamo il copyleft per proteggere le quattro libertà legalmente per tutti. Per noi è meglio usare il copyleft, ma va bene anche il software libero senza copyleft. Si veda Categorie di software libero per una discussione più ampia delle relazioni tra “software libero”, “software con copyleft” e altre categorie.
Regole sulla produzione di pacchetti e sulla distribuzione
Sono anche accettabili regole su come pacchettizzare una versione modificata, purché non limitino in modo significativo la vostra libertà di distribuire versioni modificate, o di produrre versioni modificate per uso interno. Quindi è accettabile, ad esempio, che la licenza vi obblighi a cambiare il nome della versione modificata, togliere un logo, o chiarire che la versione modificata è opera vostra. Purché queste richieste non siano talmente pesanti da rendere molto complesso rilasciare le modifiche, sono accettabili; dato che state già apportando modifiche al programma, non faticherete troppo ad apportarne qualcuna in più.
Regole del tipo “se rendete disponibile la vostra versione in questo modo, allora dovete renderla disponibile anche in quell'altro modo” possono essere accettabili, alla medesima condizione. Un esempio di regola accettabile di questo tipo è la richiesta che se avete distribuito una versione modificata e un precedente sviluppatore ne chiede una copia, dovete inviargliela. (Notate che una regola di questo tipo vi lascia sempre liberi di scegliere se distribuire o no la vostra versione). Anche regole che richiedano di distribuire il codice sorgente agli utenti delle versioni che avete pubblicamente distribuito sono accettabili.
Una questione particolare è quando una licenza richiede di cambiare il nome con cui il programma sarà chiamato da altri programmi. Questo impedisce di rilasciare la versione modificata in modo che possa sostituire l'originale quando chiamata dagli altri programmi. Questo tipo di richiesta è accettabile solo se c'è una funzionalità di aliasing, cioè una funzionalità che permetta di specificare il nome originario del programma come alias della versione modificata.
Regole sull'esportazione
Qualche volta le leggi sul controllo delle esportazioni e le sanzioni sul commercio possono limitare la libertà di distribuire copie di programmi verso paesi esteri. I programmatori non hanno il potere di eliminare o di aggirare queste restrizioni, ma quello che possono e devono fare è rifiutare di imporle come condizioni d'uso del programma. In tal modo, le restrizioni non influiranno sulle attività e sulle persone al di fuori della giurisdizione degli stati che applicano tali restrizioni. Insomma, le licenze di software libero non possono richiedere il rispetto di un controllo (non banale) sulle esportazioni come condizione sull'esercizio di una qualsiasi delle libertà essenziali.
Il semplice atto di citare l'esistenza di regole sull'esportazione, senza che diventino condizioni della licenza, è accettabile poiché non pone restrizioni. Se una regola sull'esportazione diventa banale nel caso del software libero, allora porla come condizione non è un problema effettivo, ma rimane un problema potenziale, perché modifiche successive nelle leggi sull'esportazione potrebbero rendere non banale quel requisito e quindi fare diventare non libero il software.
Considerazioni legali
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 più restrittiva, anche senza che l'utente sia causa di tale revoca, il software non è libero.
Una licenza libera non può chiedere il rispetto dei termini di una licenza di un programma non libero. Quindi, ad esempio, se una licenza obbliga l'utente a rispettare le licenze di “tutti i programmi che usa”, nel caso di un utente che usa anche programmi non liberi questo richiederebbe che l'utente rispetti la licenza di tali programmi non liberi, e renderebbe non libera la licenza in questione.
È accettabile che una licenza specifichi quale giurisdizione si applica, o quale sede è designata per dirimere le controversie, o entrambe le cose.
Licenze basate su contratti
La maggior parte delle licenze di software libero sono basate sul copyright, e ci sono limiti a quello che si può imporre con il copyright. Se una licenza basata sul copyright rispetta la libertà nei modi descritti sopra, è improbabile, anche se non impossibile, che abbia qualche tipo di problema che non abbiamo previsto. Tuttavia alcune licenze di software libero sono basate su contratti, e i contratti possono imporre una gamma molto più vasta di restrizioni. Questo significa che ci sono molti modi possibili di rendere inaccettabilmente restrittiva e non libera una licenza di questo tipo.
Non possiamo elencare tutti i modi in cui questo potrebbe accadere. Se una licenza basata su contratto restringe i diritti dell'utente in una maniera inusuale, fuori da quello che le licenze basate sul copyright potrebbero fare, e non citata qui come legittima, dovremmo esaminare il caso, ma probabilmente concluderemmo che la licenza non è libera.
La definizione di software libero in pratica
Come interpretiamo questi criteri
Si noti che criteri come quelli indicati in questa definizione di software libero richiedono un'attenta interpretazione. Per decidere se una determinata licenza software si qualifica come licenza per il software libero, noi la consideriamo sulla base di questi criteri al fine di determinare se corrisponde al loro spirito così come alle precise parole. Se una licenza include restrizioni irragionevoli, la rifiutiamo, anche se in questi criteri non abbiamo previsto il problema. Qualche volta i requisiti di una licenza sollevano un problema che richiede un'analisi dettagliata, oltre a discussioni con un avvocato prima di poter decidere se il requisito sia accettabile. Quando raggiungiamo una conclusione riguardo ad un nuovo problema, spesso aggiorniamo questi criteri per fare in modo che sia più facile capire perché determinate licenze siano adeguate o meno.
Ottenere assistenza sulle licenze libere
Se siete interessati a sapere se una determinata licenza abbia le caratteristiche per essere una licenza di software libero, consultate il nostro elenco delle licenze. Se la licenza che vi interessa non vi è elencata, potete interpellarci inviandoci un'e-mail a <[email protected]>.
Se pensate di scrivere una nuova licenza, vi preghiamo di contattare la FSF scrivendo all'indirizzo sopra indicato. La proliferazione di licenze di software libero comporta un maggiore sforzo di comprensione per gli utenti; potremmo aiutarvi a trovare una licenza di software libero già esistente che soddisfi le vostre necessità.
Se questo non fosse possibile e avete proprio bisogno di una nuova licenza, col nostro aiuto potrete essere sicuri che la licenza sia davvero una licenza di software libero ed evitare vari problemi pratici.
Usare le parole giuste quando si parla di software libero
Quando si parla di software libero, è meglio evitare di usare espressioni come “regalato” o “gratuito”, perché esse pongono l'attenzione sul prezzo, e non sulla libertà. Parole comuni quali “pirateria” implicano opinioni che speriamo non vogliate sostenere. Si veda Termini da evitare per una discussione su queste parole. Abbiamo anche una lista di traduzioni in varie lingue dell'espressione “software libero”.
Un altro gruppo usa il termine “open source” per indicare qualcosa di simile (ma non identico) al “software libero” (o “free software”). Preferiamo il termine “software libero” perché, una volta chiarita (nella dizione inglese) la precisazione sul fatto che si parla di libertà e non di prezzo, fa subito pensare alla libertà, la parola “open” (o “aperto”) no.
Al di là del software
I manuali del software devono essere liberi, per le medesime ragioni per cui il software deve essere libero, e poiché i manuali sono parte del software.
Lo stesso ragionamento si applica ad altri tipi di lavori di utilizzo pratico – lavori che raccolgono conoscenze utili, come opere didattiche e di riferimento. Wikipedia è l'esempio più noto.
Ogni tipo di lavoro può essere libero, e la definizione di software libero è stata estesa per diventare una definizione di opera culturale libera che si può applicare ad ogni tipo di lavoro.
Cronologia
La definizione di software libero viene occasionalmente sottoposta a revisione per chiarificarla. Qui elenchiamo le modifiche significative effettuate, con collegamenti che illustrano esattamente cosa è cambiato.
- Versione 1.169: Spiegazione più chiara di perché le quattro libertà vadano applicate alle attività commerciali. Spiegazione di perché le quattro libertà implicano la libertà di non eseguire il programma e la libertà di cancellarlo, per cui non è necessario indicarle come requisiti separati.
- Versione 1.165: Chiarito che le seccature arbitrarie nel codice non negano la libertà 0 e che le libertà 1 e 3 consentono agli utenti di rimuoverle.
- Versione 1.153: Chiarito che la libertà di eseguire il programma significa che nulla lo ostacola.
- Versione 1.141: Chiarimenti su quale codice deve essere libero.
- Versione 1.135: Specificato in ogni occasione che la libertà 0 è la libertà di eseguire il programma come si desidera.
- Versione 1.134: La libertà 0 non dipende dalle funzionalità del programma.
- Versione 1.131: Una licenza libera non può richiedere di rispettare i termini di licenza di un altro programma non libero.
- Version 1.129: Chiarito che è possibile scegliere giurisdizione e sede per le controversie, secondo quanto già in essere.
- Versione 1.122: Un requisito sul controllo delle esportazioni è un problema vero se il requisito è non banale, altrimenti è solo un problema potenziale.
- Versione 1.118: Chiarimento: il problema sta nel limitare il diritto di modificare, non quali modifiche si possono fare. E le modifiche non devono necessariamente essere “miglioramenti”.
- Versione 1.111: Chiarimento di 1.77 per notare che sono inaccettabili solo le restrizioni retroattive. I detentori del copyright possono sempre dare permessi aggiuntivi sull'uso dell'opera, rilasciando l'opera in parallelo in altro modo.
- Versione 1.105: Specificato, nella presentazione della Libertà 1, il punto (già chiarito nella versione 1.80) che questo include che la versione modificata sia davvero utilizzabile.
- Versione 1.92: Chiarimento: il codice offuscato non conta come codice sorgente.
- Versione 1.90: Chiarito che la libertà 3 significa che si ha il diritto di distribuire copie delle proprie versioni modificate o migliorate, non il diritto di partecipare a progetti di sviluppo gestiti da altri.
- Versione 1.89: La libertà 3 comprende il diritto di rilasciare versioni modificate come software libero.
- Versione 1.80: La libertà 1 deve essere pratica, non teorica; la “tivoization” non vale.
- Versione 1.77: Chiarito che tutte le modifiche retroattive alla licenza sono inaccettabili, non solo la completa sostituzione.
- Versione
1.74: Quattro chiarimenti su punti non abbastanza espliciti, o citati in
alcune parti ma non in altre:
- “Miglioramenti” non significa che la licenza può limitare quali tipi di versioni modificate si possono distribuire. La Libertà 3 parla della distribuzione di versioni modificate, non dei soli cambiamenti.
- Il diritto di incorporare moduli esistenti si riferisce a moduli che hanno una licenza opportuna.
- Esplicitare la conclusione del punto sulla restrizione alle esportazioni.
- Imporre un cambio di licenza comporta la revoca di quella precedente.
- Versione 1.57: Aggiunta sezione “Al di là del software”.
- Versione 1.46: È stato chiarito di chi è “lo scopo” citato nella locuzione “libertà di usare il programma per ogni scopo”.
- Versione 1.41: Chiarimento sulle licenze basate su contratti.
- Versione 1.40: Spiegazioni sul fatto che una licenza libera deve permettervi di utilizzare altro software libero per creare le vostre modifiche.
- Versione 1.39: Segnalare che è accettabile che una licenza richieda di fornire il codice sorgente per le versioni del software che si mettono a disposizione del pubblico.
- Versione 1.31: Notare che è accettabile che una licenza vi richieda di identificarvi in quanto autori di modifiche. Altre piccole correzioni nel testo.
- Versione 1.23: Considerati potenziali problemi legati alle licenze basate su contratti.
- Versione 1.16: Spiegazione di perché è importante la distribuzione dei file in formato binario.
- Versione 1.11: Notare che una licenza libera può imporvi di spedire ai precedenti sviluppatori, su richiesta, una copia delle versioni modificate che distribuite.
Ci sono dei salti nei numeri di versione mostrati sopra poiché alcune delle modifiche sono totalmente irrilevanti ai fini della definizione e o delle interpretazioni. Ad esempio, l'elenco non comprende modifiche ad elementi ausiliari, alla formattazione, ortografia o punteggiatura o ad altre parti della pagina. Per vedere la lista completa delle modifiche si può utilizzare la nostra interfaccia cvsweb.
Nota
- Il motivo per cui la numerazione è 0, 1, 2, 3 è storico: intorno al 1990 c'erano tre libertà numerate 1, 2, 3; poi abbiamo capito che la libertà di eseguire il programma per qualsiasi scopo doveva essere citata esplicitamente, ed essendo più fondamentale delle altre tre, le doveva precedere, da cui la numerazione “0” per evitare di cambiare il numero delle altre.