GNU General Public License
# GNU General Public License

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.

### 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 proprietario; 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.

## 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.

Chi distribuisce è tenuto a rendere disponibile il codice sorgente del software alle persone che ne hanno ricevuto una copia o, in alternativa, accompagnare il software con una offerta scritta di rendere disponibile il sorgente su richiesta a prezzo nominale.

La GPL afferma inoltre che un distributore non può imporre "ulteriori restrizioni ai diritti concessi dalla GPL". Questo proibisce attività quali la distribuzione del software nell'ambito di un accordo di non divulgazione o di contratto. Risulta comunque chiaro che la FSF non detiene il copyright di un'opera pubblicata sotto GPL, a meno che un autore non assegni esplicitamente i diritti d'autore alla FSF (il che accade raramente, tranne per i programmi che fanno parte del progetto GNU). Solo i singoli titolari dei diritti hanno l'autorità di citare in giudizio in caso di violazione di licenza.

La GPL impone delle condizioni a chi ridistribuisce il software. La base giuridica di questo sta nella licenza specifica: qualora l'utente non accetti le condizioni specificate, essa diventa nulla e quindi non concede alcun permesso. In particolare, essendo il software protetto dalla legge sul diritto d'autore e dalle norme internazionali sul copyright, chi ottiene il software non ha alcun diritto di modifica, copia o ridistribuzione al di fuori di quelle concesse dalla licenza.

Rispetto alle altre licenze di software libero, la GPL è classificabile come:

* "persistente" perché impone un vincolo alla redistribuzione: se l'utente distribuisce copie del software, deve farlo secondo i termini della GPL stessa. In pratica, deve distribuire il testo della GPL assieme al software e corredarlo del codice sorgente o di istruzioni per poterlo ottenere ad un costo nominale. Questa è la caratteristica principe della GPL, il concetto ideato da Richard Stallman e da lui battezzato copyleft. L'effetto che realizza è mantenere libero un programma una volta che esso è stato posto sotto GPL, anche se viene migliorato correggendolo e ampliandolo. Si noti che, escludendo la possibilità che l'output sia un lavoro derivato del programma, il copyleft si applica solo al software e non alla sua uscita, a meno che questa a sua volta contenga codice distribuito sotto GPL.
* "propagativa" perché definisce nel testo una particolare interpretazione di "codice derivato", tale che in generale l'unione di un programma coperto da GPL con un altro programma coperto da altra licenza può essere distribuita sotto GPL, o in alternativa non essere distribuita affatto. Nel primo caso si dice che l'altra licenza è "compatibile con la GPL"; nel secondo caso che non lo è. Questa caratteristica è indicata come copyleft forte nella terminologia della FSF. Il suo scopo è evitare che la persistenza venga via via indebolita apportando modifiche coperte da un'altra licenza meno libera, inficiando così lo scopo di mantenere libero il software coperto dalla GPL.

Come per le altre licenze libere normalmente in uso, le versioni modificate di un programma sotto GNU GPL sono soggette al vincolo di copyleft solo in caso di distribuzione, cioè quando il software viene ceduto da un'entità giuridica ad un'altra. In nessun caso esiste alcun obbligo di distribuzione.

La GPL è incompatibile con i brevetti software, perché esplicitamente vieta qualunque restrizione alla distribuzione in aggiunta a quelle definite nella licenza stessa. A rigore, quindi, software GPL coperto da brevetti non può essere distribuito dove quei brevetti siano in vigore, a meno che i titolari di tali brevetti non ne consentano l'uso senza condizioni allo scopo di far girare quel software.

### Garanzia

Come per le altre licenze libere, e in generale come le altre licenze software, il fornitore del software non fornisce alcun tipo di garanzia per il programma. Nel caso di malfunzionamenti o qualunque altro difetto, sarà lo stesso acquirente che dovrà provvedere a sue spese ad una eventuale riparazione.

Il fornitore infatti afferma esplicitamente nella licenza di non essere responsabile di mancanze, malfunzionamenti o danni subiti dall'acquirente (dalla corruzione e perdita dei dati, all'impossibilità di utilizzare propriamente il programma), a meno che non sia richiesto dalle leggi locali o altro accordo separato preveda diversamente.

### Caratteristiche introdotte con la GPLv3

La GPL versione 3 chiarisce alcuni concetti utilizzati nel testo della licenza in modo da renderla più facilmente applicabile a legislazioni diverse da quella americana.

Le innovazioni più significative della GPLv3 sono:

* la difesa contro un aggiramento della GPLv2 noto come tivoization. Esso consiste nel distribuire il codice sorgente assieme a un programma che gira su una piattaforma proprietaria e che impedisce via hardware di eseguire versioni modificate di un dato programma, rendendo di fatto nulla la libertà di modifica.
* la neutralizzazione di alcuni effetti negativi sulla libertà del software da parte di leggi sul Digital rights management (DRM), come il Digital Millennium Copyright Act e la Direttiva Europea sul Copyright. La GPLv3 non impedisce l'uso di tecnologie DRM da parte degli autori di software libero, ma impedisce che le eventuali restrizioni introdotte siano automaticamente imposte a tutti gli utenti, anche di versioni modificate, del software. In altre parole, il software sotto GPLv3 consente a qualsiasi sviluppatore successivo di inserire o eliminare le tecnologie DRM, rispettando la sua libertà.
* una protezione legale più forte per gli autori e gli utilizzatori di software libero coperto dalla nuova licenza, da possibili aggressioni di chi intentasse cause per pretese violazioni di brevetti software. In particolare, gli sviluppatori di software coperto da GPLv3 devono distribuire insieme al software anche eventuali licenze di brevetto necessarie ad esercitare i diritti previsti dalla licenza. Questo eviterà che uno degli sviluppatori denunci utenti o sviluppatori successivi per aver infranto un diritto di brevetto.
* l'esplicitazione di una compatibilità de facto, ossia risultano compatibili tutte quelle licenze che aggiungono restrizioni "facili da rispettare" (come il non utilizzo di un certo marchio registrato, non utilizzabile in ogni caso).
* l'indicazione di nuove licenze compatibili e di nuovi metodi di distribuzione del codice sorgente, in particolare per la condivisione tramite BitTorrent.
* l'eliminazione dell'obbligo di distribuire componenti di facile reperibilità, come le librerie di supporto comuni (es. libreria C, Python e Ruby).

## Termini e condizioni

### Modalità di utilizzo

Software sotto la GPL può essere eseguito per tutti gli scopi, inclusi scopi commerciali e persino come strumento per la creazione di software proprietario, per esempio quando si utilizzano i compilatori con licenza GPL. Gli utenti o le aziende che distribuiscono opere con licenza GPL (per esempio software), potrebbero percepire una commissione per le copie o distribuirle gratuitamente. Questo distingue la GPL dalle licenze software shareware che consentono la copia per uso personale, ma vietano la distribuzione commerciale. Il GPL dichiara esplicitamente che le opere GPL possono essere vendute a qualsiasi prezzo.

Nell'utilizzo puramente privato (o interno), senza che sia venduto o distribuito, il codice del software può essere modificato e riutilizzato senza richiedere il codice sorgente per essere pubblicato. Per la vendita o la distribuzione è necessario l'intero codice sorgente affinché il software venga messo a disposizione degli utenti, comprese eventuali modifiche del codice e integrazioni.

Tuttavia il software in esecuzione come un programma applicativo in un sistema operativo con licenza GPL, come Linux, non è tenuto a essere pubblicato sotto licenza GPL; in questo caso la concessione delle licenze dipende solo dalle librerie utilizzate e dalle componenti software e non dalla piattaforma sottostante. Solo se vengono utilizzate parti GPL in un programma (e il programma è distribuito), tutti gli altri codici sorgente del programma devono essere resi disponibili alle stesse condizioni di licenza. La GNU Lesser General Public License (LGPL) è stata creata per ottenere un copyleft debole rispetto al GPL, in quanto non richiede un codice sorgente custom-developed (distinto dalle parti LGPLed) da rendere disponibile alle stesse condizioni di licenza.

La maggior parte dei programmi con licenza GPLv2 utilizza il seguente testo approvato dalla FSF: «This program is free software; you can redistribuite it and/or modify it under the terms of the GNU/General Pubblic License as published the Free software Foundation; either version 2 of the License, or (at your opinion) any later version». Questo testo non significa che i programmi passeranno automaticamente alla versione successiva della licenza, ma solo che questi programmi ottengono automaticamente i permessi aggiuntivi della licenza successiva e non le eventuali clausole restrittive. Quindi, se lo sviluppatore vorrà far valere per intero la licenza successiva dovrà cambiare il testo in «[...] either version 3 of the License, or (at your opinion) any later version».

Tuttavia, altri programmi specificano esplicitamente l'utilizzo della versione 2 della GPL (tra questi, il kernel Linux) o della sola versione 3 per mantenere il controllo esplicito sulla licenza utilizzata e per evitare di assecondare implicitamente l'evoluzione futura della licenza GNU GPL nelle versioni a venire.

### Copyleft

I diritti di distribuzione concessi dalla GPL per le versioni modificate del lavoro non sono incondizionati. Quando qualcuno distribuisce un'opera GPL con le proprie modifiche, i requisiti per la distribuzione dell'intera opera non possono essere in nessun modo superiori ai requisiti che si trovano nella GPL.

Questo requisito è noto come copyleft. Esso guadagna il proprio potere legale dall'uso di copyright sui programmi software. Dato che un progetto GPL è protetto da copyright, un concessionario non ha diritto di ridistribuirlo, neppure in forma modificata, tranne sotto i termini della licenza. Si è tenuti soltanto a rispettare i termini della GPL, se si vuole esercitare i diritti normalmente limitati da copyright, come la ridistribuzione. Al contrario, se si distribuisce copie del progetto senza rispettare i termini della licenza GPL (per esempio, mantenendo il codice sorgente segreto), si può essere citati dall'autore originale sotto copyright.

Copyleft quindi utilizza copyright per realizzare l'opposto del suo solito scopo: invece di imporre restrizioni, concede i diritti di altre persone, in modo tale da garantire che tali diritti non possano essere successivamente annullati.

Ci sono diversi livelli di copyleft che hanno effetti diversi: strong, weak e network copyleft. Quando si parla della licenza GPL si parla di uno strong copyleft che implica che per tutte le opere derivate e le librerie collegate dinamicamente ad esse ereditano anch'esse la licenza copyleft (come ad esempio per un Dynamic Linking). Questa differenza tra livelli di copyleft può portare ad una incompatibilità tra clausole e licenze che quindi impediscono la distribuzione di programmi che possano lavorare insieme.

Molti distributori di programmi GPL raggruppano il codice sorgente con gli eseguibili. Un metodo alternativo di soddisfare il copyleft è di fornire un'offerta scritta per fornire il codice sorgente su un supporto fisico (ad esempio un CD) su richiesta. In pratica, molti programmi GPL sono distribuiti su Internet, e il codice sorgente è reso disponibile tramite FTP o HTTP, il che è conforme con la licenza.

Il Copyleft si applica solo quando una persona cerca di ridistribuire il programma. Si ha il permesso di modificare privatamente il software senza alcun obbligo di divulgare le modifiche fino a quando il software modificato non viene distribuito esternamente.

### Licenza e contratto

Il GPL è stato progettato come una licenza, piuttosto che come un contratto. In alcuni ordinamenti di Common law, la distinzione giuridica tra una licenza e un contratto è importante: i contratti sono applicabili dal diritto contrattuale considerando che le licenze vengono applicate dalla legge sul copyright. Tuttavia, questa distinzione non è utile in molte giurisdizioni dove non ci sono differenze tra i contratti e le licenze, come i sistemi di diritto civile.

Coloro che non accettano i termini e le condizioni della GPL non hanno il permesso, in base al diritto d'autore, di copiare o distribuire con licenza GPL il software o i lavori derivati. Tuttavia, se non ridistribuiscono il programma GPL, possono comunque utilizzare il software all'interno della loro organizzazione, e i lavori (compresi i programmi) costruiti con l'uso del programma non sono tenuti ad essere coperti da questa licenza.

## Derivazioni

Il testo della GPL è a sua volta protetto da copyright, e il copyright è detenuto dalla Free Software Foundation.

La FSF permette alle persone di creare nuove licenze basate sul GPL, a patto che i titoli derivati non utilizzino il preambolo GPL senza permesso. Questo è scoraggiato, tuttavia, poiché tale licenza potrebbe essere incompatibile con la GPL.

Altri titoli creati dal progetto GNU includono la GNU Lesser General Public License e la GNU Free Documentation License.

Il testo della GPL non è di per sé sotto GPL. Il diritto d'autore della licenza non consente la modifica della licenza di per sé. La copia e la distribuzione della licenza sono consentiti in quanto il GPL richiede ai destinatari di ottenere "una copia di questa Licenza insieme al Programma". Secondo le GPL FAQ, chiunque può fare una nuova licenza utilizzando una versione modificata del GPL a patto che utilizzi un nome diverso per la licenza e non menzioni " GNU”.

### Collegamenti e lavori derivati

Secondo la FSF, "La GPL non richiede di pubblicare la versione modificata, né parte di essa. Siete liberi di apportare modifiche e usarle privatamente, senza mai pubblicarle". Tuttavia, se si distribuisce al pubblico un progetto licenziato dalla GPL, c'è un problema che riguarda il collegamento: vale a dire, se un programma proprietario utilizza una libreria GPL, il programma proprietario viola la GPL?

Il GPL è chiaro nel richiedere che tutti i progetti di codice sotto GPL debbano esse stesse essere sotto GPL. L'ambiguità si pone per quanto riguarda l'utilizzo di librerie GPL, e l'accorpamento software GPL in un pacchetto più ampio (magari mescolato in un binario tramite collegamento statico). Questo è in definitiva una questione non di GPL di per sé, ma di come il diritto d'autore definisce le opere derivate.

### Comunicazione e impacchettamento con i programmi non-GPL

Il semplice atto di comunicare con altri programmi non richiede di per sé che tutto il software sia GPL. Tuttavia devono essere rispettate le condizioni minori, le quali assicurano che i diritti di software GPL non vengano violati. La seguente è una citazione dal gnu.org GPL FAQ, che descrive in che misura il software è autorizzato a comunicare con i programmi GPL:

Testo originale What is the difference between an "aggregate" and other kinds of "modified versions"? An "aggregate" consists of a number of separate programs, distributed together on the same CD-ROM or other media. The GPL permits you to create and distribute an aggregate, even when the licenses of the other software are non-free or GPL-incompatible. The only condition is that you cannot release the aggregate under a license that prohibits users from exercising rights that each program's individual license would grant them. Where's the line between two separate programs, and one program with two parts? This is a legal question, which ultimately judges will decide. We believe that a proper criterion depends both on the mechanism of communication (exec, pipes, rpc, function calls within a shared address space, etc.) and the semantics of the communication (what kinds of information are interchanged). If the modules are included in the same executable file, they are definitely combined in one program. If modules are designed to run linked together in a shared address space, that almost surely means combining them into one program. By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

Traduzione in italiano Qual è la differenza tra un "aggregato" e altri tipi di "versioni modificate"? Un "aggregato" è costituito da un certo numero di programmi separati, distribuiti insieme sullo stesso CD-ROM o altri supporti. La GPL permette di creare e distribuire un aggregato, anche quando le licenze degli altri software sono non-libere o incompatibili con la GPL. L'unica condizione è che non è possibile distribuire l'aggregato sotto una licenza che impedisce agli utenti di esercitare i diritti di licenza che ogni singolo programma avrebbe loro concesso. Dov'è il confine tra due programmi separati, e un programma in due parti? Si tratta di una questione giuridica, che spetterà ai giudici dirimere. Noi crediamo che un criterio adeguato dipenda sia dal meccanismo della comunicazione (exec, pipes, rpc, function calls within a shared address space, ecc.) e la semantica della comunicazione (quali tipi di informazioni sono scambiate). Se i moduli sono inclusi nello stesso file eseguibile, sono definitivamente combinati in un unico programma. Se i moduli sono progettati per funzionare collegati insieme in uno spazio di indirizzi condiviso, significa quasi sicuramente che essi sono uniti in un unico programma. Al contrario, pipes, sockets e gli argomenti della riga di comando sono meccanismi di comunicazione normalmente utilizzati tra due programmi separati. Quindi quando sono utilizzati per la comunicazione, i moduli normalmente sono programmi separati. Ma se le semantiche della comunicazione sono abbastanza vicine, lo scambio di complesse strutture dati interne, anche questo potrebbe essere una base per considerare le due parti combinate in un programma più ampio.

### Compatibilità

Un software licenziato sotto altre licenze può essere combinato con un programma sotto GPL senza conflitti, almeno finché tale combinazione non pone ulteriori limitazioni rispetto a quanto la GPL permette. In aggiunta ai normali termini della GPL, ci sono restrizioni e autorizzazioni aggiuntive che si possono applicare:

1) Se un utente vuole combinare codice concesso in licenza sotto diverse versioni di GPL, questo è consentito solo se il codice con la versione precedente GPL include una dichiarazione "ogni versione successiva". Ad esempio, la libreria GNU LibreDWG licenziata GPLv3 non può essere più utilizzata da LibreCAD e FreeCAD che sono solo licenziate GPLv2.

2) Al codice sotto licenza LGPL è permesso essere collegato con qualsiasi altro codice al di là della licenza che il codice possiede, anche se la LGPL fa aggiungere ulteriori requisiti per il lavoro combinato. LGPLv3 e solo-GPLv2 non possono quindi essere collegate comunemente. Codice sotto licenza LGPLv2.x senza la dicitura "ogni versione successiva" può essere pubblicato solo se tutto il lavoro combinato è concesso in licenza GPLv2 o GPLv3.

FSF possiede una lista di licenze di software libero compatibili con la GPL con molte delle licenze di software libero più comuni, come la licenza originale MIT/X, la licenza BSD (nella sua forma 3-clause corrente) e la Licenza Artistica 2.0.

David A. Wheeler ha sostenuto che gli sviluppatori di software libero/open source utilizzano licenze compatibili solo GPL, perché fare diversamente rende difficile per gli altri partecipare e contribuire al codice.

Un certo numero di aziende utilizzano la multi-licenza per distribuire una versione GPL e vendere una licenza proprietaria per le aziende che desiderano combinare il pacchetto con il codice proprietario, utilizzando o meno il collegamento dinamico.

## Le critiche di Linus Torvalds

Linus Torvalds, autore della prima versione del kernel Linux, è stato ad esempio inizialmente contrario alla licenza GPLv3 per la rigida determinazione etica delle prime bozze della licenza, da lui ritenuta di "crociata" contro la tivoization. «Secondo me uno dei motivi per cui Linux ha avuto tanto successo è la qualità del progetto, non certo l'atteggiamento di crociata che molti gli vogliono attribuire» ha dichiarato Linus Torvalds. Infine ha ribaltato la posizione di Richard Stallman: «non è la GPL ad aver reso famoso Linux, ma è Linux ad aver reso "presentabile" la GPL, essendo dannatamente meno integralista di quello che la FSF vuole». Pur dopo la pubblicazione della nuova versione della licenza, Torvalds è rimasto scettico, dichiarando che Linux non verrà distribuito con licenza GPLv3. Stallman nel settembre 2007 ha commentato riguardo alla posizione di Torvalds ritenendola una conseguenza della posizione filosofica che differenzia in modo decisivo la comunità che promuove il software libero da chi favorisce l'open source:

«Il termine open source è stato promosso nel 1998 da gente che non voleva dire libero o libertà. Associavano quel termine ad una filosofia che riguarda solo valori di convenienza pratica [...] Non dico che sbaglino ma non colgono il punto. Se si negano i valori della libertà e della solidarietà, e si apprezza soltanto software potente ed affidabile, si compie un errore terribile. [...] Il fatto che Torvalds dica open source invece di software libero dimostra da dove viene. Ho scritto la GNU GPL per difendere la libertà di tutti gli utenti di tutte le versioni di un programma. Ho sviluppato la versione 3 per farlo meglio e per proteggerla contro nuove minacce [..] Torvalds dice che non persegue questo obiettivo; e questo è probabilmente il motivo per il quale non apprezza la GPL versione 3. Rispetto il suo diritto di esprimere le proprie idee, anche se penso che siano folli. Comunque, se non vogliamo perdere la nostra libertà, è meglio non seguirlo.»

## Utilizzo

I programmi di software libero di spicco sotto licenza GPL includono il kernel Linux e il GNU Compiler Collection (GCC). In altri programmi di software libero (MySQL è un esempio lampante) che hanno licenze multiple, spesso una delle licenze è di tipo GPL.

È possibile usare la GPL per documenti di testo invece che per programmi per computer, o più in generale per tutti i tipi di mezzi di comunicazione, nel caso in cui sia chiaro cosa costituisce il codice sorgente. Per i manuali e libri di testo, però, la FSF raccomanda la GNU Free Documentation License (GFDL) invece, che è stata creata per questo scopo.

Se il GPL viene utilizzato per i font, i documenti o le immagini realizzate con tali caratteri potrebbero dover essere distribuiti sotto i termini della licenza GPL.

## Dati statistici

Secondo la Black Duck Software, i dati del sito web dimostrano che la famiglia di licenze GPL viene utilizzata nel 54% dei software open-source, in particolare: 33% GPLv2, 12% GPLv3, 6% LGPL 2,1, 3% LGPL 3,0.

Matthew Aslett, un analista, ha sostenuto (in base alle statistiche di Black Duck Software) che le licenze "copyleft" sono andate in declino mentre le licenze permissive in aumento. Tuttavia, uno studio successivo ha mostrato che il software sotto licenza GPL è aumentato, e anche i dati della Black Duck Software hanno mostrato un incremento complessivo di progetti software sotto licenza GPL. Daniel German, professore presso il Dipartimento di Computer Science presso l'Università di Victoria in Canada, durante un intervento nel 2013 ha presentato le sfide metodologiche per determinare quali sono i titoli FOSS più diffusi, e ha mostrato come non riusciva a replicare il risultato da Black Duck Software.

A partire dall'agosto 2007, il GPL ha rappresentato quasi il 65% dei 43.442 progetti di software libero quotati in FreeCode, e nel gennaio 2006 circa il 68% dei progetti elencati su SourceForge.net. Allo stesso modo, nel 2001 un'analisi di Red Hat Linux 7.1 ha trovato che il 50% del codice sorgente è stato pubblicato sotto GPL. Nel 2011, quattro anni dopo la pubblicazione della GPLv3, secondo i dati Black Duck Software il 6,5% di tutti i progetti di licenza open-source usava GPLv3 mentre il 42,5 % usava GPLv2. Il direttore dell'ufficio “programmi open-source” di Google, Chris DiBona, ha riferito che il numero di progetti open-source software su licenza che si erano trasferiti a GPLv3 da GPLv2 nel 2009 è stata del 50%.

