Un software libero è un software rilasciato con una licenza che permette a chiunque di utilizzarlo, studiarlo, modificarlo e redistribuirlo; per le sue caratteristiche, si contrappone al software proprietario.
Caratteristiche
La parola libero non implica la possibilità di utilizzare il software libero in maniera indiscriminata: un software libero è comunque soggetto ad una licenza d’uso, a differenza ad esempio del software di pubblico dominio.
Rispetto al software proprietario, la licenza d’uso del software libero permette di:
* accedere alla struttura interna del programma (codice sorgente), studiarla ed eventualmente modificarla;
* ridistribuirlo in un numero di copie illimitato.
La licenza d’uso pone in genere i seguenti vincoli, di cui i principali sono:
* non è possibile applicare una licenza d’uso incompatibile con la licenza originaria o che vada contro le norme della licenza stessa. Per esempio chiunque può riemettere un software rilasciato sotto LGPL usando la licenza GPL (tale operazione è anche chiamata upgrade della licenza), mentre non è possibile fare il contrario (naturalmente se non si è il detentore unico del copyright);
* normalmente, nella licenza, vi è una clausola che sancisce la non usabilità del software se non si rispetta la licenza d’uso o se una o più norme della stessa licenza non sono valide per termini di legge;
* quando si distribuisce un binario occorre o distribuire insieme anche i sorgenti o garantire per iscritto la possibilità a tutti gli utenti di venirne in possesso dietro richiesta ed al solo costo del supporto
Le “quattro libertà”
Secondo Richard Stallman e la Free Software Foundation da lui fondata, un software per poter essere definito libero deve garantire quattro “libertà fondamentali”:
* Libertà di studiare il programma e modificarlo (“libertà 1”)
* Libertà di copiare il programma in modo da aiutare il prossimo (“libertà 2”)
* Libertà di migliorare il programma e di distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio (“libertà 3”)
Licenze d’uso libere
Buona parte del software libero viene distribuito con la licenza GNU GPL (GNU General Public License), scritta da Stallman e Eben Moglen per garantire legalmente a tutti gli utenti le quattro libertà fondamentali. Dal punto di visto dello sviluppo software, la licenza GPL viene considerata una delle più restrittive, poiché impone che necessariamente ogni prodotto software derivato – ovvero, che modifica o usa codice sotto GPL – venga a sua volta distribuito con la stessa licenza.
Una licenza simile, ma meno restrittiva, è la GNU LGPL (GNU Lesser General Public License), che permette di utilizzare il codice anche in software proprietari e sotto altre licenze opensource, purché le parti coperte da LGPL – anche se modificate – vengano comunque distribuite sotto la medesima licenza. In genere è utilizzata per librerie software.
Non tutte le licenze ritenute libere sono compatibili tra di loro, cioè in alcuni casi non è possibile prendere due sorgenti con due licenze libere ed unirli per ottenere un prodotto unico. Questo avviene quando non esista e non sia possibile creare una licenza che possa soddisfare i requisiti delle licenze originali. Ad esempio la licenza BSD originale, pur essendo considerata licenza di software libero, è incompatibile con la GPL (per ulteriori dettagli vedere qui); per ovviare al problema è stato necessario creare una “licenza BSD modificata” compatibile con la GPL.
Un’altra licenza degna di nota è l’Apache License, prodotta dalla Apache Software Foundation, la cui compatibilità con la GPL è attualmente in fase di analisi. L’Apache License considera un prodotto derivato alla stregua della LGPL, ma è più liberale nella concessione delle proprietà intellettuali.
Le varie licenze libero possono contenere ulteriori limitazioni per alcune situazioni particolari; per esempio la GPL prevede che si possa esplicitamente vietare l’uso del software nelle nazioni dove tale licenza non è valida o dove dei brevetti software impediscono la distribuzione di tale software.
Le licenze d’uso non vietano in genere di vendere software libero e di solito non stabiliscono minimamente il possibile prezzo di vendita.
Differenze rispetto all’open source
Essendo uno dei requisti fondamentali la disponibilità del codice sorgente, comunemente si ritiene che il software open source sia sinonimo di software libero, ma in realtà questa affermazione non è vera, anche se i due termini sono molto vicini.
L’open source nasce dal duplice significato della parola free utilizzata in free software, che può essere intesa sia per libertà che per gratuità. Essendo il free software libero ma non necessariamente gratuito, è stato introdotto il termine open source per ovviare a questo problema. Rimangono tuttavia dei dettagli legati alla filosofia di fondo che differenziano il software libero dall’open source, che insieme vengono raccolti nell’acronimo F/OSS (free and open source software).
Il software open source è un software che rispetta alcune convenzioni di distribuzione (per esempio il codice sorgente potrebbe essere disponibile, ma potrebbe esserne vietata la redistribuzione o la modifica e quindi un software distribuito sotto tale licenza non può essere software libero) e una licenza è “ufficialmente” open source a discrezione dell’Open Source Initiative (OSI): se una licenza segue le linee guida dell’OSI, allora tale licenza può essere dichiarata licenza open source, ma le direttive potrebbero cambiare nel tempo (nessuno garantisce che questo non possa accadere) e quindi è possibile che una licenza attualmente open source non lo sia nel futuro o viceversa; recentemente l’OSI ha posto un freno al proliferare delle licenze dichiarando che cercherà di limitare il numero di licenze che nel futuro saranno ritenute licenze open source, questo potrebbe, in linea teorica, far si che una licenza ritenuta libera non venga ritenuta open source.
Una licenza invece è libera (o meglio, una versione di una licenza è libera) se e solo se rispetta le quattro libertà fondamentali. Pertanto se una versione di una licenza è libera, allora lo sarà per sempre. Naturalmente è sempre complesso, almeno per un cittadino “normale” (non esperto di leggi), stabilire se una licenza è libera o meno perché entrano in gioco i termini legali utilizzati nella stessa. Il progetto GNU si occupa tra l’altro anche di indicare se una licenza è libera o meno e se è compatibile con le licenze GNU o meno.
Inoltre il software libero non deve essere confuso con il software freeware, che è distribuibile gratuitamente ma che non è né software libero né open source, e con il software di pubblico dominio, che non è soggetto a nessuna licenza d’uso e quindi può essere riemesso da chiunque sotto qualsiasi altra licenza.
Storia
L’idea di software libero nasce agli inizi degli anni ’80, quando lo sviluppo del software cominciò a passare di mano dalle università alle aziende (software proprietario), ponendo un pesante freno alla collaborazione che caratterizzava il lavoro di gran parte dei programmatori e dei sistemisti dell’epoca, soprattutto con i patti di non divulgazione che le aziende facevano firmare ai programmatori che assumevano.
In realtà il software “proprietario” esisteva da sempre, ma i costi elevati dell’hardware facevano sì che il business delle aziende non fosse concentrato sul software, che era considerato una parte naturale del prodotto, ed i cui sorgenti erano in genere pubblici. Con il passare del tempo il software diventò sempre più complesso e difficile da realizzare e le aziende iniziarono a non distribuire i sorgenti e obbligare i propri dipendenti a non rilevare nulla per non avvantaggiare la concorrenza; inoltre con il crollo dei costi dell’hardware, lo sviluppo commerciale del software divenne un business notevole, ed il codice sorgente era divenuto un investimento prezioso che poteva da un lato far acquisire una fetta di tale mercato in rapida crescita e dall’altro legare i propri utenti al proprio software mantenendo il segreto sui metodi utilizzati per lo sviluppo di sistemi e applicazioni.
In questo modo le aziende cominciavano ad utilizzare la legge sul diritto d’autore per impedire ai concorrenti di leggere e modificare i loro prodotti, assicurandosi il controllo dei propri clienti che, senza più poter vedere e modificare il codice sorgente del software, non potevano più adattarlo alle loro esigenze ma dovevano chiedere alle aziende di farlo per loro.
Nel 1983 Stallman fondò il Progetto GNU con l’intenzione di creare un sistema operativo completamente libero. Grazie alla collaborazione di molti sviluppatori volontari, all’uso di Internet per la coordinazione del progetto e al kernel Linux di Linus Torvalds, nel 1991 nacque GNU/Linux, un clone di UNIX liberamente distribuibile e modificabile.
Aspetti filosofici e sociali
Nel software libero il significato della parola libero ha un’accezione particolare. Si è già sottolineato che la libertà del software libero non è incondizionata, perché è soggetta ai precisi vincoli della licenza d’uso, come qualsiasi altra licenza d’uso, solo che in questo caso l’autore si “espropria” di alcuni diritti per cederli agli utenti. Questi vincoli sono studiati in maniera tale da favorire il tipo di libertà cosiddetta copyleft, ovvero che ha come obiettivo la condivisione del sapere. Pertanto il software libero parte da considerazione sociali e per molti aspetti è una forma di filosofia.
Le implicazioni sociali del software libero sono notevoli. La condivisione del sapere non permette a un gruppo ristretto di persone di sfruttare la conoscenza (in questo caso tecnologica) per acquisire una posizione di potere. Inoltre, è promossa la cooperazione delle persone, che tendono naturalmente ad organizzarsi in comunità, cioè in gruppi animati da un interesse comune.
Il modello del software libero si è naturalmente esteso ad altri campi del sapere. Chi crede nel modello copyleft pensa che questo possa essere applicato ad esempio alla musica o alla divulgazione. L’esempio più riuscito di applicazione di questo modello ad un campo differente dal software è oggi Wikipedia, che promuove la condivisione del sapere e la formazione di una comunità.
Vantaggi del software libero
A prescindere dalle implicazioni sociali, il software libero presenta numerosi vantaggi rispetto al software proprietario:
* il codice sorgente è sottoposto ad una revisione da parte di moltissime persone, pertanto è più difficile che contenga bachi e malfunzionamenti. In ogni caso, è sempre possibile per chiunque tenere un indice pubblico dei problemi, in modo che gli utenti li conoscano
* se viene scoperto un baco o una falla di sicurezza, la sua correzione di solito è molto rapida
* essendo il sorgente liberamente consultabile, non è possibile inserire intenzionalmente nel software backdoor, cavalli di Troia o spyware senza che questi vengano prontamente scoperti ed eliminati, come invece è accaduto per alcuni software commerciali (ad esempio il caso del database Firebird della Borland che conteneva una backdoor scoperta quando di tale software sono stati rilasciati i sorgenti)
* non esistendo standard proprietari, le cui specifiche sono normalmente segrete, è molto più facile costruire software interoperabile
* permettere a chiunque di modificare i sorgenti garantisce che ogni nuova funzionalità o copertura di un baco possa essere proposta da chiunque e immediatamente applicata dagli sviluppatori. Questo permette di avere già a disposizione un software che rispetta le esigenze di chi ha richiesto le modifiche
* la complessità e le dimensioni di alcuni software liberi (ad esempio, dei sistemi operativi) è tale che è necessario il supporto commerciale di un’azienda; il software libero si presta a creare nuove opportunità di business nel campo della formazione e del supporto, oltre che della eventuale personalizzazione del software.
* collaborando con sviluppatori volontari e utilizzando il lavoro della comunità, anche le piccole e medie imprese sono in grado di sviluppare e vendere prodotti di alta qualità, senza dover ampliare il loro organico.
Il software libero a Forlì
Se volete approfondire la storia del software libero a Forlì potete consultare la pagina .