La GNU General Public License (comunemente indicata con l'acronimo GNU GPL o semplicemente GPL) è una licenza fortemente copyleft per software libero, originariamente stesa nel 1989 da Richard Stallman per patrocinare i programmi creati per il sistema operativo GNU. Infatti, a differenza di altre licenze libere non-copyleft, un'opera protetta da GNU GPL deve rimanere libera, ovvero col susseguirsi delle modifiche deve continuare a garantire ai suoi utenti le cosiddette quattro libertà.
La Free Software Foundation può pubblicare nuove revisioni o versioni, l'ultima delle quali fu pubblicata il 29 giugno del 2007 sotto il nome di GNU GPL v3. Il nome della licenza (General Public) è dovuto al fatto che l'autore di un qualsiasi software può applicare la licenza così com'è. L'editor di testo Emacs e il kernel Linux sono esempi di software molto diffusi che per primi adottarono tale licenza.
Storia
La questione GNU Emacs Nei primi anni del Progetto GNU, i singoli software venivano pubblicati ciascuno con una licenza specifica, valevole unicamente per quel programma. Chi avesse voluto riutilizzare una licenza, avrebbe dovuto ricopiare il testo cambiando i parametri specifici (ad esempio il nome del software, l'autore, ecc.).
Nel 1984, a Richard Stallman viene intimato da UniPress di cessare la distribuzione dell'editor testuale GNU Emacs, che riutilizzava del codice di Gosling Emacs. In realtà Gosling aveva inizialmente distribuito il software senza restrizioni, vendendolo solo successivamente ad Unipress. Stallman è costretto a sostituire le parti sotto copyright con nuovo codice. Tuttavia l'esperienza negativa lo avvicina per la prima volta all'idea di una licenza che impedisca una simile appropriazione di software libero.RMS lecture at KTH (Sweden), 30 October 1986 (Conferenza di Richard Stallman al Royal Institute of Technology (Svezia), 30 ottobre 1986), URL visitato il 22 aprile 2012
La versione 1
Nel 1989 Stallman, riprendendo i contenuti delle licenze dei software GNU (in particolare GNU Emacs), insieme a Eben Moglen, realizza la prima versione della GNU General Public License (GNU GPLv1), applicabile senza modifiche a chiunque lo dichiari nel programma stesso. Questa prima versione viene pubblicata precisamente il 25 febbraio dello stesso anno ed impedisce ai distributori di software di limitare le libertà che definiscono il software libero. Infatti i distributori potevano pubblicare solo i file binari, eseguibili ma non leggibili o modificabili dagli esseri umani. Per evitare questo, la GPLv1 sancisce che qualsiasi fornitore, al momento di distribuire file binari, deve anche rendere il codice sorgente leggibile e disponibile sotto gli stessi termini di licenza (punti 3a e 3b della licenza).
Il secondo problema consisteva nel fatto che i distributori potevano aggiungere ulteriori restrizioni, sia aggiungendo restrizioni della licenza, sia combinando il software con altri software che avevano altre restrizioni sulla sua distribuzione. In questo caso, poi l'unione delle due serie di restrizioni si applicavano al lavoro combinato, con la possibilità che venissero aggiunte delle restrizioni dunque inaccettabili. Per evitare questo, la GPLv1 sancisce che le versioni modificate, nel loro insieme, dovevano essere distribuite sotto i termini della GPLv1 (Sezioni 2b e 4 del titolo). Pertanto, il software distribuito sotto i termini della GPLv1 poteva essere combinato con software a condizioni più permissive, in quanto questo non avrebbe cambiato le condizioni alle quali l'intero pacchetto poteva essere distribuito. Al contrario, il software distribuito sotto GPLv1 non poteva essere combinato con software distribuito sotto una licenza più restrittiva, in quanto ciò sarebbe stato in contrasto con il requisito che l'intero oggetto fosse distribuibile ai sensi del GPLv1.
La versione 2 Nel 1991 viene pubblicata la GNU GPLv2. Secondo Richard Stallman, la modifica più importante di questa versione è la clausola da lui denominata "Libertà o morte". Tale clausola impone che, qualora ci siano restrizioni di qualsiasi tipo sulla libera distribuzione del software nei termini indicati nella licenza, il software non può essere distribuito affatto. Ad esempio se una legge impedisce di distribuire il codice sorgente, l'intero software protetto da GNU GPLv2 non può essere distribuito. La speranza è quella di rendere meno allettante per le imprese il ricorso alle minacce di brevetto, ovvero esigere un corrispettivo da parte degli sviluppatori di software libero.
Dal 1990 è diventato evidente che l'utilizzo di una licenza meno restrittiva sarebbe stata strategicamente più utile per le librerie C e per quelle librerie software che ormai, in pratica, lavoravano come se fossero di tipo proprietarioPer maggiori approfondimenti, vedere il Progetto GNU ; quando, nel giugno 1991, è stata rilasciata la versione 2 della GPL (GPLv2) e quindi è stata introdotta una seconda licenza – la "Library General Public License" – che, considerata la complementarità, ha mantenuto lo stesso nome con la sola aggiunta della lettera "L" (LGPLv2).
La numerazione delle versioni si differenziò a partire dal 1999 quando è stata pubblicata la versione 2.1 della LGPL, che è stata rinominata in GNU Lesser General Public License per mantenere la sua filosofia originale.
La diffusione
La GNU GPLv2 riscosse un discreto successo nel mondo del software libero.
Nel 1997 appare fra le licenze conformi alle Debian Free Software Guidelines (DFSG), ovvero le linee guida del progetto Debian. Nel 1998, alla nascita della Open Source Initiative, appare nel primo elenco di licenze open source.
La versione 3
Alla fine del 2005, la Free Software Foundation (FSF) annuncia di essere al lavoro sulla versione 3 della GPL (GPLv3). Il 16 gennaio 2006 viene pubblicata la prima "bozza di discussione" della GPLv3, a cui seguì poi la consultazione pubblica che inizialmente era prevista per nove o quindici mesi, ma che poi si estese a diciotto mesi con quattro progetti in corso di pubblicazione.
Il processo di consultazione pubblica è stato coordinato dalla Free Software Foundation con l'assistenza del Software Freedom Law Center, del Free Software Foundation Europe, e di altri gruppi di software libero. I commenti sono stati raccolti dal pubblico tramite il portale web gplv3.fsf.org. Tale portale eseguiva software appositamente scritto chiamato stet.
Durante il processo di consultazione pubblica, 962 osservazioni sono state presentate per la prima bozza. Alla fine, erano stati presentati un totale di 2636 commenti.
Il terzo progetto è stato pubblicato il 28 marzo 2007. Questo progetto limita le clausole anti-tivoization ad una definizione giuridica di "utente" o "prodotto di consumo ". Ha inoltre esplicitamente rimosso la sezione "Limiti geografici", la cui rimozione probabile era stata annunciata in occasione dell'inizio della consultazione pubblica.
La quarta e ultima bozza di discussione, è stata pubblicata il 31 maggio 2007. Ha introdotto la compatibilità Apache License, chiarito il ruolo di appaltatori esterni, e fatto un'eccezione per evitare i problemi percepiti in un accordo come quello Microsoft - Novell, affermando infatti nella sezione 11, paragrafo 6, che non è possibile distribuire un programma coperto se si è parte di un accordo con una terza parte che è nel business della distribuzione del software […]. Questo mirava a rendere in futuro tali offerte inefficaci.
Alcuni sviluppatori di alto profilo del kernel Linux, commentarono pubblicamente circa le proprie obiezioni alle parti di bozze di discussione 1 e 2.
Il 29 giugno 2007 la Free Software Foundation pubblica finalmente la versione 3 della licenza (GNU GPLv3), che introduce misure contro la tivoization, contro alcuni effetti del Digital rights management, oltre ad una protezione maggiore dai brevetti software e la definizione di “codice sorgente”. Altri cambiamenti riguardano l'internazionalizzazione, come vengono gestite le violazioni di licenza, e come autorizzazioni aggiuntive possano essere concesse dal detentore del copyright.
La versione Affero
Durante la gestazione della GPLv3 era stata discussa l'introduzione dell'obbligo di distribuire il codice per i programmi che girano su un computer remoto (come ad esempio un sito web). La decisione finale fu di non includere l'obbligo nella GPLv3, ma di creare una nuova licenza che lo prevedesse, la GNU Affero General Public License (GNU AGPL), compatibile con questa versione.
Tale scelta lasciò aperto il cosiddetto ("scappatoia ASP"): un problema che si verifica quando un'azienda utilizza software libero licenziato sotto GNU GPL per creare applicazioni web che non vengono eseguite direttamente dall'utente finale, il quale si limita a fruirne i servizi tramite una web application remota. In questo scenario, l'azienda può usare e modificare il codice sorgente senza l'obbligo di distribuire le modifiche effettuate, poiché tale distribuzione avviene solo quando il software viene ceduto ad un'altra entità giuridica e non quando viene semplicemente eseguito su un server per erogare un servizio. Ciò aggira di fatto lo scopo di diffusione della conoscenza proprio del software libero. È proprio per colmare questa lacuna che è stata creata la GNU AGPL, la quale impone l'obbligo di mettere a disposizione il codice sorgente anche agli utenti che interagiscono con il programma unicamente attraverso una rete.
Caratteristiche La Free Software Foundation (FSF) detiene i diritti di copyright sul testo della GNU GPL, ma non detiene alcun diritto sul software da essa coperto. La GNU GPL non è liberamente modificabile: solo la copia e la distribuzione sono permesse. La FSF permette di creare nuove licenze basate sulla GNU GPL, a patto che tali licenze non usino lo stesso preambolo senza permesso. Dato che, solitamente, la nuova licenza non è compatibile con la GNU GPL, la FSF sconsiglia di creare versioni modificate.
Essa garantisce agli utenti finali come organizzazioni, imprese o semplici individui, di utilizzare, condividere e persino modificare il software (quest'ultima operazione non era invece garantita dalle licenze per software proprietario).
Il GPL è una licenza copyleft, il che significa che le opere derivate possono essere distribuite solo sotto gli stessi termini di licenza. GPL è stata la prima licenza copyleft per uso generale. Per rendere un programma libero, GPL invita i programmatori a dichiararlo di dominio pubblico, quindi privo di copyright.
La GNU GPL è progettata per essere applicata facilmente ai programmi se si è titolari dei relativi diritti. Per far questo, non bisogna modificarla ma solamente aggiungere nel programma una nota che vi faccia riferimento.
Per mantenere il titolo fino ad oggi la licenza GPL include una clausola facoltativa "ogni versione successiva", che consente agli utenti di scegliere fra i termini originali o le condizioni nelle nuove versioni come aggiornato dalla FSF.
Nel progetto GNU, le specifiche condizioni di distribuzione che si utilizzano sono contenute nella GNU General Public License, la GNU Lesser General Public License e la GNU Free Documentation License.
Contenuto Come ogni licenza software, la GPL è un documento legale associato al programma pubblicato sotto tale licenza. Come ogni licenza di software libero, essa concede ai licenziatari il permesso di modificare il programma, di copiarlo e di ridistribuirlo con o senza modifiche, gratuitamente o a pagamento. Quest'ultimo punto distingue il GPL dalle licenze di software che vietano la distribuzione commerciale. La FSF sostiene che il software libero non deve porre restrizioni sull'uso commerciale, mentre la GPL afferma esplicitamente che le opere GPL possono essere vendute a qualsiasi prezzo.