Questa traduzione potrebbe non essere aggiornata con le modifiche effettuate dopo il 2018-12-25 alla versione originale inglese.

È disponibile un elenco delle modifiche. Per informazioni su come gestire e inviare traduzioni delle nostre pagine web consultate la Guida alle traduzioni.

Domande ricorrenti sulle licenze GNU

Indice

Domande di base circa il Progetto GNU, la Free Software Foundation e le sue licenze

Comprensione generale delle licenze di GNU

Usare le licenze di GNU per i propri programmi

Distribuzione di programmi rilasciati sotto le licenze di GNU

Usare programmi rilasciati sotto le licenze di GNU nei propri programmi

Combinare opere con codice rilasciato sotto le licenze di GNU

Domande sulle violazioni delle licenze di GNU


Che significa “GPL”? (#WhatDoesGPLStandFor)

"GPL" significa "General Public License" (Licenza Pubblica Generica). La variante della GPL più diffusa è la GNU General Public License, in breve GNU GPL. L'ultimo acronimo può ancora essere abbreviato in "GPL", se dal contesto si capisce che ci si sta riferendo alla GNU GPL.

Scrivere software libero significa usare la GPL? (#DoesFreeSoftwareMeanUsingTheGPL)

Assolutamente no -- ci sono molte altre licenze libere: sul sito ce n'è una lista incompleta. Una qualsiasi licenza che garantisca all'utente alcune ben determinate libertà è una licenza per software libero.

Perché è meglio la GNU GPL piuttosto che altre licenze per il software libero? (#WhyUseGPL)

Usare la GPL significa che tutte le versioni migliorate che saranno distribuite dovranno essere libere. In questo modo si evita il rischio di trovarsi a competere con una versione modificata del proprio lavoro che sia diventata proprietaria. Tuttavia, in alcune situazioni particolari, può essere preferibile l'uso di una licenza più permissiva.

Tutto il software GNU usa la GNU GPL come licenza? (#DoesAllGNUSoftwareUseTheGNUGPLAsItsLicense)

La maggior parte del software GNU usa la GNU GPL, ma ci sono alcuni programmi GNU (e parti di programmi) che usano licenze più lasche, come la Lesser GPL. Quando questo accade, è una questione di strategia.

L'uso della GPL per un programma lo rende automaticamente software GNU? (#DoesUsingTheGPLForAProgramMakeItGNUSoftware)

Chiunque può rilasciare un programma sotto la GNU GPL, ma il programma non diventa per questo un componente di GNU.

Rendere il programma un componente software di GNU significa contribuire esplicitamente al Progetto GNU: questo accade quando sia gli sviluppatori del software che i responsabili del Progetto GNU sono d'accordo. Chi fosse interessato a contribuire con un programma al Progetto GNU può scrivere (in inglese, se possibile) a <maintainers@gnu.org>.

Cosa bisogna fare quando si scopre una possibile violazione della GPL? (#ReportingViolation)

Bisogna segnalarla. Prima di tutto, accertarsi dei fatti quanto meglio possibile. Poi segnalarli all'editore o al detentore del copyright di quel particolare programma coperto da GPL. Se si tratta della Free Software Foundation, bisogna scrivere (possibilmente in inglese) a <license-violation@gnu.org>. Altrimenti, potrebbe essere chi si preoccupa della manutenzione del programma a detenere il copyright, o essere in grado di dire dove rivolgersi, quindi si può segnalare la cosa al manutentore del programma.

Perché la GPL permette agli utenti di pubblicare le loro versioni modificate di un programma? (#WhyDoesTheGPLPermitUsersToPublishTheirModifiedVersions)

Un aspetto cruciale del software libero è che gli utenti sono liberi di cooperare tra loro. È assolutamente essenziale permettere agli utenti che desiderano aiutarsi vicendevolmente di condividere con gli altri le soluzioni ai malfunzionamenti e gli altri miglioramenti apportati al programma.

Alcuni hanno proposto alternative alla GPL che richiedono che le versioni modificate debbano essere sottoposte al giudizio dell'autore del programma originale. Fino a quando l'autore dell'originale continua a occuparsi del programma, la cosa può funzionare bene nella pratica, ma se l'autore cessa (completamente o no) di lavorare al programma per dedicarsi a qualcos'altro oppure non riesce a soddisfare tutte le richieste degli utenti, questo schema di lavoro si rivela fallimentare. Inoltre, a prescindere dai problemi di ordine pratico, questo modello di lavoro non premette agli utenti di aiutarsi vicendevolmente.

Qualche volta il controllo sulle versioni modificate viene proposto come un mezzo per prevenire la confusione che ci sarebbe tra le varie versioni messe a punto dagli utenti. Secondo la nostra esperienza, questa confusione non è un problema dei più gravi. Per esempio, molte versioni di Emacs sono state realizzate al di fuori del Progetto GNU, ma gli utenti sanno distinguerle. La GPL richiede che l'autore di una versione vi apponga il suo nome, per differenziarla dalle altre e per proteggere la reputazione degli altri sviluppatori.

La GPL richiede che il codice sorgente delle versioni modificate di un programma sia reso pubblico? (#GPLRequireSourcePostedPublic)

La GPL non obbliga a pubblicare una versione modificata. Ognuno è libero di fare modifiche al software e di usarle privatamente, senza mai renderle pubbliche. Questo è valido anche per le organizzazioni (società incluse): un'organizzazione può creare una versione modificata e utilizzarla internamente senza mai pubblicarla al di fuori dell'organizzazione stessa.

Ma se si rende pubblica la versione modificata del programma in qualche maniera, la GPL obbliga a fare in modo che il codice sorgente del programma modificato sia disponibile agli altri utenti, sotto la GPL.

Insomma, la GPL dà la facoltà di rilasciare pubblicamente un programma modificato, ma solo in certe forme, e non in altre; ma la decisione riguardo a se pubblicare o no il software rimane a chi ha effettuato le modifiche.

Posso avere un programma coperto da GPL ed un programma non libero non correlato sullo stesso computer? (#GPLAndNonfreeOnSameMachine)

Si.

Se conosco qualcuno che è in possesso di una copia di un programma coperto da GPL, posso chiedergli di darmene una copia? (#CanIDemandACopy)

La GPL non obbliga a pubblicare una versione modificata, dà solo il permesso di farlo se e quando si vuole. Ognuno è libero di fare modifiche al software e di usarle privatamente, senza mai renderle pubbliche.

Che significa "written offer valid for any third party" nella GPLv2? Vuol dire che chiunque può ottenere i sorgenti di qualsiasi programma GPL? (#WhatDoesWrittenOfferValid)

Se si sceglie di fornire il codice sorgente dietro richiesta scritta, ognuno che ne abbia fatto richiesta ha diritto a riceverlo.

Se si distribuiscono commercialmente degli eseguibili non accompagnati dal codice sorgente, la GPL dice che si debba fornire un'offerta scritta di distribuire il codice sorgente in un secondo tempo. Se gli utenti distribuiscono non a scopo di lucro gli eseguibili ricevuti, devono accompagnarli con una copia di quest'offerta scritta. Questo significa che gli utenti che non hanno ricevuto gli eseguibili direttamente dal primo distributore, possono tuttavia ricevere da esso copie del codice sorgente, in accordo con l'offerta scritta.

La ragione per cui si richiede che l'offerta sia valida per ogni terza parte è che in questo modo quegli utenti che ricevono gli eseguibili indirettamente possono ordinare il codice sorgente dal distributore.

La GPLv2 dice che le versioni modificate, se rese pubbliche, devono essere "concesse in licenza ... ad ogni terza parte." Ma chi sono queste "terze parti"? (#TheGPLSaysModifiedVersions)

La sezione 2 dice che le versioni modificate che si distribuiscono devono essere concesse in licenza GPL ad ogni terza parte. "Ogni terza parte" significa chiunque -- ma questo non implica che l'autore della versione modificata debba fare materialmente qualcosa per queste persone. Significa soltanto che essi hanno la licenza dall'autore, secondo la GPL, per la versione modificata.

Sono costretto ad applicare il copyright sulle modifiche che applico ad un programma coperto da GPL? (#RequiredToClaimCopyright)

Non si è costretti ad applicare copyright sulle proprie modifiche, ma in molti paesi questo avviene comunque in modo automatico. Per evitare dunque che le proprie modifiche siano coperte da copyright, è necessario porle esplicitamente nel pubblico dominio.

Ma se si rende pubblica la versione modificata del programma in qualche maniera, la GPL obbliga a fare in modo che il codice sorgente del programma modificato sia disponibile agli altri utenti, sotto la GPL.

Cosa dice la GPL circa la traduzione di codice in un altro linguaggio di programmazione? (#TranslateCode)

La traduzione di un'opera viene considerata una forma di modifica dalle leggi sul diritto d'autore. Ne consegue che ciò che la GPL dice circa le versioni modificate vale anche per le versioni tradotte. La traduzione è coperta dal diritto d'autore sul programma originale.

Se il programma originario ha una licenza libera, quella licenza dà il permesso di tradurlo e governa anche le modalità d'uso del programma tradotto e le licenze ad esso applicabili. Se il programma originario è coperto da una certa versione della GNU GPL, il programma tradotto è coperto dalla medesima versione della GNU GPL.

Se un programma è l'unione di codice di pubblico dominio e di codice coperto da GPL, posso prendere la parte di pubblico dominio e usarla come codice di pubblico dominio? (#CombinePublicDomainWithGPL)

Si può fare, purché si riesca ad individuare la parte di pubblico dominio e a separarla dal resto. Se il codice è stato classificato come di pubblico dominio dal suo sviluppatore, rimane tale indipendentemente da dove si trovi.

La GPL mi permette di vendere copie del programma a scopo di lucro? (#DoesTheGPLAllowMoney)

Sì, la GPL permette a chiunque di farlo. Il diritto di vendere copie è parte della definizione di software libero. Salvo un caso particolare, non ci sono particolari vincoli sul prezzo. (L'unica eccezione riguarda l'offerta di fornire codice sorgente che deve essere necessariamente allegata per iscritto ad una distribuzione di eseguibili priva di sorgenti).

La GPL mi permette di chiedere soldi per il download del programma dal mio sito? (#DoesTheGPLAllowMoney)

Sì. Si può richiedere qualunque prezzo per distribuire una copia del programma. Se si distribuiscono gli eseguibili da un sito, bisogna fornire un "accesso equivalente" per scaricare i sorgenti -- quindi il pagamento richiesto per scaricare i sorgenti non può essere maggiore di quello per scaricare gli eseguibili.

La GPL mi permette di richiedere che tutti quelli che ricevono il software debbano pagarmi una somma di denaro e/o farmelo sapere? (#DoesTheGPLAllowRequireFee)

No. Difatti, una pretesa come questa renderebbe il programma non libero. Se gli utenti fossero obbligati a pagare quando ricevono una copia del programma, o se dovessero render nota la cosa a qualcuno in particolare, allora il programma non sarebbe libero. Si veda la definizione di software libero.

La GPL è una licenza per il software libero, e quindi permette agli utenti di usare ed in più ridistribuire il software senza dover pagare qualcuno per farlo.

Si può chiedere alla gente di pagare per ottenere una copiada voi. Non si può chiedere alla gente di pagare per una copia ottenuta da altri.

Se distribuisco software GPL a pagamento, devo anche renderlo disponibile pubblicamente in modo gratuito? (#DoesTheGPLRequireAvailabilityToPublic)

No. Tuttavia, se qualcuno paga per averne una copia, la GPL gli dà la libertà di renderlo pubblico, a pagamento o gratuitamente. Per esempio, qualcuno potrebbe pagarlo a voi e poi metterne a disposizione una copia su un sito web pubblico.

La GPL mi permette di distribuire una copia soggetta ad un accordo di non divulgazione (NDA, non-disclosure agreement)? (#DoesTheGPLAllowNDA)

No. Secondo la GPL, chiunque riceva una copia modificata ha diritto di redistribuirne copie (modificate o meno). La GPL non dà il diritto di redistribuire l'opera con termini più restrittivi.

Se a qualcuno fosse chiesto di firmare una NDA per ricevere codice coperto da GPL dalla FSF, ci contatti immediatamente scrivendo (in inglese, se possibile) all'indirizzo license-violation@fsf.org.

Se la violazione riguarda codice coperto da GPL di proprietà di qualcun altro, si prega di contattare il detentore del copyright, come si farebbe in ogni altro caso di violazione della GPL.

La GPL mi permette di distribuire una versione beta o modificata soggetta ad un accordo di non divulgazione? (#DoesTheGPLAllowModNDA)

No. La GPL afferma che la versione modificata debba a sua volta contenere tutte le libertà stabilite dalla GPL. Quindi, chiunque riceva una copia della versione dall'autore delle modifiche ha il diritto di ridistribuire copie (modificate o non) di quella versione.

La GPL mi permette di sviluppare una versione modificata soggetta ad un accordo di non divulgazione? (#DevelopChangesUnderNDA)

Sì. Per esempio, si può accettare un contratto per sviluppare delle modifiche e accettare di non distribuire le proprie modifiche fino al nulla osta del cliente. Questo è possibile perché nessun codice verrebbe in tal modo distribuito sotto NDA.

Si possono anche distribuire le proprie modifiche al proprio cliente sotto GPL, e accettare di non distribuirle a nessun altro fino al nulla osta del cliente. Anche in questo caso nessun codice verrebbe distribuito sotto NDA, né sotto alcun altra restrizione aggiuntiva.

La GPL darebbe al cliente il diritto di redistribuire le modifiche, ma nello scenario proposto questi sceglierebbe di non esercitare tale diritto, che però esiste.

Voglio acquistare una buona reputazione professionale. Voglio che la gente venga a conoscenza di cosa ho scritto. Usando la GPL, il mio lavoro mi verrà riconosciuto? (#IWantCredit)

Sicuramente il lavoro verrà riconosciuto: una parte integrante del rilascio di un programma sotto la GPL è l'apposizione di una nota di copyright al programma, copyright che va sotto il nome di chi lo rilascia (se detentore del diritto d'autore). La GPL richiede che tutte le copie del programma siano corredate di un'appropriata nota di copyright.

La GPL mi permette di aggiungere condizioni che richiedano che io sia citato in articoli di ricerca che sfruttano un mio programma coperto da GPL o il suo output? (#RequireCitation)

No, la GPL non lo consente. Anche se riteniamo che citare correttamente gli altri sia importante in pubblicazioni accademiche, non si può imporre l'obbligo di citazione come richiesta aggiuntiva. Questo andrebbe oltre le richieste aggiuntive accettabili come definite nella sezione 7(b) della GPLv3, e quindi costituirebbe una restrizione aggiuntiva ai sensi della sezione 7 della GPL. Tra l'altro, la legge sul copyright proibisce di imporre una tale condizione sull'output di un programma, a prescindere dalla licenza con cui è distribuito.

Perché la GPL richiede che ogni copia del programma sia corredata di una copia della licenza? (#WhyMustIInclude)

Includere una copia della licenza nel programma è di vitale importanza, perché permette a chiunque ottenga una copia del programma di sapere quali sono i suoi diritti.

L'autore potrebbe essere tentato di includere solo una URL che punti alla licenza, invece della licenza stessa. Ma tra cinque o dieci anni, nessuno può garantire che quell'URL sarà ancora valida. Tra vent'anni, gli indirizzi internet come noi li conosciamo potrebbero addirittura non esistere più.

L'unico modo di essere sicuri che gli utenti che hanno una copia del programma continueranno ad essere in grado di leggere la licenza, nonostante tutti i cambiamenti che potranno riguardare la rete, è includere una copia della licenza nel programma.

È sufficiente inserire una copia della GNU GPL nel mio repository perché questa venga applicata? (#LicenseCopyOnly)

La semplice presenza di una copia della GNU GPL in un file all'interno del repository non dichiara esplicitamente che il codice in quel repository può essere usato sotto la GNU GPL. Senza una tale dichiarazione, non è del tutto chiaro che i permessi della licenza si possano applicare ad alcun file sorgente specifico. Una dichiarazione esplicita elimina ogni dubbio.

Un file contenente solo una licenza, senza una dichiarazione che determinati altri file sono coperti da quella licenza, ricorda un file che contiene solo una procedura che non viene mai chiamata da altro codice. La somiglianza non è perfetta: gli avvocati ed i tribunali, spinti dal buonsenso, potrebbero arrivare alla conclusione che la licenza sia sta messa lì per essere applicata al codice. O forse no. Perché creare incertezza?

Queste indicazioni dovrebbero essere presenti in ciascun file sorgente. Anche se bastano indicazioni chiare nel file README purché sia distribuito insieme al codice, in quel caso è più facile separarle dal codice; e non c'è motivo per rischiare incertezze sulle licenze.

Questa non è una particolarità della GNU GPL: è un'osservazione che vale per ogni licenza libera.

Perché dovrei inserire una nota di licenza in ogni file sorgente? (#NoticeInSourceFile)

Si dovrebbe inserire una nota che afferma il tipo di licenza usata all'inizio di ogni file sorgente, così da evitare il rischio che il codice venga separato dalla sua licenza. Se il README del repository afferma che il file sorgente è rilasciato sotto la GNU GPL, che succede se qualcuno copia quel file all'interno di un altro programma? L'altro contesto potrebbe non mostrare la licenza del file. Potrebbe sembrare che sia stata usata un'altra licenza, oppure nessuna licenza (che renderebbe il codice non libero).

Aggiungere una nota di copyright ed una di licenza all'inizio di ogni file sorgente è facile e previene questo tipo di confusione.

Questa non è una particolarità della GNU GPL: è un'osservazione che vale per ogni licenza libera.

E se il programma fosse poco più grande della stessa licenza? (#WhatIfWorkIsShort)

Se l'intera distribuzione di un programma contiene poco codice -- meno di 300 linee è il limite da noi usato -- sarebbe meglio a quel punto usare una licenza permissiva, piuttosto che una licenza copyleft come la GNU GPL, a meno che il codice non sia di particolare importanza. In questi casi, consigliamo l'Apache License 2.0.

È possibile, allo scopo di risparmiare spazio, omettere il preambolo della GPL? O l'appendice con le istruzioni su come applicare la GPL ai nuovi programmi? (#GPLOmitPreamble)

Il preambolo e le istruzioni sono parte integrante della GNU GPL, e non possono essere omessi: si raccomanda di usare la GPL per intero. Difatti, la GPL è protetta da copyright, e la sua licenza permette esclusivamente la copia letterale dell'intero documento. (Si possono usare i termini legali per creare un'altra licenza, che non sarà però la GNU GPL.)

Il preambolo e le istruzioni contribuiscono con circa 1000 caratteri al documento, meno di 1/5 della lunghezza totale della GPL. Pertanto non determineranno un cambiamento sostanziale nelle dimensioni di un pacchetto software, a meno che questo non sia particolarmente piccolo. In questo caso, l'autore potrebbe anche usare una semplice licenza che non ponga nessuna restrizione d'uso, piuttosto che la GNU GPL.

Che significa dire che due licenze sono "compatibili"? (#WhatIsCompatible)

Quando si combinano due programmi (o loro parti sostanziali) per realizzare un'opera di più grandi dimensioni, bisogna avere il permesso di fare un tale uso dei due programmi. Se le licenze dei due software sono tali che sia possibile effettuare questa operazione, si dice che le licenze sono compatibili. Se invece non c'è modo di soddisfare le due licenze contemporaneamente, allora queste sono incompatibili.

Per alcune licenze, la maniera particolare in cui si effettua una tale combinazione può condizionare la compatibilità -- per esempio, le licenze potrebbero consentire il link di due moduli insieme, ma non consentire la combinazione del loro codice sorgente in un unico modulo.

Se si vogliono installare due programmi separati sullo stesso sistema, non è necessario che le loro licenze siano compatibili, in quanto questo non costituisce una combinazione allo scopo di realizzare un'opera più grande.

Che significa dire che una licenza è "compatibile con la GPL"? (#WhatDoesCompatMean)

Significa che l'altra licenza e la GNU GPL sono compatibili; ovvero, è possibile combinare il codice rilasciato sotto le condizioni dell'altra licenza con il codice protetto dalla GPL per realizzare un programma più grande.

Tutte le versioni della GNU GPL permettono tali combinazioni per uso privato, e ne permettono anche la distribuzione a patto che queste combinazioni siano rilasciate sotto la stessa versione della GNU GPL. Se l'altra licenza permette lo stesso, allora essa è compatibile con la GPL.

La GPLv3 è compatibile con più licenze della GPLv2: permette di creare combinazioni con codice che ha degli specifici requisiti aggiuntivi che non sono parte della stessa GPLv3. La Sezione 7 contiene più informazioni a riguardo, compresa una lista dei requisiti aggiuntivi consentiti.

Posso scrivere programmi liberi che fanno uso di librerie non libere? (#FSWithNFLibs)

Se si fa questo, il proprio programma non sarà pienamente usabile in un ambiente libero. Se un programma fa affidamento ad una libreria non libera per svolgere un determinato compito, non può svolgere quel compito nel Mondo Libero. Se ha bisogno di una libreria non libera per poter essere eseguito, non può fare parte di un sistema operativo libero come GNU; è interamente inaccessibile al Mondo Libero.

Quindi, bisogna chiedersi: c'è un modo per svolgere il compito senza usare questa libreria? Si può scrivere un'alternativa libera a quella libreria?

Se il programma è già stato scritto facendo uso della libreria non libera, forse è troppo tardi per tornare sui propri passi. A quel punto sarebbe meglio rilasciare il programma nel suo stato attuale, piuttosto che non rilasciarlo affatto. Ciò nonostante, preghiamo di spiegare nel README che l'uso di una libreria non libera è inconveniente, e di suggerire agli utenti di cambiare il programma per poter svolgere lo stesso compito senza dover usare tale libreria. Preghiamo quindi di mettere al primo posto come priorità per i contributori la rimozione di ogni riferimento alla libreria non libera.

Si noti che la combinazione di programmi coperti da GPL e librerie non libere potrebbe risultare anche in problemi di tipo legale. Per ulteriori informazioni, si faccia riferimento alla domanda sull'uso di software coperto da GPL assieme a software coperto da licenze incompatibili alla GPL.

Posso linkare un programma GPL con una libreria di sistema proprietaria? (#SystemLibraryException)

Entrambe le versioni della GPL sono fornite di un'eccezione al loro copyleft, solitamente chiamata la "system library exception" (eccezione per le librerie di sistema). Se queste librerie incompatibili con la GPL che si vogliono usare rientrano nei criteri che definiscono una libreria di sistema, non c'è bisogno di fare nulla per usarle; il requisito di distribuire il codice sorgente per l'intero programma non include queste librerie, anche se si distribuisce un eseguibile linkato che le contiene.

I criteri che definiscono una "libreria di sistema" variano a seconda della versione della GPL. La GPLv3 definisce le "System Libraries" (Librerie di Sistema) esplicitamente nella sezione 1, per escluderle dalla definizione di "Corresponding Source" (Codice Sorgente Corrispondente). La GPLv2 affronta il problema in maniera leggermente diversa, verso la fine della sezione 3.

Quali problemi legali emergono dall'uso di librerie incompatibili con la GPL assieme a software coperto da GPL? (#GPLIncompatibleLibs)

Per poter linkare il proprio programma con una libreria non coperta da eccezione di libreria di sistema, è necessario fornire un permesso esplicito. Sotto sono riportate due note di licenza che permettono di fare questo; una per la GPLv3 e l'altra per la GPLv2. In entrambi i casi, si deve inserire questo testo in ogni file al quale viene garantito questo permesso.

Solo i detentori del copyright del programma possono rilasciare legalmente il proprio software sotto questi termini. Se si è autori unici dell'intero programma, a patto che il proprio datore di lavoro o scuola non ne pretendano il copyright, si è detentori del copyright -- e quindi abilitati ad autorizzare l'eccezione. Ma se si vogliono usare parti di altri programmi coperti da GPL e scritti da altri autori nel proprio codice, non si può garantire l'eccezione in loro vece: bisogna ottenere l'approvazione dei detentori di copyright di quei programmi.

Quando altre persone modificano il programma, non sono tenute a creare la stessa eccezione per il loro codice -- farlo o meno è a loro discrezione.

Se le librerie con cui si vuole linkare sono non libere, si prega di fare riferimento alla sezione sulla creazione di software libero che fa uso di librerie non libere.

Se si usa la GPLv3, si può raggiungere questo obiettivo fornendo un permesso aggiuntivo sotto la sezione 7. La seguente nota di licenza si può usare a questo scopo. Bisogna sostituire tutto il testo tra parentesi con testo appropriato al proprio programma. Se non tutti possono distribuire il codice sorgente per le librerie con cui si vuole linkare, è necessario rimuovere il testo fra parentesi; altrimenti, basta rimuovere le parentesi stesse.

Copyright (C) [anni] [nome del detentore del copyright]

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, see <https://www.gnu.org/licenses>.

Additional permission under GNU GPL version 3 section 7

If you modify this Program, or any covered work, by linking or combining it with [name of library] (or a modified version of that library), containing parts covered by the terms of [name of library's license], the licensors of this Program grant you additional permission to convey the resulting work. {Corresponding Source for a non-source form of such a combination shall include the source code for the parts of [name of library] used as well as that of the covered work.}

Se si usa la GPLv2, si può fornire la propria eccezione ai termini della licenza. La seguente nota di licenza si può usare a questo scopo. Bisogna sostituire tutto il testo tra parentesi con testo appropriato al proprio programma. Se non tutti possono distribuire il codice sorgente per le librerie con cui si vuole linkare, è necessario rimuovere il testo fra parentesi; altrimenti, basta rimuovere le parentesi stesse.

Copyright (C) [anni] [nome del detentore del copyright]

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, see <https://www.gnu.org/licenses>.

Linking [name of your program] statically or dynamically with other modules is making a combined work based on [name of your program]. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

In addition, as a special exception, the copyright holders of [name of your program] give you permission to combine [name of your program] with free software programs or libraries that are released under the GNU LGPL and with code included in the standard release of [name of library] under the [name of library's license] (or modified versions of such code, with unchanged license). You may copy and distribute such a system following the terms of the GNU GPL for [name of your program] and the licenses of the other code concerned{, provided that you include the source code of that other code when and as the GNU GPL requires distribution of source code}.

Note that people who make modified versions of [name of your program] are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU General Public License gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.

Come ottengo i diritti d'autore sul mio programma, allo scopo di rilasciarlo sotto GPL? (#HowIGetCopyright)

Secondo la Convenzione di Berna, per ogni opera scritta il copyright è automaticamente assegnato dal momento in cui l'opera è redatta in una forma non volatile. Di conseguenza non c'è bisogno di fare nulla di speciale per "ottenere" il copyright su quello che si scrive -- fino a quando almeno non ci sia qualcun altro che rivendichi come suo il lavoro.

Ad ogni modo, registrare il copyright nel paese di appartenenza è sempre un'ottima idea: è un'arma in più da usare contro chi indebitamente potesse rivendicare i diritti sull'opera.

C'è poi un caso in cui è possibile che qualcun altro possa rivendicare il copyright sul lavoro, ovvero se si è studenti o lavoratori dipendenti; in questo caso il datore di lavoro o la scuola potrebbero considerare che il lavoro sia stato fatto per loro conto, e che quindi il copyright appartenga a loro. La legittimità di questa rivendicazione dipenderebbe senz'altro dalle circostanze, ossia dalle leggi del paese in questione, dal contratto di lavoro, e dalla particolare mansione svolta all'interno dell'azienda. In caso di dubbi la mossa migliore è sicuramente consultare un avvocato.

Se si ritiene che il datore di lavoro o la scuola di appartenenza potrebbero rivendicare tali diritti, è possibile risolvere il problema mettendo in chiaro le cose: basta ottenere una rinuncia al copyright firmata da un ufficiale autorizzato dell'azienda o della scuola. (Si noti che di solito un professore o un superiore diretto non è autorizzato a firmare simili documenti.)

Cosa dovrei fare nel caso che la mia scuola avesse intenzione di fare di un mio programma un suo software proprietario? (#WhatIfSchool)

Oggi succede che molte università cerchino di aumentare le entrate ponendo delle limitazioni sull'uso della conoscenza e delle tecnologie che sviluppano; effettivamente nel far questo si comportano in maniera analoga alle imprese commerciali. (Si veda "The Kept University", Atlantic Monthly, marzo 2000, per una discussione più generale su questo problema e sui suoi effetti.)

Se si ritiene che esista la possibilità che la scuola di appartenenza possa rifiutarsi di permettere la pubblicazione come software libero di un proprio programma, la cosa migliore da fare è sollevare la questione alle prime fasi di sviluppo del programma. Infatti, più il programma è vicino ad essere un prodotto funzionante e utile, più l'amministrazione della scuola sarà tentata di sottrarlo all'autore e portare a termine il lavoro senza di lui. Invece, ad uno stadio dello sviluppo ancora iniziale, l'autore ha più possibilità di cavarsela.

Insomma noi raccomandiamo che l'autore affronti la questione quando il programma è ancora mezzo incompiuto, dicendo: "Se l'università sarà d'accordo a pubblicare il programma come software libero, allora poterò a termine l'opera". Non si pensi che questo sia una sorta di bluff: per avere la meglio, si deve avere il coraggio di dire: "Il mio programma sarà libero, o non nascerà affatto".

È possibile ottenere istruzioni passo per passo su come applicare la GPL al mio programma? (#CouldYouHelpApplyGPL)

Si prega di fare riferimento alla pagina che spiega come usare la GPL.

Ho sentito dire che qualcuno ha ottenuto una copia di un programma coperto dalla GPL, ma alle condizioni di un'altra licenza. È possibile? (#HeardOtherLicense)

La GNU GPL non dà agli utenti il permesso di annettere altre licenze al programma. Ma il proprietario del copyright di un programma può rilasciarlo sotto diverse licenze contemporaneamente. Una di queste potrebbe essere la GNU GPL.

La licenza contenuta nella copia ottenuta da un utente, posto che questa sia stata allegata dal detentore del copyright e che l'utente abbia ottenuto la copia in modo legittimo, è la licenza che si applica alla suddetta copia.

Vorrei rilasciare un programma che ho scritto sotto la GNU GPL, ma mi piacerebbe anche usare lo stesso codice in programmi non liberi. (#ReleaseUnderGPLAndNF)

Anche se pubblicare un programma non libero è una cosa eticamente poco corretta, non ci sono di certo ostacoli legali se lo si vuol fare. Se si possiede il copyright del codice, lo si può rilasciare sotto varie e non esclusive licenze, in momenti differenti.

Lo sviluppatore di un programma protetto da GPL è da essa vincolato? Può un'azione dello sviluppatore essere mai in violazione della GPL? (#DeveloperViolate)

Se vogliamo essere precisi, la GPL è una licenza rivolta dallo sviluppatore agli altri utenti, nella quale si garantiscono i diritti di questi nell'usare, distribuire e modificare il programma. Lo sviluppatore non è vincolato da essa, e quindi qualunque cosa egli faccia non può "violare" la GPL.

Ad ogni modo, se lo sviluppatore fa qualcosa che costituirebbe una violazione della GPL se fatto da qualcun altro, allora perderebbe di sicuro qualcosa della sua reputazione morale nella comunità.

Può lo sviluppatore di un programma distribuito sotto la GPL darlo in seguito in licenza ad una terza parte per uso esclusivo? (#CanDeveloperThirdParty)

No, perché gli utenti hanno già ricevuto il diritto di usare il programma sotto la GPL, e questo diritto non può essere ritirato.

Posso usare editor di testo protetti da GPL per sviluppare programmi non liberi? Posso usare strumenti protetti da GPL per compilarli? (#CanIUseGPLToolsForNF)

Sì, perché il copyright sugli editor di testo e sugli strumenti di compilazione non si applica anche al codice scritto e compilato con essi.

Alcuni programmi però copiano proprie parti nell'output, per ragioni tecniche -- per esempio, Bison copia un programma (un parser standard) nel suo file di output. In questi casi, il testo copiato nell'output è coperto dalla stessa licenza che lo copre nel codice sorgente. Allo stesso tempo, la parte dell'output derivata dall'input del programma eredita lo stato di copyright dell'input.

Ma nel caso di Bison, questo programma può essere usato anche per sviluppare programmi non liberi. Questo perché abbiamo deciso di permettere esplicitamente l'uso del parser standard di Bison nel suo output, senza restrizioni. Una tale decisione è stata presa perché esistono altri strumenti simili a Bison che permettevano già di essere usati in programmi non liberi.

Si può fare un uso non commerciale (fair use) del codice sorgente di un programma coperto dalla GPL? (#GPLFairUse)

Sì. "Fair use" è ogni uso che non richieda alcuna autorizzazione particolare. Siccome non c'è bisogno del permesso degli autori del programma, è possibile fare un tale uso del codice, a prescindere da quello che gli autori ne hanno detto -- nella licenza o da qualche altra parte, sia che si tratti di una licenza GNU GPL o di un'altra licenza di software libero.

Si noti, ad ogni modo, che non esiste una definizione di fair use che sia la stessa in tutte le parti del mondo; ciò che è considerato tale varia da nazione a nazione.

Può il governo americano rilasciare un programma sotto la GNU GPL? (#GPLUSGov)

Se il programma è stato scritto da impiegati del governo federale degli Stati Uniti nell'arco del proprio impiego, è nel pubblico dominio, quindi privo di copyright. Visto che la GNU GPL è basata sul copyright, un programma del genere non può essere rilasciato sotto la GNU GPL. (Può comunque essere software libero; un programma rilasciato nel pubblico dominio è libero.)

Tuttavia, quando un'agenzia del governo federale degli Stati Uniti assegna il compito di sviluppare software ad appaltatori, la situazione è diversa. L'appalto può richiedere all'appaltatore di rilasciare il software sotto la GNU GPL. (GNU Ada è stato sviluppato secondo queste modalità.) In alternativa, l'appalto può assegnare il copyright all'agenzia governativa, che può a quel punto rilasciare il software sotto la GNU GPL.

Può il governo americano rilasciare miglioramenti per programmi coperti da GPL? (#GPLUSGovAdd)

Sì. Se i miglioramenti sono scritti da impiegati del governo americano nell'ambito del proprio impiego, essi sono nel pubblico dominio. Ciò nonostante, l'intera versione migliorata rimane coperta dalla GNU GPL.

Se il governo americano usa appaltatori per svolgere il lavoro, i miglioramenti stessi possono essere coperti da GPL.

I requisiti imposti dalla GPL per i moduli linkati staticamente e dinamicamente ad un'opera da essa coperta sono diversi? (#GPLStaticVsDynamic)

No. Linkare un lavoro coperto da GPL staticamente o dinamicamente ad altri moduli dà vita ad un'opera combinata basata su un'opera coperta da GPL. Quindi, i termini e le condizioni della GNU General Public License coprono l'intera combinazione. Si veda anche anche Quali problemi legali emergono dall'uso di librerie incompatibili con la GPL assieme a software coperto da GPL?

I requisiti imposti dalla LGPL per i moduli linkati staticamente e dinamicamente ad un'opera da essa coperta sono diversi? (#LGPLStaticVsDynamic)

Allo scopo di ottemperare alla LGPL (qualsiasi versione ancora esistente: v2, v2.1 o v3):

(1) Se si linka staticamente ad una libreria coperta da LGPL, bisogna anche fornire la propria applicazione in formato oggetto (non necessariamente sorgente), così che l'utente abbia la possibilità di modificare la libreria e linkare nuovamente l'applicazione.

(2) Se si linka staticamente ad una libreria coperta da LGPL già presente sul computer dell'utente, non c'è bisogno di trasmettere il codice sorgente della licenza. D'altra parte, se si trasmette in prima persona la libreria eseguibile coperta da LGPL assieme all'applicazione, indipendentemente dalla modalità di link (statico o dinamico), bisogna anche trasmettere il codice sorgente della libreria in uno dei modi stabiliti dalla LGPL.

C'è qualche maniera per poter proteggere con la GPL l'output che gli utenti ottengono usando il mio programma? Per esempio, se il mio programma fosse usato per sviluppare progetti hardware, potrei richiedere che questi progetti debbano essere liberi? (#GPLOutput)

In generale ciò è legalmente impossibile; la legge sul copyright non dà all'autore alcun potere sull'uso dell'output che gli utenti ottengono dai loro dati usando il suo programma. Se l'utente usa il programma per inserirvi e far manipolare i suoi propri dati, il copyright sull'output appartiene a lui, e non all'autore del programma. Più in generale, quando un programma traduce il suo input in qualche altra forma, l'output eredita lo stato del copyright dell'input dal quale è stato generato.

Quindi l'unico caso in cui si ha il diritto di porre restrizioni sull'uso dell'output di un programma è il caso in cui parti sostanziali di esso siano copiate (più o meno) da testo contenuto nel programma. Per esempio, parte dell'output di Bison (vedi sopra) sarebbe coperto dalla GNU GPL, se non avessimo fatto un'eccezione in questo caso specifico.

Si potrebbe far sì che un programma copi a bella posta del testo nel suo output, anche se non ci fosse nessuna ragione tecnica di farlo: ma se quel testo non avesse nessuno scopo pratico, l'utente potrebbe semplicemente cancellarlo dall'output e usare solo la parte rimanente. In questo caso non sarebbe obbligato a sottostare alle condizioni sulla ridistribuzione del testo che il programma copia.

In quali casi l'output di un programma GPL è coperto anch'esso dalla GPL? (#WhatCaseIsOutputGPL)

L'output di un programma non è, in generale, coperto dal copyright sul codice del programma stesso. Quindi la licenza del codice del programma non si applica all'output, in nessuna forma, file, schermate, trasmissioni o video.

Si ha un'eccezione quando il programma mostra a schermo intero testo e/o creazioni artistiche che provengono dal programma stesso, e in questo caso l'output è coperto dal copyright su quel testo o quelle creazioni artistiche. Anche programmi che emettono audio, come i videogiochi, ricadono in questo caso eccezionale.

Se la creazione artistica (o la musica) è sotto GPL, allora la GPL continua a valere indipendentemente da come la si duplica. Tuttavia, potrebbe ancora essere valido il concetto di fair use.

Bisogna ricordare che alcuni programmi, in particolare i videogiochi, possono contenere creazioni artistiche che hanno una licenza separata rispetto al motore del gioco, distribuito sotto GPL. In questi casi è la licenza delle creazioni artistiche che determina le condizioni affinché sia possibile una trasmissione video o streaming. Vedere anche: Si può usare la GPL per qualcosa che non sia software?

Se aggiungo un modulo ad un altro coperto dalla GPL, devo usare la GPL come licenza per il mio modulo? (#GPLModuleLicense)

La GPL dice che l'intero programma risultante dalla combinazione dev'essere rilasciato sotto la GPL. Così il modulo in questione deve essere reso disponibile per l'uso sotto la GPL.

È possibile però concedere dei permessi in più per l'uso del proprio codice: se lo si desidera, si può rilasciare il modulo sotto una licenza più lasca della GPL ma con essa compatibile. La lista delle licenze contiene una lista parziale delle licenze compatibili con la GPL.

Se una libreria è rilasciata sotto la GPL (non la LGPL), significa che qualunque programma che ne faccia uso deve essere disponibile sotto la GPL? (#IfLibraryIsGPL)

Sì, perché il programma si collega alla libreria e quindi all'intera combinazione si applicano le condizioni della GPL. I moduli software che si collegano alla libreria possono essere sotto varie licenze purché compatibili con la GPL, ma il lavoro nel complesso deve essere considerato sotto licenza GPL. Vedere anche la definizione di compatibilità.

Se l'interprete di un linguaggio di programmazione è rilasciato sotto la GPL, questo significa che tutti i programmi scritti per essere da esso interpretati devono essere disponibili sotto licenze compatibili con la GPL? (#IfInterpreterIsGPL)

Se l'interprete si occupa esclusivamente di interpretare un linguaggio, la risposta è no. Il programma interpretato, dal punto di vista dell'interprete, è solo un insieme di dati; una licenza per il software libero come la GPL, basata sulla legge sul copyright, non può porre restrizioni su quali dati vengono usati con l'interprete. Esso può esser fatto funzionare con un qualsiasi input (ovvero con un qualunque programma da interpretare), a completa discrezione dell'utente, e non ci sono limiti sulle licenze che si concedono per tali dati a chicchessia.

Tuttavia, quando l'interprete può fornire "bindings" (collegamenti) ad altri tipi di servizi, tipicamente librerie, il programma interpretato è in effetti linkato ai servizi usati tramite questi collegamenti. Quindi se i servizi sono coperti da GPL, il programma interpretato che li usa deve avere una licenza compatibile con la GPL. La JNI (Java Native Interface) è un esempio di un simile servizio: librerie accedute in tal modo sono collegate dinamicamente col programma Java che le invoca. Queste librerie sono anche linkate con l'interprete. Se l'interprete è linkato staticamente con queste librerie, o se è stato progettato in modo da linkare dinamicamente a queste specifiche librerie, a quel punto anch'esso deve essere rilasciato in maniera compatibile alla GPL.

Un altro caso simile molto comune avviene quando si forniscono con l'interprete delle librerie che sono anch'esse interpretate. Per esempio, Perl è distribuito con molti moduli in Perl, e un'implementazione Java di solito è accompagnata da molte classi Java. Queste librerie ed i programmi che le chiamano sono sempre linkati dinamicamente.

Una conseguenza è che, se si sceglie di usare in un programma dei moduli Perl, o delle classi Java, coperti da GPL, bisogna distribuire il programma con una licenza compatibile con la GPL, indipendentemente dalla licenza usata nell'interprete Perl o Java su cui girerà il programma combinato Perl o Java.

Sto scrivendo un'applicazione per Windows con Microsoft Visual C++ (o Visual Basic) e vorrei rilasciarla sotto la GPL. È permesso dai termini della GPL che il mio programma sia dinamicamente linkato con le librerie di run-time del Visual C++ (o Visual Basic)? (#WindowsRuntimeAndGPL)

Si può linkare il proprio programma a queste librerie, e distribuire il programma compilato agli altri. Quando questo è il caso, le librerie di runtime (esecuzione) sono definite dalla GPLv3 come "Librerie di Sistema". Questo significa che non c'è bisogno di preoccuparsi circa l'inclusione del codice sorgente con il Codice Sorgente Corrispondente del programma. La GPLv2 fornisce un'eccezione simile nella sezione 3.

Non è possibile distribuire queste librerie assieme al programma sotto forma di DLL compilata. Per evitare che distributori privi di scrupoli provino ad usare l'eccezione per Librerie di Sistema come una falla, la GPL afferma che le librerie si possono qualificare come Librerie di Sistema solo quando non vengono distribuite assieme al programma stesso. Se si distribuisce la DLL assieme al programma, questi non sarà più idoneo per l'eccezione; l'unico modo per ottemperare alla GPL a quel punto sarebbe fornire il codice sorgente, cosa impossibile in tal caso.

È possibile scrivere programmi liberi eseguibili solo su Windows, ma non per questo è una buona idea. Questi programmi sarebbero "intrappolati" da Windows, e quindi non fornirebbero alcun contributo al Mondo Libero.

Perché la licenza originale BSD è incompatibile con la GPL? (#OrigBSD)

Perché essa impone un requisito specifico che non è nella GPL: nella fattispecie, tale requisito consiste nell'obbligo della pubblicità del programma. La Sezione 6 della GPLv2 dice:

Non è lecito imporre restrizioni ulteriori al beneficiario nel suo esercizio dei diritti qui garantiti.

La GPLv3 dice qualcosa di simile nella Sezione 10. La clausola pubblicitaria impone un'ulteriore restrizione, ed è quindi incompatibile con la GPL.

La licenza BSD rivisitata non contiene questa clausola, il che elimina il problema.

Quando un programma e i suoi plugin sono considerati un unico programma combinato? (#GPLPlugins)

Dipende da come il programma principale chiama i plugin. Se il programma principale usa fork e exec per chiamarli, e se tra loro c'è una comunicazione profonda che li porta a condividere strutture dati complesse, o a passarsi strutture dati complesse, allora è possibile considerarli come un unico programma combinato. Invece, se un programma principale usa semplicemente fork e exec per chiamare i plugin e non viene stabilita una comunicazione profonda allora i plugin si possono considerare programmi separati.

Se il programma principale è collegato dinamicamente ai plug-in, ed essi effettuano reciproche chiamate a funzione e condividono delle strutture dati, allora si considerano i due come parti di un unico programma combinato. Se il programma principale è collegato dinamicamente ai plug-in, ma la comunicazione è limitata alla chiamata della funzione "main" del plugin con determinate optioni e all'attesa di una risposta, questo è un caso limite.

Usare memoria condivisa per comunicare con strutture di dati complesse è pressoché equivalente a linkare dinamicamente.

Se scrivo un plug-in per un programma protetto da GPL, quali requisiti sono imposti alle licenze che posso usare per distribuire il mio programma? (#GPLAndPlugins)

Si veda questa domanda per capire quando i plugin e un programma principale sono da considerare programmi diversi e quando no.

Se il programma e i plugin sono un unico programma combinato, i plug-in devono essere rilasciati sotto la GPL o sotto una licenza ad essa compatibile, e che quando si distribuiscono i plug-in si devono rispettare le condizioni della GPL. Invece un programma principale separato dai plugin non impone alcun requisito su questi ultimi.

Posso usare la GPL per un plug-in destinato ad un programma non libero? (#GPLPluginsInNF)

Si veda questa domanda per capire quando i plugin e un programma principale sono da considerare programmi diversi e quando no.

Se formano un unico programma combinato, collegare il plug-in GPL col programma principale non libero sarebbe una violazione della GPL. Comunque, è possibile risolvere questo problema legale aggiungendo un'eccezione alla licenza del plug-in, la quale permetta il collegamento col programma non libero in questione.

Per ulteriori dettagli, si veda la domanda Se scrivo programmi che fanno uso di librerie non libere.

Posso rilasciare un programma non libero che è progettato per caricare un plug-in coperto da GPL? (#NFUseGPLPlugins)

Si veda questa domanda per capire quando i plugin e un programma principale sono da considerare programmi diversi e quando no.

Se formano un unico programma combinato, il programma principale deve essere rilasciato sotto la GPL o sotto una licenza ad essa compatibile, e quando si distribuisce il programma principale per l'uso con questo plugin si devono rispettare le condizioni della GPL.

Tuttavia se sono programmi separati allora la licenza del plugin non impone alcun requisito sul programma principale.

Per ulteriori dettagli, si veda la domanda Se scrivo programmi che fanno uso di librerie non libere.

Tu hai un programma sotto GPL a cui vorrei linkare del mio codice per costruire un programma proprietario. Il fatto che io sfrutti il tuo programma mi obbliga a usare la GPL per il mio programma? (#LinkingWithGPL)

Non esattamente. Significa che si deve rilasciare il proprio programma sotto una licenza compatibile con la GPL (più precisamente, compatibile con una o più versioni della GPL accettate da tutto il resto del codice che è parte della combinazione che si linka). La combinazione stessa è quindi disponibile sotto quelle versioni della GPL.

Se è così, c'è qualche speranza che io possa ottenere una licenza del tuo programma sotto LGPL (Lesser GPL)? (#SwitchToLGPL)

Si può chiedere, ma molti autori non cambieranno idea e diranno di no. L'idea della GPL è che se si vuole includere del codice GPL in un programma, anche questo programma deve essere software libero. È pensata per spingere le persone a rilasciare il codice in modo da renderlo disponibile a tutta la comunità.

Si ha sempre la possibilità legale di non usare il programma.

Distribuire un driver non libero che linka con il kernel Linux vìola la GPL? (#NonfreeDriverKernelLinux)

Linux (il kernel nel sistema operativo GNU/Linux) è distribuito sotto la GNU GPL versione 2. Distribuire un driver non libero che linka con Linux viola la GPL?

Si, questa è una violazione, perché effettivamente crea un'opera combinata più grande. Il fatto che stia all'utente combinare i pezzi non cambia la situazione.

Ogni contributore di Linux che detiene copyright su una parte sostanziosa di codice può far sì che la GPL venga rispettata ed incoraggiamo questi ad agire contro coloro che distribuiscono driver per Linux non liberi.

Come posso permettere che ad una mia libreria coperta da GPL vengano linkati moduli proprietari solo per mezzo di un'interfaccia controllata? (#LinkingOverControlledInterface)

Si aggiunga questo testo alla nota di licenza in ogni file della distribuzione, alla fine del testo che dice che il file è distribuito sotto la GNU GPL:

Linking ABC statically or dynamically with other modules is making a combined work based on ABC. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

As a special exception, the copyright holders of ABC give you permission to combine ABC program with free software programs or libraries that are released under the GNU LGPL and with independent modules that communicate with ABC solely through the ABCDEF interface. You may copy and distribute such a system following the terms of the GNU GPL for ABC and the licenses of the other code concerned, provided that you include the source code of that other code when and as the GNU GPL requires distribution of source code and provided that you do not modify the ABCDEF interface.

Note that people who make modified versions of ABC are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU General Public License gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception. If you modify the ABCDEF interface, this exception does not apply to your modified version of ABC, and you must remove this exception when you distribute your modified version.

This exception is an additional permission under section 7 of the GNU General Public License, version 3 (“GPLv3”)

Questa eccezione permette di linkare a moduli rilasciati sotto licenze diverse attraverso l'interfaccia specificata (“ABCDEF”), accertandosi che per gli utenti sia ancora possibile ricevere il codice sorgente come è norma per ogni programma rilasciato sotto GPL.

Solo i detentori del copyright del programma possono autorizzare legalmente quest'eccezione. Se si è autori unici dell'intero programma, a patto che il proprio datore di lavoro o scuola non ne pretendano il copyright, si è detentori del copyright -- e quindi abilitati ad autorizzare l'eccezione. Ma se si vogliono usare parti di altri programmi coperti da GPL e scritti da altri autori nel proprio codice, non si può garantire l'eccezione in loro vece: bisogna ottenere l'approvazione dei detentori di copyright di quei programmi.

Ho scritto un'applicazione linkata con molti altri componenti che hanno diverse licenze. Non mi è chiaro quali siano i requisiti di licenza cui il mio programma deve sottostare. Quali licenze posso usare? (#ManyDifferentLicenses)

Per rispondere a questa domanda, abbiamo bisogno di una lista di tutti i componenti che usa il programma, la licenza di quei componenti e un appunto (poche righe per ogni componente possono bastare) che descriva l'uso che il programma fa di quelle librerie. Ecco due esempi:

  • Per farlo funzionare, il mio programma deve essere linkato alla libreria FOO che è disponibile sotto licenza Lesser GPL.
  • Il mio programma esegue una chiamata di sistema (con una linea di codice che ho scritto io) per far funzionare il programma BAR, che è sotto licenza "GPL ma con il permesso speciale di linkarlo con QUUX".
Qual è la differenza tra un "aggregato" ed altre forme di "versioni modificate"? (#MereAggregation)

Un "aggregato" consiste in un numero di programmi separati distribuiti assieme nello stesso CD-ROM o altro dispositivo. La GPL permette di creare e distribuire un aggregato, anche qualora le licenze degli altri programmi fossero non libere o incompatibili con la GPL. L'unica condizione è che non è possibile rilasciare l'aggregato sotto una licenza che proibisca agli utenti di esercitare i diritti che le licenze dei singoli programmi garantirebbero loro.

Dove tracciare il confine tra due programmi separati ed un programma con due parti? Questa è una questione legale, sulla quale l'ultima parola tocca ai giudici. Noi crediamo che un criterio ragionevole dipende sia dal meccanismo di comunicazione (esecuzione con "exec", pipe, rpc, chiamate di funzione in uno spazio di indirizzamento condiviso, ecc.) che dalla semantica della comunicazione (che genere di informazione è scambiata).

Se i moduli sono inclusi nello stesso eseguibile, sono decisamente lo stesso programma. Se i due moduli sono concepiti per girare linkati assieme in uno spazio di indirizzamento condiviso, questo vuol dire quasi sicuramente fondere due programmi in uno solo.

Al contrario, pipe, uso dei socket e degli argomenti della riga di comando sono meccanismi di comunicazione normalmente usati tra due programmi separati. Quindi, quando sono usati per la comunicazione, i moduli sono programmi separati. Ma se la sintassi della comunicazione è abbastanza intima, e se c'è uno scambio di dati con una struttura complessa, anche questo può essere una base per considerare due moduli come parti di un programma più grande.

Quando si deve discutere se due programmi formano un'opera singola, ha qualche effetto il fatto che il codice sia in uno o più container? (#AggregateContainers)

No, l'analisi del fatto che siano un'opera unica o un aggregato non è condizionata dal coinvolgimento di container.

Perché la FSF richiede che i collaboratori ai programmi sotto il suo copyright debbano trasferire il copyright alla FSF? Se io detengo il copyright di un programma GPL, devo fare lo stesso? Se è così, come? (#AssignCopyright)

I nostri avvocati ci hanno detto che per essere nella migliore posizione per far valere la GPL in tribunale contro i trasgressori, dobbiamo far rimanere il copyright del programma il più semplice possibile. A questo fine chiediamo a ogni collaboratore di cedere il copyright del propri contributi alla FSF, o di recedere dal copyright sui propri contributi.

Chiediamo anche ai collaboratori di ottenere la rinuncia al copyright dai loro impiegati (se ne hanno) così da essere sicuri che questi non rivendichino la proprietà dei loro contributi.

Ovviamente, se tutti i collaboratori rendessero il loro codice di pubblico dominio, non ci sarebbe copyright con il quale far valere la GPL. Così incoraggiamo le persone a darci il copyright dei contributi maggiori, e rendere di pubblico dominio i piccoli cambiamenti.

Se si vuol fare qualcosa di concreto per rafforzare la GPL del proprio programma, probabilmente è una buona idea seguire una strategia simile. Si contatti (preferibilmente in inglese) <licensing@gnu.org> per ottenere maggiori informazioni.

Posso modificare la GPL e creare una licenza modificata? (#ModifyGPL)

È possibile creare versioni modificate della GPL, ma non senza diverse conseguenze pratiche.

Si possono usare i termini legali (possibilmente modificati) della GPL in un'altra licenza, a patto che alla nuova licenza sia dato un nuovo nome, che questa non includa il preambolo della GPL e che si modifichino le istruzioni per l'uso alla fine di renderle chiaramente distinte, senza fare menzione a GNU (anche se la procedura descritta potrebbe essere simile).

Se si vuole usare il preambolo in una licenza modificata, si prega di chiedere autorizzazione (in inglese, se possibile) a <licensing@gnu.org>. Per poter autorizzare una richiesta, abbiamo bisogno di approvare i requisiti della licenza.

Anche se non solleveremo obiezioni legali alla creazione di una licenza modificata in questa maniera poco legittima, speriamo che chi abbia intenzione di farlo possa arrivare alla conclusione di desistere. Una tale licenza è quasi certamente incompatibile con la GNU GPL, e questa incompatibilità impedisce delle utili combinazioni di moduli. La semplice proliferazione di diverse licenze di software libero costituisce già di per sé un fardello.

Invece di modificare la GPL è meglio sfruttare il meccanismo delle eccezioni offerto dalla GPL versione 3.

Se uso un programma che ho ottenuto sotto GNU GPL, sono autorizzato a modificare il codice sorgente in un nuovo programma e quindi a distribuire e vendere il nuovo programma? (#GPLCommercially)

Si è autorizzati a vendere copie del programma modificato, ma solo sotto i termini della GNU GPL. Così, per esempio, si deve rendere disponibile il codice sorgente agli utenti e loro devono essere autorizzati a ridistribuirlo e a modificarlo come descritto dalla GPL.

Questi requisiti sono le condizioni per includere il codice protetto dalla GPL in un programma proprietario.

Posso usare la GPL per qualcosa che non sia software? (#GPLOtherThanSoftware)

Si può usare la GPL per qualsiasi lavoro, se è chiaro cosa costituisce il "codice sorgente" dell'opera. La GPL lo definisce come "the preferred form of the work for making changes in it" ("la forma preferenziale usata per modificare un'opera").

Comunque, per manuali, libri di testo o più in generale qualsiasi tipo di lavoro che ha come scopo la spiegazione di un soggetto, si raccomanda l'uso della GFDL piuttosto che della GPL.

Come funziona la cooperazione tra LGPL e Java? (#LGPLJava)

Si faccia riferimento a questo articolo per ulteriori dettagli. Funziona come progettato, inteso ed previsto.

Prendiamo in esame questa situazione: 1) X rilascia la versione 1 di un progetto sotto GPL. 2) Y contribuisce allo sviluppo della versione 2 con cambiamenti e nuovo codice basato sulla prima versione. 3) X vuole cambiare la licenza della versione 2 in una licenza non-GPL. X deve chiedere il permesso a Y? (#Consider)

Sì. Y è stato obbligato a rilasciare la sua versione sotto GNU GPL, basandosi sulla prima versione di X. Nessuno può obbligare Y a accettare altre licenze per il suo codice. Quindi, X deve avere il permesso di Y per rilasciare il codice sotto un'altra licenza.

Mi piacerebbe incorporare del software coperto dalla GPL nel mio sistema proprietario. Non ho permessi su quel software al di là di quelli concessi dalla GPL. Lo posso fare? (#GPLInProprietarySystem)

Non è possibile incorporare del software rilasciato sotto licenza GPL in un sistema proprietario. L'obiettivo della licenza GPL è quello di garantire a chiunque la libertà di copiare, redistribuire, capire e modificare un programma. Se fosse possibile incorporare del software GPL all'interno di un sistema non libero, l'azione avrebbe l'effetto di rendere non libero anche quel software.

Un sistema che incorporasse un programma coperto da GPL diventa esso stesso un'estensione di quel programma. La GPL afferma che qualsiasi versione estesa di un programma deve essere rilasciata sotto la GPL, sempre che questa sia comunque rilasciata. Questo per due ragioni: per essere sicuri che gli utenti che prelevano quel software ottengano la libertà a cui hanno diritto, e per incoraggiare le persone a redistribuire i miglioramenti che dovessero apportare.

Comunque, in molti casi è possibile distribuire il software coperto da GPL accanto ad un sistema proprietario. Per farlo in modo valido, è necessario assicurarsi che i programmi liberi e i non liberi del sistema comunichino tra di loro ma siano tra di loro indipendenti, insomma che non siano combinati in modo da poter essere effettivamente considerati un solo programma.

La differenza tra questo concetto e quello di "incorporamento" di software GPL è in parte una questione di sostanza e in parte di forma. La parte sostanziale è: se due programmi sono combinati in maniera che essi diventino due parti dello stesso programma, allora non è possibile definirli come due programmi distinti. In questo caso la GPL deve coprire l'intero sistema.

Se questi due programmi rimangono invece ben separati, come possono esserlo il compilatore e il kernel, o un editor ed una shell, allora sono trattabili come due programmi distinti -- ma occorre farlo in maniera corretta. La questione è del tipo: come presentare ciò che si sta facendo. Perché preoccuparsene? Per esser sicuri che gli utenti capiscano chiaramente lo status libero del software coperto da GPL all'interno dell'insieme di programmi.

Se qualcuno dovesse distribuire software coperto da GPL dichiarandolo "parte di" un sistema che gli utenti sanno essere parzialmente proprietario, quegli utenti potrebbero non aver certezza dei propri diritti riguardo al software coperto da GPL. Ma se loro sono coscienti di aver ricevuto un programma libero insieme ad un altro programma, come due parti separate, i loro diritti saranno chiari.

Vorrei incorporare software coperto da GPL nel mio sistema proprietario. Posso farlo inserendo un modulo “wrapper” rilasciato sotto una licenza permissiva compatibile con la GPL (come la licenza X11) tra la parte coperta da GPL e quella proprietaria? (#GPLWrapper)

No. La licenza X11 è compatibile con la GPL, quindi si può aggiungere un modulo ad un programma coperto da GPL e rilasciarlo sotto la licenza X11. Ma se si volessero incorporare entrambi in un programma più grande, quell'insieme includerebbe la parte coperta da GPL, e quindi dovrebbe essere rilasciato complessivamente sotto la GNU GPL.

Il fatto che un modulo proprietario A comunichi con un modulo coperto da GPL C solo attraverso il modulo coperto da licenza X11 B è legalmente irrilevante; ciò che conta è il fatto che il modulo C sia incluso nel complesso.

Dove posso informarmi ulteriormente circa la GCC Runtime Library Exception? (#LibGCCException)

La GCC Runtime Library Exception (eccezione per librerie di runtime/esecuzione di GCC) copre libgcc, libstdc++, libfortran, libgomp, libdecnumber, ed altre librerie distribuite assieme a GCC. Questa eccezione è stata creata per permettere alla gente di distribuire programmi compilati da GCC sotto termini di loro scelta, anche quando porzioni di queste librerie sono incluse nell'eseguibile come parte del processo di compilazione. Per saperne di più, si prega di leggere le nostre Domande Ricorrenti su GCC Runtime Library Exception.

Vorrei modificare dei programmi coperti da licenza GPL e linkare i medesimi con le librerie di portabilità della Money Guzzler Inc. Non posso distribuire i codici sorgenti di queste librerie, cosicché qualsiasi utente volesse modificare quelle versioni, dovrebbe procurarsi altrimenti quelle librerie. Per quale motivo la GPL non permette questa operazione? (#MoneyGuzzlerInc)

Ci sono due ragioni. Prima, una di carattere generale. Se permettessimo che una società A facesse un file proprietario e la compagnia B distribuisse software coperto da GPL linkato insieme a quel file, gli effetti di questa azione provocherebbero nella GPL un buco grosso come una casa. Darebbe infatti carta bianca a chi volesse impedire l'accesso al sorgente di qualunque modifica o estensione a software coperto da GPL.

Dare a tutti gli utenti l'accesso al codice sorgente è uno dei nostri obiettivi, per cui questa conseguenza è sicuramente qualcosa che noi vogliamo evitare.

Più direttamente, le versioni dei programmi linkati insieme alle librerie Money Guzzler non sarebbero realmente software libero per come intendiamo noi il termine. Essi non arriverebbero nella forma, quella completa dei sorgenti, che permette agli utenti di cambiare e ricompilare il programma.

Se la licenza per un modulo Q ha un requisito incompatibile con la GPL, ma il requisito viene applicato solo quando Q viene distribuito da solo, e non quando Q è incluso in un programma più grande, questo è sufficiente per rendere la licenza compatibile con la GPL? Posso combinare o linkare Q con un programma coperto da GPL? (#GPLIncompatibleAlone)

Se un programma P viene rilasciato sotto la GPL, *ogni sua minima parte* può essere usata sotto la GPL. Se ad esso viene integrato un modulo Q, e si rilascia la combinazione di P+Q sotto la GPL, P+Q può essere usato sotto la GPL. Una parte di P+Q è Q. Quindi rilasciare P+Q sotto la GPL significa che ogni minima parte di Q può essere usata sotto la GPL. In altre parole, un utente che ottiene P+Q sotto la GPL può cancellare P ed usare il singolo Q sotto la GPL.

Se la licenza del modulo Q permette di ottenere il permesso per fare ciò, tale licenza si può dire compatibile compatibile con la GPL. Altrimenti, la licenza non è compatibile con la GPL.

Se la licenza di Q afferma in termini dubbi che è necessario fare alcune cose (non compatibili con la GPL) quando si ridistribuisce Q da solo, la licenza non permette di distribuire Q sotto la GPL. Ne risulta che non è possibile rilasciare P+Q sotto la GPL, e quindi non è possibile linkare o combinare P con Q.

Posso rilasciare una versione modificata di un programma coperto da GPL solo in formato eseguibile? (#ModifiedJustBinary)

No. L'obiettivo della GPL è rendere tutte le versioni modificate software libero -- che significa, nello specifico, che il codice sorgente della versione modificate debba essere a disposizione degli utenti.

Ho scaricato dalla rete solo l'eseguibile. Se ne distribuisco delle copie, devo ottenere il sorgente e distribuire anche quello? (#UnchangedJustBinary)

Sì. La regola generale è, se si distribuiscono eseguibili, bisogna anche distribuire il corrispondente codice sorgente al completo. L'eccezione per il caso nel quale fosse stata ricevuta un'offerta scritta per il codice sorgente è piuttosto limitata.

Voglio distribuire gli eseguibili di un programma senza accompagnarli con i codici sorgenti. Posso rendere disponibili i sorgenti via FTP anziché per posta? (#DistributeWithSourceOnInternet)

La versione 3 della GPL permette questo; si faccia riferimento all'opzione 6(b) per dettagli approfonditi. Sotto la versione 2, si è certamente liberi di offrire il codice sorgente sotto FTP, dal quale la maggior parte degli utenti potranno scaricarlo. Tuttavia, se un utente fa richiesta di ricevere il codice sorgente in forma fisica via posta, è necessario adempiere ad essa.

Se si distribuiscono eseguibili via FTP, anche il codice sorgente dovrebbe essere distribuito via FTP.

Un mio amico mi ha dato una copia di un eseguibile a cui è annessa un'offerta del codice sorgente. Posso usare l'offerta per ottenere il sorgente? (#RedistributedBinariesGetSource)

Si, è possibile. L'offerta deve essere aperta a tutti coloro che sono in possesso di una copia dell'eseguibile da essa accompagnato. Questo è il motivo per il quale la GPL afferma che il proprio amico debba allegare una copia dell'offerta assieme alla copia dell'eseguibile -- perché se ne possa trarre vantaggio.

Posso mettere gli eseguibili sul mio server internet e i sorgenti su un altro server internet? (#SourceAndBinaryOnDifferentSites)

Sì. La sezione 6(d) permette questo. Comunque, è necessario fornire istruzioni chiare che la gente può seguire per ottenere il codice sorgente, e bisogna assicurarsi che il codice sorgente rimanga disponibile per l'intero periodo in cui si distribuiscono gli eseguibili.

Voglio distribuire una versione estesa di un programma protetto da GPL, in formato eseguibile. È sufficiente distribuire i codici sorgenti della versione originale? (#DistributeExtendedBinary)

No, è necessario fornire il codice sorgente corrispondente agli eseguibili. Sorgenti corrispondenti significa i sorgenti dai quali l'utente possa eventualmente ricostruire lo stesso eseguibile della distribuzione.

Parte dell'idea stessa del software libero è che gli utenti devono avere accesso al codice sorgente per il programma che usano. Coloro che usano la versione modificata, devono avere dunque i sorgenti di quella versione.

Uno degli obiettivi principali della GPL è costruire il Mondo Libero essendo sicuri che i miglioramenti ad un programma siano essi stessi liberi. Se viene rilasciata una versione potenziata di un programma coperto da GPL, ebbene i codici sorgenti di quella versione migliorata devono essere rilasciati sotto GPL.

Voglio distribuire gli eseguibili, ma distribuire tutti i sorgenti non è conveniente. Che ne pensate della possibilità di rilasciare agli utenti solo i file che descrivono le differenze dalla versione "standard" insieme agli eseguibili? (#DistributingSourceIsInconvenient)

Questa è una domanda ben intenzionata, ma tale metodo di offrire i sorgenti non è realmente efficace.

Un utente che volesse i sorgenti tra un anno potrebbe non essere in grado di ottenere una versione corretta da un altro sito, per quella data. Il sito di distribuzione standard potrebbe avere una nuova versione, e le differenze rilasciate insieme agli eseguibili probabilmente non funzionerebbero più con la nuova versione.

Per questo è necessario fornire sempre i sorgenti completi e non solo le differenze, insieme agli eseguibili.

Posso rendere disponibili gli eseguibili su un server di rete, ma inviare i sorgenti solo a coloro che ne fanno esplicita richiesta? (#AnonFTPAndSendSources)

Se si vuole rendere il codice oggetto disponibile su un server, è necessario fornire anche il Codice Sorgente Corrispondente su un server. Il modo più facile per farlo sarebbe pubblicare entrambi sullo stesso server, ma se preferibile, si possono in alternativa fornire delle istruzioni per lo scaricamento del codice sorgente da un altro server o version control system. Indipendentemente dalla scelta, il sorgente deve essere accessibile allo stesso modo del codice oggetto, come specificato dalla sezione 6(d) della GPLv3.

Il codice sorgente fornito deve corrispondere esattamente agli eseguibili. Nello specifico, bisogna accertarsi che esso corrisponda alla stessa versione del programma -- non una precedente e non una successiva.

Come posso essere sicuro che tutti coloro che scaricano gli eseguibili scarichino anche i sorgenti? (#HowCanIMakeSureEachDownloadGetsSource)

Non è necessario assicurarsi di questo. Un volta resi disponibili per certo i sorgenti e gli eseguibili in modo che gli utenti possano vedere ciò che è disponibile e prendere quello che vogliono, chi distribuisce il programma è a posto. Scaricare o meno i sorgenti è a quel punto una decisione dell'utente.

I nostri requisiti per coloro che redistribuiscono esistono per assicurarsi che gli utenti possano ottenere i sorgenti, non per forzare gli utenti a scaricare i sorgenti controvoglia.

La GPL richiede di fornire codice sorgente che, quando compilato, risulta in un eseguibile il cui codice hash è lo stesso dell'eseguibile da me distribuito? (#MustSourceBuildToMatchExactHashOfBinary)

Codice sorgente completamente corrispondente significa il codice sorgente a partire dal quale sono stati compilati gli eseguibili, ma questo non implica che gli strumenti debbano essere capaci di creare un eseguibile che ha lo stesso identico codice hash dell'eseguibile distribuito. In alcuni casi è (quasi) impossibile fare in modo che l'eseguibile compilato abbia lo stesso codice hash di quello distribuito -- si considerino i seguenti esempi: un sistema potrebbe inserire la data attuale negli eseguibili; oppure il programma potrebbe essere stato compilato da una versione diversa (magari non pubblica) del compilatore.

Un'azienda sta eseguendo su un sito una versione modificata di un programma coperto da GPL. La GPL richiede che questa ne rilasci il sorgente? (#UnreleasedMods)

La GPL permette a tutti di creare una versione modificata e di usarla senza mai distribuirla agli altri. Quello che sta facendo questa società ne è un caso particolare, e quindi la società non è obbligata a rilasciare il codice sorgente modificato. La situazione è diversa se il programma modificato è rilasciato sotto rilasciato sotto le condizioni della GNU Affero GPL.

Questa situazione è come se un sito web contiene o ospita collegamenti a programmi GPL separati che sono distribuiti all'utente quando visita il sito (spesso scritti in JavaScript, ma anche in altri linguaggi). In questa situazione il codice sorgente dei programmi che vengono distribuiti deve essere fornito all'utente sotto le condizioni della GPL.

Un'azienda sta eseguendo su un sito una versione modificata di un programma coperto da GNU Affero GPL (AGPL). La AGPL richiede che questa ne rilasci il sorgente? (#UnreleasedModsAGPL)

La GNU Affero GPL richiede che le versioni modificate del software offrano a tutti gli utenti che interagiscono con esso tramite una rete l'opportunità di ricevere il sorgente. Quel che l'azienda sta facendo rientra in questo caso, quindi l'azienda deve rilasciare il codice sorgente modificato.

L'uso interno da parte di un'organizzazione o società conta come "distribuzione"? (#InternalDistribution)

No, in questo caso l'organizzazione sta soltanto facendo delle copie per sé stessa. A conseguenza di ciò, una società o altra organizzazione può sviluppare una versione modificata ed installare quella versione attraverso le proprie strutture, senza dare allo staff il permesso di rilasciare al pubblico quella versione modificata.

Tuttavia, quando l'organizzazione trasferisce delle copie ad altre organizzazioni o individui, questo costituisce distribuzione. Nello specifico, fornire delle copie ad appaltatori per utilizzo extra-sede costituisce distribuzione.

Se qualcuno ruba un CD contenente una versione di un programma coperto da GPL, la GPL dà al ladro il diritto di ridistribuire quella versione? (#StolenCopy)

Se la versione è stata anche rilasciata altrove, il ladro probabilmente ha il diritto di farne delle copie e ridistribuirle sotto la GPL, ma nel caso sia stato incarcerato per il furto del CD, potrebbe dover aspettare il rilascio prima di farlo.

Se la versione in questione non è stata pubblicata ed è considerata dalla società un segreto industriale, pubblicarla potrebbe essere una violazione della legge sul segreto industriale, a seconda delle altre circostanze -- la GPL non ha nulla da dire a riguardo. Se la società decidesse di rilasciare la versione continuando a considerarla segreto industriale, a quel punto violerebbe la GPL, ma se la società non ha rilasciato questa versione, non è avvenuta alcuna violazione di questo genere.

E se una società distribuisse una copia come segreto industriale? (#TradeSecretRelease)

Se la società distribuisce a qualcuno una copia sostenendo che sia segreto industriale, la società sta violando la GPL e dovrà cessare la distribuzione. Si noti la differenza tra questo caso e quello del furto sopra descritto: quando una copia viene rubata, non è la società a distribuirla intenzionalmente, quindi in quel caso la società non ha violato la GPL.

Per quale motivo alcune librerie GNU sono rilasciate sotto la normale licenza GPL invece che sotto la LGPL (Lesser GPL)? (#WhySomeGPLAndNotLGPL)

Usare la Lesser GPL per una qualsiasi libreria costituisce un passo indietro per il software libero. Significa che abbandoniamo parzialmente il nostro intento di difendere le libertà degli utenti, ed alcuni dei requisiti di condividere ciò che viene costruito a partire da software coperto da GPL. Di per loro, questi cambiamenti sono negativi.

A volte un piccolo passo indietro può essere una buona strategia. A volte, usare la LGPL per una libreria potrebbe portare ad una maggior adozione di quella libreria, e quindi a più miglioramenti, più supporto per il software libero, e via dicendo. In larga scala, il risultato ottenuto potrebbe essere positivo per il software libero. Ma quante volte potrebbe succedere? Possiamo solo congetturare.

Sarebbe bello poter provare la LGPL su ogni libreria per un po', vedere se è d'aiuto, e tornare alla GPL se la LGPL non è stata d'aiuto. Ma non è possibile. Una volta usata la LGPL per una libreria, cambiare sarebbe difficile.

Quindi decidiamo quale licenza usare per ogni libreria caso per caso. Abbiamo una lunga spiegazione su come giudichiamo la questione.

Il fatto che un certo programma GNU sia rilasciato sotto GPL non ci permette di usarlo nel nostro progetto di sviluppo di software proprietario. Potete fare un'eccezione per noi? Questo potrebbe significare allargare il bacino di utenza per quel programma. (#WillYouMakeAnException)

Spiacenti, ma non facciamo questo tipo di eccezioni. Non sarebbe giusto.

Massimizzare il numero di utenti non è il nostro scopo. Piuttosto, quello che cerchiamo di fare è dare al maggior numero di persone possibile le libertà fondamentali. In generale, i progetti basati su software proprietario, ostacolano, piuttosto che aiutare, la causa della libertà.

Occasionalmente possiamo fare delle eccezioni alla licenza per assistere un progetto che stia producendo del software libero sotto una licenza che non sia la GPL. In ogni caso, dobbiamo comunque valutare il motivo per il quale questa eccezione possa realmente fare del bene alla causa del software libero.

Inoltre facciamo talvolta delle modifiche ai termini che definiscono la distribuzione di un pacchetto, quando il cambiamento ci sembra chiaramente il modo giusto per servire la causa del software libero, ma siamo sempre molto cauti su questo, e per farlo deve esserci presentata un'argomentazione veramente convincente.

Per quale motivo i programmi dovrebbero riportare la dicitura: "Version 3 of the GPL or any later version"? (#VersionThreeOrLater)

Con il passare del tempo, ad intervalli di anni, noi apportiamo delle modifiche alla GPL -- talvolta per renderla più chiara, altre per permettere certi tipi di uso precedentemente non permessi, altre volte ancora per rendere più rigoroso un determinato requisito. (Gli ultimi due cambiamenti sono del 2007 e del 1991.) Usare questo "puntatore indiretto" in tutti i programmi fa sì che sia per noi possibile cambiare i termini della distribuzione sull'intera collezione di software GNU, non appena dovessimo, appunto, aggiornare la GPL.

Se ogni programma non riportasse questo puntatore indiretto, saremmo costretti a discutere il cambiamento per tutta la sua interezza con i numerosi detentori dei diritti d'autore, cosa, questa, virtualmente impossibile. In pratica, la possibilità mantenere nel tempo dei termini di distribuzione uniformi per il software GNU sarebbe nulla.

Supponiamo che un programma riporti la dicitura "Version 3 of the GPL or any later version" e che venga rilasciata una nuova versione della GPL. Se la nuova versione della GPL offrisse dei permessi addizionali, questi permessi sarebbero dunque disponibili immediatamente a tutti gli utenti di quel programma. Ma se la nuova versione della GPL avesse un requisito meno permissivo, questa non restringerà l'uso della versione corrente del programma, in quanto questa può comunque essere ancora utilizzata secondo i dettami della versione 3. Quando un programma dice "Version 3 of the GPL or any later version", agli utenti sarà sempre permesso usarlo o perfino modificarlo, secondo i termini della GPL versione 2 -- perfino dopo che versioni successive della GPL fossero rilasciate.

Ma se un requisito meno permissivo di una nuova versione della GPL non deve essere osservato, come può questo essere in qualche modo utile? Non appena la versione 4 della GPL sarà resa disponibile, gli sviluppatori della maggior parte del programmi rilasciati sotto GPL, rilasceranno le loro successive versioni specificando "Version 4 of the GPL or any later version". Da quel momento gli utenti dovranno seguire i requisiti più rigorosi della GPL versione 4, per le versioni successive del programma.

Comunque gli sviluppatori non saranno obbligati a fare questo; i programmatori potranno continuare a permettere l'uso delle precedenti versioni della GPL, se questo è quello che preferiscono.

Usare una licenza dicendo che un particolare programma può essere usato solo sotto la versione più recente della GNU GPL è una buona idea? (#OnlyLatestVersion)

Il motivo per cui non farlo è che potrebbe un domani risultare nel ritrattare automaticamente alcuni permessi precedentemente concessi agli utenti.

Si supponga che un programma sia stato rilasciato nel 2000 sotto "la versione più recente della GPL". All'epoca, la gente potrebbe averlo usato sotto GPLv2. Il giorno in cui abbiamo pubblicato la GPLv3 nel 2007, tutti si sarebbero all'improvviso sentiti in dovere di usarlo invece sotto GPLv3.

Alcuni utenti potrebbero non aver mai sentito parlare della GPL versione 3 -- eppure sarebbe stato richiesto loro di usarla. Potrebbero aver violato la licenza del programma senza volerlo solo perché non sapevano della nuova versione. Non è un bel modo di trattare la gente.

Pensiamo che ritirare permessi già garantiti sia sbagliato, a patto che non si abbia a che fare con una violazione. Se la propria libertà può essere revocata, non è davvero libertà. Quindi, se si ottiene una copia di una versione di un programma sotto una versione di una licenza, si deve sempre poter godere dei diritti garantiti da quella versione della licenza. Rilasciare sotto la “GPL versione N o successiva” sostiene quel principio.

Perché non usate la GPL per i manuali? (#WhyNotGPLForManuals)

È possibile usare la GPL per un manuale, ma la GNU Free Documentation License (GFDL) è una scelta migliore per i manuali.

La GPL è stata concepita per i programmi; essa contiene molte complesse clausole che sono importanti per i programmi, ma che non hanno alcun peso nei riguardi di un libro o di un manuale. Per esempio, chiunque pubblichi un libro stampato è costretto ad includere il "codice sorgente" del libro o, in assenza di questo, ad offrire di inviare al lettore una copia di questo.

Per contro, la GFDL ha clausole che aiutano gli editori di manuali liberi a trarre profitto da essi -- note in copertina, per esempio. Le regole speciali per le sezioni degli "Endorsement" (le approvazioni da terze parti) rendono possibile l'utilizzo della GFDL per standard ufficiali. Questo permetterebbe l'esistenza di versioni modificate, che però non potranno essere chiamate "lo standard".

Usando la GFDL, permettiamo modifiche nei testi di manuali che trattano argomenti tecnici. Poter cambiare le parti tecniche è importante, perché per coloro che cambiano un programma deve anche essere possibile cambiare la documentazione corrispondente. La libertà di fare questo è un imperativo etico.

I nostri manuali includono anche sezioni che affermano la nostra posizione politica circa il software libero. Chiamiamo queste sezioni "invarianti", così da non permetterne la modifica o rimozione. La GFDL pone delle condizioni per queste "sezioni invarianti".

Cosa implica rilasciare font sotto GPL? (#FontException)

La concessione di licenze per font è un problema complesso e degno di seria considerazione. La seguente eccezione di licenza è sperimentale ma approvata per l'uso generale. Accogliamo suggerimenti relativi a questo tema -- se interessati, si consiglia di leggere questo saggio e di scrivere (possibilmente in inglese) a licensing@gnu.org.

Per usare quest'eccezione, bisogna aggiungere il seguente testo alla nota di licenza di ogni file della distribuzione (quando possibile), alla fine del testo che afferma che il file è distribuito sotto la GNU GPL:

As a special exception, if you create a document which uses this font, and embed this font or unaltered portions of this font into the document, this font does not by itself cause the resulting document to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the document might be covered by the GNU General Public License. If you modify this font, you may extend this exception to your version of the font, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.

Sto scrivendo un sistema di gestione dei siti (chiamato da alcuni “content management system”, sistema di gestione dei contenuti), o qualche altra applicazione che genera dei siti a partire da modelli (templates). Che licenza dovrei usare per quei modelli? (#WMS)

I modelli sono di poco conto e quindi non vale la pena proteggerli con il copyleft. Usare il copyleft su opere minori di solito non è problematico, ma i modelli rappresentano un caso speciale, in quanto sono combinati ai dati forniti dagli utenti dell'applicazione e la combinazione viene distribuita. Quindi, consigliamo di rilasciare i modelli sotto i termini di una semplice licenza permissiva.

Alcuni modelli fanno delle chiamate a funzioni JavaScript. Visto che il codice JavaScript spesso è non banale, vale la pena rilasciarlo sotto copyleft. Visto che i modelli saranno combinati con i dati degli utenti, è possibile che la combinazione di modelli+dati utente+JavaScript potrebbe essere considerata come un'opera unica dalla legge sul diritto d'autore. Bisogna tracciare una linea tra il codice JavaScript (copyleft), ed il codice utente (di solito rilasciato sotto termini incompatibili).

Un diagramma del contenuto sopra descritto

Ecco un'eccezione per codice JavaScript che fa questo:

As a special exception to the GPL, any HTML file which merely makes function calls to this code, and for that purpose includes it by reference shall be deemed a separate work for copyright law purposes. In addition, the copyright holders of this code give you permission to combine this code with free software libraries that are released under the GNU LGPL. You may copy and distribute such a system following the terms of the GNU GPL for this code and the LGPL for the libraries. If you modify this code, you may extend this exception to your version of the code, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.

Posso rilasciare sotto la GPL un programma sviluppato usando strumenti non liberi? (#NonFreeTools)

I programmi usati per modificare, compilare, studiare o registrare il codice sorgente di solito non hanno niente a che fare con la licenza di quel particolare codice sorgente.

Tuttavia, un problema potrebbe emergere dal link di librerie non libere con il codice sorgente. Farlo non preclude il rilascio del codice sotto la GPL, ma se le librerie non rientrano nell'eccezione per “system library” (librerie di sistema), è necessario allegare una nota esplicita che da il permesso di linkare ad esse il proprio programma. La domanda sull'uso di librerie incompatibili con la GPL offre ulteriori informazioni su come farlo.

Esistono traduzioni della GPL? (#GPLTranslations)

Sarebbe utile tradurre la GPL in altre lingue, oltre all'inglese. Alcuni hanno persino scritto delle traduzioni e ce le hanno mandate, ma non abbiamo osato approvarle come ufficialmente valide: rappresentano un rischio così grande che non osiamo accettarle.

Un documento legale è in un certo senso come un programma. Tradurlo è come tradurre un programma da un dato linguaggio e da un dato sistema operativo ad un altro: soltanto una persona esperta di entrambi può farlo -- e anche in questo caso, sussiste il rischio di introdurre un bug.

Se dovessimo approvare, ufficialmente, una traduzione della GPL, daremmo ad ognuno il permesso di fare qualsiasi cosa la traduzione dica. Se la traduzione è completa e accurata, non c'è problema; ma se c'è un errore nella traduzione, il risultato potrebbe essere un disastro al quale non saremmo in grado di rimediare.

Se c'è un bug in un programma, possiamo rilasciarne una nuova versione, e alla fine la vecchia versione sparirà più o meno del tutto dalla circolazione; ma una volta che abbiamo dato a tutti il permesso di agire secondo una particolare traduzione della GPL, non abbiamo modo di togliere il permesso se più tardi scopriamo che essa conteneva un baco.

Dei volontari a volte si offrono di svolgere il lavoro di traduzione al posto nostro. Se il problema consistesse nel trovare qualcuno per svolgere il lavoro, questa sarebbe la soluzione. Ma il problema reale è costituito dal rischio di un errore, e offrirsi di fare il lavoro non evita il rischio. Non possiamo autorizzare una traduzione scritta da qualcuno che non sia un esperto di questioni legali.

Dunque, al momento, non approviamo le traduzioni della GPL come globalmente valide e vincolanti. Invece, ci muoviamo su due fronti:

  • Indirizzando le persone alle traduzioni non ufficiali. Ciò significa che diamo il permesso di scrivere traduzioni della GPL, ma che non le approviamo come legalmente valide e vincolanti.

    Una traduzione non approvata non ha forza legale, e ciò deve essere indicato esplicitamente. La forma preferita è la seguente:

    Questa traduzione della GPL è informale, e non è stata approvata ufficialmente dalla Free Software Foundation come traduzione valida. Per essere completamente sicuri dei diritti e dei doveri derivanti dalla presente licenza, si consulti la GPL originaria (in inglese).

    Tuttavia, una traduzione, anche se non approvata, può fornire suggerimenti su come interpretare la versione inglese della GPL, e ciò è sufficiente per molti utenti.

    Le imprese che usano software GNU in una attività commerciale, e chi distribuisce del software scaricabile da un server FTP pubblico, devono controllare la vera GPL in inglese per assicurarsi di ciò che quest'ultima permette di fare.

  • Pubblicando traduzioni valide solo per un singolo paese

    Stiamo valutando l'idea di pubblicare delle traduzioni ufficialmente valide solo per uno stato. In questo modo un eventuale errore si limiterà ad un solo paese, e il danno non sarà eccessivo.

    Ci vogliono comunque un'esperienza e uno sforzo considerevoli da parte di un legale capace e vicino alle nostre idee per scrivere una traduzione, quindi al momento non siamo in grado di promettere questo tipo di traduzioni.

Se l'interprete di un linguaggio di programmazione ha una licenza che lo rende incompatibile con la GPL, posso usarlo per eseguire dei programmi coperti dalla GPL? (#InterpreterIncompat)

Quando l'interprete si limita ad interpretare un linguaggio, la risposta è sì. Il programma interpretato, per l'interprete, è solo un insieme di dati: la GPL non pone restrizioni sugli strumenti usati per processare il programma.

Tuttavia, quando l'interprete viene esteso per fornire dei "binding" ad altri servizi (spesso, ma non necessariamente, a delle librerie), il programma interpretato è effettivamente linkato ai servizi di cui si avvale tramite questi "binding". Un esempio di questi servizi è la JNI, o Java Native Interface; le librerie usate in questo modo sono linkate dinamicamente con i programmi Java che le chiamano.

Dunque, se questi servizi sono rilasciati sotto una licenza incompatibile con la GPL, la situazione è uguale agli altri tipi di link con una libreria incompatibile con la GPL. Il che implica che:

  1. Se state scrivendo del codice e lo rilasciate sotto la GPL, potete indicare un'esplicita eccezione dando il permesso di linkarlo con questi servizi incompatibili con la GPL.
  2. Se avete scritto e rilasciato un programma sotto la GPL, e lo avete progettato per lavorare specificamente con i suddetti servizi, ciò può essere inteso come un'eccezione implicita che dà il permesso di linkarlo ad esse. Ma se intendete effettivamente dare questo permesso, è meglio che lo scriviate esplicitamente.
  3. Non potete prendere il codice GPL di qualcun altro ed utilizzarlo in questo modo, o aggiungervi la suddetta eccezione. Soltanto i detentori dei diritti d'autore di quel codice possono aggiungere l'eccezione.
Chi ha il potere di far valere la GPL? (#WhoHasThePower)

Poiché la GPL è una licenza basata sul diritto d'autore, sono i detentori di tali diritti che hanno il potere di far valere la GPL. Se ci si accorge di una violazione della GPL, si devono informare gli sviluppatori del software coinvolto, i quali sono o possono facilmente raggiungere i detentori dei diritti d'autore. Ulteriori informazioni su come segnalare violazioni della GPL.

In un linguaggio orientato agli oggetti come Java, se utilizzo una classe coperta dalla GPL senza modificarla, e ne creo una sottoclasse, in che modo il programma risultante è affetto dalla GPL? (#OOPLang)

Creare una sottoclasse si configura come lavoro derivato: di conseguenza i termini della GPL si applicano a tutto il programma risultante dalla creazione di una classe figlia della classe coperta da GPL.

Se porto il mio programma su GNU/Linux, devo rilasciarlo come software libero coperto dalla GPL o da qualche altra licenza libera? (#PortProgramToGPL)

In generale, la risposta è no -- non è un obbligo legale. Per essere più specifici, la risposta dipende da quali librerie intendete usare e quali sono le rispettive licenze. La maggior parte delle librerie di sistema sono coperte o dalla GNU Lesser GPL, o dalla GPL con un'esplicita eccezione che permette di linkare la libreria ad altri software qualsiasi sia la licenza con cui vengono rilasciati. Queste librerie possono essere usate in programmi non liberi; ma nel caso della Lesser GPL, vi sono alcuni doveri che dovete rispettare.

Alcune librerie sono rilasciate unicamente sotto la GNU GPL; se si vogliono usare queste librerie bisogna rilasciare il software con una licenza compatibile con la GPL. Ma si tratta solitamente delle librerie più specifiche, e non dovreste aver dovuto usare nulla di simile su un'altra piattaforma, cosicché probabilmente non ne avrete bisogno per effettuare un semplice "porting".

Naturalmente, se il vostro software non è libero non sarà un contributo per la nostra comunità, e chi ha a cuore la propria libertà si rifiuterà di usarlo. Solo chi è disposto a rinunciare alla propria libertà userà il vostro software, il che significa che in effetti il vostro software funzionerà da incentivo a rinunciare alla propria libertà.

Se sperate un giorno di poter guardare indietro alla vostra carriera e accorgervi che essa ha contribuito allo sviluppo di una società giusta e libera, allora dovete rendere il vostro software libero.

Ho appena scoperto che un'impresa ha una copia di un programma coperto dalla GPL, e che occorre pagare per averlo. L'impresa non sta violando la GPL non rendendo disponibile il software su Internet? (#CompanyGPLCostsMoney)

No. La GPL non richiede a nessuno di usare Internet per la distribuzione. Inoltre, non richiede a nessuno in particolare di ridistribuire il programma. E (a parte un caso speciale), anche se qualcuno decide di non ridistribuire il programma, la GPL non impone a costui di darne una copia ad una persona specifica.

Ciò che viene richiesto dalla GPL è che costui deve essere libero di ridistribuire una copia del software specificamente a voi se vuole farlo. Una volta che il detentore del copyright distribuisce una copia del programma a qualcuno, quel qualcuno potrà a sua volta redistribuirlo a voi o a chiunque altro, se lo riterrà opportuno.

Posso rilasciare un programma sotto una licenza che dica che si possono distribuire versioni modificate del programma sotto la GPL, ma che l'originale non si può distribuire sotto la GPL? (#ReleaseNotOriginal)

No. Una licenza di questo tipo sarebbe contraddittoria. Vediamo cosa comporterebbe per l'utente.

Immaginiamo che l'utente parta dalla versione originale (chiamiamola versione A), aggiunga altro codice (1000 righe, diciamo) e rilasci la versione modificata (che chiamiamo B) sotto la GPL. La GPL dice che chiunque può modificare la versione B e rilasciare il risultato sotto GPL. Quindi l'utente (o chiunque altro) può immediatamente eliminare quelle 1000 righe, ottenendo la versione C che ha il medesimo codice della versione A ma è sotto GPL.

Se, per eliminare questa possibilità, si dice esplicitamente nella licenza che nessuno ha la possibilità di ottenere qualcosa identico alla versione A sotto GPL cancellando quelle righe dalla versione B, ora la licenza effettivamente impedisce di usare completamente la versione B in tutti i modi consentiti dalla GPL. In altre parole, la licenza di fatto non consente all'utente di rilasciare una versione modificata (quale la B) sotto GPL.

Spostare una copia presso un'azienda controllata costituisce distribuzione? (#DistributeSubsidiary)

Decidere se lo spostamento di una copia a o da questa azienda controllata costituisca "distribuzione" è una questione che va analizzata di caso in caso secondo la legge sul diritto d'autore dell'appropriata giurisdizione. La GPL non scavalca le leggi locali, né può farlo. La legge sul diritto d'autore americana non è del tutto chiara su questo punto, ma pare che non consideri questa una forma di distribuzione.

Se, in qualche paese, questa viene considerata distribuzione, e l'azienda controllata deve ricevere il diritto di ridistribuire il programma, questo non costituisce una differenza pratica: essendo controllata dalla società madre, a prescindere da quali diritti ha non ridistribuirà il programma se non sotto decisione della società madre.

I programmi di installazione possono chiedere di accettare la GPL con un click? Devo aderire a qualcosa se ottengo software GPL? (#ClickThrough)

Alcuni sistemi di distribuzione software hanno una sezione che richiede di cliccare o indicare in altro modo assenso ai termini della GPL. Questo non è né richiesto né proibito. Con o senza click, le regole della GPL rimangono le stesse.

La semplice adesione alla GPL non pone alcun obbligo. Non è richiesto di aderire a nulla per poter semplicemente utilizzare software rilasciato sotto la GPL. Gli obblighi esistono solo qualora il software venga modificato o distribuito. Se accettare la GPL con un clic è motivo di fastidio, nessuno impedisce di modificare il software coperto da GPL per aggirare questo meccanismo.

Vorrei includere software coperto da GPL insieme ad un software di installazione. È necessario che il programma di installazione sia rilasciato sotto una licenza compatibile con la GPL? (#GPLCompatInstaller)

No. Il programma di installazione ed i file da esso installati sono opere separate. Di conseguenza, i termini della GPL non si applicano al programma di installazione.

Alcuni distributori di software coperto da GPL mi richiedono come parte delle loro EULA generiche o come parte del loro processo di download di "rappresentare e garantire" che io mi trovo negli Stati Uniti, o che intendo distribuire il software obbedendo alle leggi di controllo delle esportazioni correlate. Perché lo fanno ed è questa una violazione da parte di questi distributori nei confronti degli obblighi imposti dalla GPL? (#ExportWarranties)

Questa non è una violazione della GPL. Questi distributori (la maggior parte dei quali sono imprese commerciali che vendono distribuzioni di software libero e servizi correlati) stanno provando a ridurre i propri rischi legali, non a controllare il vostro comportamento. Le leggi di controllo delle esportazioni negli Stati Uniti potrebbero ritenerli responsabili se essi esportano deliberatamente software in alcuni paesi, o se affidano questo compito a parti che lo eseguiranno. Esigendo queste dichiarazioni da parte dei propri clienti e di coloro ai quali distribuiscono software, essi si stanno solo proteggendo nell'eventualità che in seguito le autorità di controllo chiedano loro informazioni circa la destinazione del software da loro distribuito. Non stanno limitando cosa si può fare con il software, stanno solo prevenendo eventuali accuse relative al vostro utilizzo del software. Siccome non stanno imponendo delle limitazioni aggiuntive sul software, essi non stanno violando la sezione 10 della GPLv3 o la sezione 6 della GPLv2.

La FSF si oppone all'applicazione delle leggi di controllo delle esportazioni americane al software libero. Non solo tali leggi sono incompatibili con l'obiettivo generale della libertà del software, essi non adempiono ad alcuno scopo governativo, perché il software libero è ora e sarà sempre disponibile presso parti in quasi ogni paese, inclusi quei paesi che non hanno delle leggi di controllo delle esportazioni e che non partecipano in embarghi guidati dagli Stati Uniti. Di conseguenza, nessun governo di nessun paese viene ai fatti privato del software libero da parte delle leggi di controllo delle esportazioni americane, mentre nessun cittadino di nessun paese deve essere privato del software libero, indipendentemente dalle politiche dei loro governi, per quanto ci riguarda. Le copie di tutti i programmi coperti da GPL pubblicati dalla FSF possono essere ottenute presso di noi senza dover dichiarare la propria residenza o il proprio intento. Allo stesso tempo, la FSF comprende la richiesta dei distributori commerciali situati negli Stati Uniti di ottemperare alle leggi americane. Essi hanno diritto di scegliere a chi distribuire particolari copie del software libero; esercitare tale diritto non costituisce una violazione della GPL a patto che essi non aggiungano limitazioni contrattuali al di là di quelle permesse dalla GPL.

Posso usare software coperto da GPL su un dispositivo che smette di funzionare se il cliente smette di pagare un abbonamento? (#SubscriptionFee)

No. In questo scenario, il requisito di continuare a pagare una tariffa limita l'abilità dell'utente di eseguire il programma. Questo costituisce un requisito aggiuntivo alla GPL, e la licenza lo proibisce.

Come posso passare dalla (L)GPLv2 alla (L)GPLv3? (#v3HowToUpgrade)

Primo, bisogna includere la nuova versione della licenza nella propria distribuzione. Se il proprio progetto fa uso di LGPLv3, bisogna accertarsi di includere i testi sia della GPLv3 che della LGPLv3, visto che la LGPLv3 ora è scritta come un insieme di permessi aggiuntivi alla GPLv3.

Secondo, bisogna sostituire tutte le note di licenza relative alla versione 2 (di solito all'inizio di ogni file) con il nuovo testo consigliato disponibile sulla guida alla licenze di GNU. La versione attuale è più stabile in quanto non include più l'indirizzo postale della FSF.

Ovviamente, qualsiasi testo descrittivo (come quello contenuto nel file README) che fa riferimento alla licenza della distribuzione deve a sua volta essere aggiornato in maniera opportuna.

Come può la GPLv3 facilitare la distribuzione tramite BitTorrent? (#BitTorrent)

Visto che la GPLv2 è stata scritta prima della diffusione della distribuzione tramite software peer-to-peer, è difficile ottemperare ad essa quando si condivide il codice in questa maniera. Il modo migliore per accertarsi di stare rispettando i termini della licenza quando si distribuisce codice oggetto tramite BitTorrent è includere tutto il corrispondente codice sorgente nello stesso torrent, che è troppo costoso.

La GPLv3 affronta questo problema in due modi. Primo, alla gente che scarica il torrent ed invia dati agli altri come parte del processo non è richiesto di fare nulla. Questo è per via della sezione 9, che dice “Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance [of the license]”, ovvero "la trasmissione ausiliaria di un'opera coperta che avviene esclusivamente come conseguenza della trasmissione peer-to-peer allo scopo di ricevere una copia a propria volta non richiede accettazione (della licenza)”.

Secondo, la sezione 6(e) della GPLv3 è progettata per offrire ai distributori -- coloro che hanno inizialmente distribuito i torrent in "seed" -- un maniera chiara e semplice di fornire il codice sorgente, comunicando ai beneficiari dove possono scaricarlo da un server pubblico. Questo fa in modo che chiunque voglia ottenere il codice possa farlo, e non causa problemi al distributore.

Cos'è la tivoizzazione? Cosa fa la GPLv3 per prevenirla? (#Tivoization)

Alcuni dispositivi utilizzano software libero che può essere aggiornato, ma sono progettati in maniera tale da non permettere agli utenti di modificare quel software. Ci sono vari modi per farlo; per esempio, a volte l'hardware esegue dei controlli di integrità (checksum) sul software installato, e si spegne se non danno il risultato previsto. I produttori rispettano la GPLv2 fornendo il codice, ma non si ha ancora la libertà di modificare il codice che si sta usando.

Quando si distribuiscono Prodotti Utente che includono software rilasciato sotto GPLv3, la sezione 6 richiede che si distribuiscano anche informazioni necessarie per modificare quel software. "User Products" (Prodotti Utente) è un termine specificamente definito nella licenza; lettori musicali, videocamere e sistemi di sicurezza sono alcuni esempi di Prodotti Utente.

La GPLv3 proibisce il DRM? (#DRMProhibited)

Non lo proibisce; si può usare codice rilasciato sotto GPLv3 per sviluppare un qualsiasi tipo di tecnologia DRM di proprio piacimento. Ma, se lo si fa, la sezione 3 afferma che il sistema non potrà essere considerato come un efficiente metodo di "protezione" tecnologica, che significa che se qualcuno dovesse bypassare il DRM, egli sarebbe a sua volta libero di distribuire la sua versione del software, non ostacolato da DMCA e leggi simili.

Come al solito, la GNU GPL non limita quello che la gente può fare nel proprio software, impedisce solo di limitare gli altri.

Posso usare la GPL come licenza per hardware? (#GPLHardware)

Qualsiasi opera che possa essere protetta da copyright può essere rilasciata sotto la GPL. La GPLv3 può anche essere usata per proteggere opere coperte da altre leggi simili a quella sul diritto d'autore, come le fotomaschere. Quindi, per esempio, si può rilasciare un progetto di un oggetto fisico o di un circuito sotto la GPL.

In molte situazioni, il copyright non copre la creazione di hardware fisico a partire da un progetto. In tali casi, la propria licenza per il progetto non può esercitare controllo sulla manifattura o vendita di hardware fisico, indipendentemente dalla licenza usata. Quando il copyright copre la creazione di hardware, per esempio per quanto riguarda le fotomaschere dei circuiti integrati, la GPL gestisce quel caso in una maniera utile.

Uso la crittografia asimmetrica per firmare digitalmente il mio codice al fine di provarne l'autenticità. È vero che la GPLv3 mi forza a rilasciare le mie chiavi private? (#GiveUpKeys)

No. L'unico caso in cui si è obbligati a rilasciare le chiavi private è quando si è trasmesso software coperto da GPL all'interno di un Prodotto Utente, ed il suo hardware richiede una firma crittografica valida per poter funzionare. In quel caso specifico, sarebbe necessario fornire a tutti i possessori del dispositivo che ne facciano richiesta la chiave di cifratura necessaria per firmare ed installare il software sul proprio dispositivo, così che esso possa funzionare. Se ogni dispositivo ha una chiave diversa, bisogna fornire ad ogni acquirente solo la chiave per il proprio.

La GPLv3 richiede che i votanti possano modificare il software che gira su una macchina per votazioni?(#v3VotingMachine)

No. Le società che distribuiscono dispositivi che includono software coperto da GPLv3 sono al più obbligate a fornire il codice sorgente e le Informazioni di Installazione per il software a coloro che possiedono una copia del codice oggetto. Il votante che fa uso di un dispositivo per il voto elettronico (così come qualsiasi altra cabina) non ne entra in possesso, nemmeno temporaneamente, e quindi non entra in possesso nemmeno del software eseguibile in esso contenuto.

Si noti, comunque, che votare costituisce un caso molto particolare. Solo perché il software all'interno di un computer è libero non è detto che ci si possa fidare del computer per votare. Crediamo che non ci si possa fidare dei computer per votare. Si dovrebbe votare su carta.

La GPLv3 è provvista di una clausola di "rappresaglia brevettuale"? (#v3PatentRetaliation)

In pratica sì. La sezione 10 proibisce a coloro che trasmettono il software di accusare le altre licenze di aver violato dei brevetti. Se qualcuno decidesse comunque di farlo, perderebbe la licenza ed ogni licenza di brevetto ad essa annessa, come spiegato dalla sezione 8.

Posso usare frammenti di codice coperto da GPL all'interno di documentazione rilasciata sotto una qualche altra licenza incompatibile con la GPL? (#SourceCodeInDocumentation)

Se i frammenti sono abbastanza piccoli da poter essere incorporati sotto leggi di "fair use" o simili, allora sì. Altrimenti, no.

L'inizio della sezione 6 della GPLv3 dice che posso trasmettere un'opera da essa coperta sotto forma di codice oggetto “sotto i termini delle sezioni 4 e 5” a patto di rispettare anche le condizioni della sezione 6. Che significa? (#v3Under4and5)

Questo significa che tutti i permessi e le condizioni che si devono rispettare quando si trasmette codice sorgente si applicano anche quando si trasmette codice oggetto: si può fissare un prezzo, si devono lasciare inalterati gli avvisi di copyright, e così via.

La mia società possiede un gran numero di brevetti. Nell'arco degli anni, abbiamo contribuito codice a progetti sotto la "GPL versione 2 o successiva", ed i progetti stessi sono stati distribuiti sotto gli stessi termini. Se un utente dovesse decidere di usare il codice dei progetti (che incorpora i miei contributi) sotto GPLv3, ho automaticamente garantito la licenza di brevetto esplicita della GPLv3 a quell'utente? (#v2OrLaterPatentLicense)

No. Quando si trasmette codice coperto da GPL, bisogna seguire i termini e le condizioni di una versione specifica della licenza. Quando si fa questo, è quella versione a definire i propri obblighi. Se gli utenti dovessero decidere di usare una versione successiva della GPL, quello costituisce soltanto un loro permesso aggiuntivo -- non si è obbligati a soddisfare i termini della versione successiva della GPL.

Questo non vuol dire che si può minacciare la comunità con i propri brevetti. In molti paesi, distribuire software sotto GPLv2 garantisce ai beneficiari un'implicita licenza di brevetto che permette loro di esercitare i propri diritti sotto la GPL. Anche se così non fosse, chiunque consideri di far rispettare i propri brevetti in maniera aggressiva è da considerare un nemico dalla comunità, e ci difenderemo da questo attacco.

Se distribuisco un programma proprietario che linka ad un programma coperto da una libreria LGPLv3 che ho modificato, qual è la “contributor version” che permette di determinare la portata della licenza di brevetto esplicita che sto scrivendo -- solo la libreria, oppure l'intera combinazione? (#LGPLv3ContributorVersion)

La “contributor version” (versione del contributore) è semplicemente la propria versione della libreria.

La GPLv3 è compatibile con la GPLv2? (#v2v3Compatibility)

No. Molti requisiti sono cambiati dalla GPLv2 alla GPLv3, cioè ci sono situazioni in cui il requisito preciso della GPLv2 non è presente in GPLv3 e viceversa. Ad esempio le condizioni sulla terminazione nella GPLv3 sono molto più permissive (e quindi sostanzialmente diverse) rispetto a quelle della GPLv2.

Ne consegue che le licenze non sono compatibili; se si volesse combinare codice rilasciato sotto GPLv2 con codice rilasciato sotto la GPLv3, si violerebbe la sezione 6 della GPLv2.

Comunque, se il codice è stato rilasciato sotto GPL "versione 2 o successiva", esso è compatibile con la GPLv3 perché questa è una delle opzioni da essa permesse.

Nella GPLv2 c'è l'obbligo di fornire istruzioni per l'installazione? (#InstInfo)

La GPLv3 richiede esplicitamente di includere tutte le necessarie "istruzioni per l'installazione". La GPLv2 usa una terminologia diversa ma richiede comunque di includere gli script usati per controllare la compilazione e l'installazione dell'eseguibile insieme al codice sorgente completo corrispondente. Questo in parte coincide con quello che la GPLv3 chiama "istruzioni per l'installazione", ma il requisito della GPLv3 è in questo caso più forte.

Cosa significa "curare" una violazione della GPLv3? (#Cure)

Curare una violazione significa cambiare le proprie pratiche in modo da soddisfare i requisiti della licenza.

Le garanzie e dichiarazioni di esclusione di responsabilità della GPLv3 sembrano specifiche al sistema legale americano. Posso aggiungere delle esclusioni di responsabilità arbitrarie al mio codice? (#v3InternationalDisclaimers)

Sì. La Sezione 7 dà il permesso di aggiungere le proprie dichiarazioni di esclusione di responsabilità, nello specifico 7(a).

Il mio programma ha delle interfacce utente interattive non visive. Come faccio ad attenermi al requisito di Note Legali Appropriate della GPLv3? (#NonvisualLegalNotices)

Basta accertarsi che le "Appropriate Legal Notices" (Note Legali Appropriate) siano prontamente disponibili all'utente nella propria interfaccia. Per esempio, se è stata scritta un'interfaccia audio, si potrebbe includere un comando che legge ad alta voce le note di licenza.

Se do una copia di un programma coperto da GPLv3 ad un mio collega, gli ho per caso “trasmesso” la mia copia? (#v3CoworkerConveying)

Se il software viene usato da entrambi a lavoro e non per conto proprio, allora no. Le copie appartengono alla società, non a voi o ai vostri colleghi. Questo tipo di copia costituisce propagazione, non trasmissione, perché non è la società a rendere le copie disponibili agli altri.

Se distribuisco un programma coperto da GPLv3, posso fornire una garanzia che viene annullata nel momento della modifica da parte all'utente? (#v3ConditionalWarranty)

Sì. Analogamente ai dispositivi, che non hanno bisogno di garanzia se gli utenti ne modificano il software interno, non è richiesto fornire una garanzia che copre tutte le possibili attività che possono essere intraprese grazie a software coperto da GPLv3.

Perché avete deciso di scrivere la GNU Affero GPLv3 come una licenza separata? (#SeparateAffero)

Delle bozze iniziali della GPLv3 permettevano ai soggetti di aggiungere un requisito per pubblicare il codice sorgente simile a quello imposto dalla AGPL nella sezione 7. Tuttavia, alcune compagnie che sviluppano e fanno affidamento su software libero trovano questo requisito troppo gravoso. Vogliono evitare codice con questo requisito, ed hanno espresso preoccupazione circa i costi aggiuntivi che un tale requisito richiederebbe per verificarne l'applicazione. Pubblicando la GNU Affero GPLv3 come una licenza separata ma fornita di clausole che permettono di linkare con codice coperto da GPLv3, riusciamo a realizzare tutti i nostri obiettivi iniziali ed allo stesso tempo a facilitare il riconoscimento del codice che fa uso di quel requisito.

Perché avete inventato i nuovi termini “propagate” e “convey” nella GPLv3? (#WhyPropagateAndConvey)

Il termine “distribute” (distribuire) usato nella GPLv2 è stato preso in prestito dalla legge americana sul diritto d'autore. Nel tempo, siamo venuti a conoscenza del fatto che alcune giurisdizioni usano la stessa parola nelle proprie leggi sul diritto d'autore, ma con significato differente. Abbiamo inventato questi nuovi termini per rendere chiaro il nostro intento indipendentemente da dove la licenza viene interpretata. Non sono termini usati in nessuna legge sul diritto d'autore esistente, siamo noi a fornirne le definizione direttamente nel testo della licenza.

Vorrei rilasciare il mio codice sotto la GPL, ma vorrei anche specificare che non può essere usato per scopi militari e/o commerciali. Posso farlo? (#NoMilitary)

No, perché questi due obiettivi si contraddicono a vicenda. La GNU GPL è stata progettata specificamente per prevenire l'aggiunta di ulteriori restrizioni. La GPLv3 permette di inserire alcune specifiche restrizioni come spiegato nella sezione 7, ma ogni altra restrizione aggiunta può essere rimossa dall'utente.

Più in generale, una licenza che impone limitazioni su chi può usare un programma, o per quale scopo, non è una licenza di software libero.

Nella GPLv3, “convey” significa lo stesso che “distribute” significava nella GPLv2? (#ConveyVsDistribute)

Sì, più o meno. Controllando il rispetto della GPLv2, siamo venuti a conoscenza che alcune giurisdizioni usano la parola “distribute” nelle loro leggi sul diritto d'autore, ma con significato differente. Abbiamo inventato un nuovo termine per rendere chiaro il nostro intento e per evitare eventuali problemi causati da queste differenze.

La GPLv3 sostiene che "rendere disponibile al pubblico" sia un esempio di propagazione. Che significa? Rendere disponibile è una forma di trasmissione? (#v3MakingAvailable)

Un esempio di "rendere disponibile al pubblico" è rilasciare il software su un server pubblico HTTP o FTP. Dopo averlo fatto, potrebbe passare del tempo prima che qualcuno scarichi il codice -- ma visto che potrebbe succedere anche immediatamente, è necessario che anche gli obblighi imposti dalla GPL vengano rispettati immediatamente. Di conseguenza, abbiamo definito questa attività come parte della trasmissione.

Visto che la distribuzione ed il rendere disponibile al pubblico sono entrambe forme di propagazione che sono anche di trasmissione nella GPLv3, quali sono alcuni esempi di propagazione che non costituiscono distribuzione? (#PropagationNotConveying)

Creare copie del software per se stessi è la forma principale di propagazione che non costituisce trasmissione. Si può fare questo per installare il software su più computer, o per fare dei backup.

Conta come modifica il "prelink" di un eseguibile rilasciato sotto GPL con varie librerie di sistema allo scopo di ottimizzare le prestazioni? (#Prelinking)

No. Il prelink fa parte del processo di compilazione; non introduce alcun requisito oltre a quelli che altri aspetti della compilazione introdurrebbero. Se è possibile linkare il programma alle librerie, è anche possibile prelinkare con esse. Se si distribuisce codice oggetto prelinkato, è necessario seguire i termini della sezione 6.

Se qualcuno installa software coperto da GPL su un computer portatile, e poi presta quel computer ad un amico senza fornire il codice sorgente per il software, quel qualcuno ha violato la GPL? (#LaptopLoan)

No. Nelle giurisdizioni nelle quali abbiamo investigato questo problema, questo tipo di prestito non conta come trasmissione. Il proprietario del computer portatile non è soggetto ad alcun obbligo imposto dalla GPL.

Si supponga che due società provino a aggirare il requisito di fornire Informazioni di Installazione facendo rilasciare ad una società il codice firmato digitalmente, ed all'altra un Prodotto Utente che può solo eseguire software firmato dalla prima società. In questo caso, si sta violando la GPLv3? (#TwoPartyTivoization)

Sì. Se le due parti provano a collaborare per aggirare i requisiti della GPL, possono entrambe essere accusate di aver infranto il copyright. Questo è valido in particolare in considerazione del fatto che la definizione di trasmissione include esplicitamente attività che renderebbero qualcuno responsabile di infrazioni secondarie.

Sto rispettando i termini della GPLv3 se offro gli eseguibili su un server FTP ed i sorgenti tramite un link ad un repository di un sistema di controllo versione (come CVS o SVN) contenente il codice sorgente? (#SourceInCVS)

Questo è accettabile finché il processo di checkout (scaricamento del repository) non diventa gravoso o altrimenti restrittivo. Per chiunque sia possibile scaricare il codice oggetto deve essere anche possibile scaricare il codice sorgente dal sistema di controllo versione usando un client libero e pubblicamente reperibile. Agli utenti devono essere fornite delle istruzioni chiare e semplici da seguire su come ottenere il codice sorgente corrispondente all'esatto codice oggetto scaricato -- che non sempre corrisponde alla più recente versione di sviluppo.

Se si trasmette software coperto da GPLv3 in un Prodotto Utente, è possibile usare l'attestazione remota per non permettere ad un utente di modificare quel software? (#RemoteAttestation)

No. La definizione di Informazioni di Installazione, che deve essere allegata al codice sorgente quando il software viene trasmesso all'interno di un Prodotto Utente, dice esplicitamente: “The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made” (le Informazioni devono essere sufficienti per garantire che il funzionamento continuativo del codice oggetto modificato non venga in alcun caso bloccato e non si interferisca con esso solo perché sono state apportate modifiche). Se il dispositivo fa uso di attestazione remota in qualche maniera, le Informazioni di Installazione devono fornire al software un modo per autenticarsi come legittimo.

Che significa “rules and protocols for communication across the network” nel testo della GPLv3? (#RulesProtocols)

Questo fa riferimento alle regole sul traffico di rete. Per esempio, se esiste un limite sul numero massimo di richieste che si possono inviare quotidianamente ad un server, o sulla dimensione di un file che viene caricato da qualche parte, l'accesso a quelle risorse potrebbe essere bloccato se non si rispettano quei limiti.

Queste regole non includono nulla che non sia direttamente pertinente allo spostamento dei dati attraverso la rete. Per esempio, se un server di rete ha inviato dei messaggi indirizzati agli utenti del proprio dispositivo, il proprio accesso alla rete non può essere negato soltanto perché il software è stato modificato in modo da non mostrare quei messaggi.

Ai distributori che forniscono Informazioni di Installazione sotto GPLv3 non è richiesto di offrire “support service” (servizio di supporto) per il prodotto. Che tipo di “support service” intendete? (#SupportService)

Questo include il tipo di servizio che molti produttori di dispositivi forniscono per assistere l'installazione, l'utilizzo o la risoluzione dei problemi del prodotto. Se un dispositivo richiede l'accesso a servizi di rete o tecnologie simili per funzionare correttamente, questi devono comunque essere disponibili alle versioni modificate, come richiesto dai termini della sezione 6 circa l'accesso di rete.

Nella GPLv3 ed AGPLv3, cosa significa “notwithstanding any other provision of this License”? (#v3Notwithstanding)

Questo significa, semplicemente, che i termini che seguono prevalgono su qualsiasi altro termine della licenza che potrebbe essere in conflitto con essi. Per esempio, senza questa sezione, alcuni potrebbero sostenere che non sia possibile combinare codice rilasciato sotto GPLv3 con codice rilasciato sotto AGPLv3, in considerazione del fatto che i requisiti aggiuntivi della AGPL sarebbero classificati come “further restrictions” (ulteriori restrizioni) secondo la sezione 7 della GPLv3. Questa sezione afferma chiaramente che la nostra interpretazione è quella giusta, è che è quindi possibile fare questa combinazione.

Questa sezione risolve solo i conflitti tra termini diversi della licenza. Quando non esiste un conflitto tra due condizioni, bisogna soddisfarle entrambe. Questi paragrafi non danno carta bianca per poter ignorare il resto della licenza -- stanno solo ritagliando delle eccezioni molto limitate.

Sotto la AGPLv3, quando modifico il Programma sotto la sezione 13, che Codice Sorgente Corrispondente deve offrire? (#AGPLv3CorrespondingSource)

Il “Codice Sorgente Corrispondente” è definito nella sezione 1 della licenza, e bisogna fornire ciò che esso descrive. Quindi, se la versione modificata dipende da librerie rilasciate sotto altre licenze, come la licenza Expat o la GPLv3, il Codice Sorgente Corrispondente deve includere quelle librerie (a meno che non si tratti di Librerie di Sistema). Se si sono modificate quelle librerie, bisogna fornire il codice sorgente della loro versione modificata.

L'ultima frase del primo paragrafo della sezione 13 serve solo a rafforzare quello che la gente già dava per scontato: anche se le combinazioni con codice rilasciato sotto GPLv3 sono gestite tramite una speciale eccezione nella sezione 13, il Codice Sorgente Corrispondente deve anche includere il codice che viene in questo modo combinato con il Programma. Questa frase non significa che si deve soltanto fornire il codice sorgente che è coperto da GPLv3; significa invece che tale codice non è escluso dalla definizione di Codice Sorgente Corrispondente.

Nella AGPLv3, cosa conta come “ interacting with [the software] remotely through a computer network?” (#AGPLv3InteractingRemotely)

Se il programma è stato espressamente progettato per accettare richieste dagli utenti ed inviare risposte attraverso una rete, rientra in questi criteri. Server web, server di posta elettronica, applicazioni interattive basate sul web e server di videogiochi multigiocatore sono esempi comuni di programmi che fanno parte di questa categoria.

Se un programma non è espressamente progettato per interagire con un utente attraverso una rete, ma viene eseguito in un ambiente dove finisce comunque col farlo, non fa parte di questa categoria. Per esempio, non è richiesto di rilasciare il codice sorgente di un'applicazione solo perché l'utente la sta eseguendo attraverso SSH, o una sessione remota di X.

Che differenza c'è tra il concetto di “you” della GPLv3 e la definizione di “Legal Entity” dell'Apache License 2.0? (#ApacheLegalEntity)

Sono ai fatti identici. La definizione di “Legal Entity” (Entità Legale) data dall'Apache License 2.0 è abbastanza comune in vari tipi di concordati legali -- al punto che sarebbe veramente sorprendente se un tribunale non interpretasse l'espressione allo stesso modo, anche in assenza di una definizione esplicita. Ci aspettiamo che i giudici faranno lo stesso quando si troveranno di fronte alle GPLv3 e dovranno considerare chi si qualifica come licenziatario.

Nella GPLv3, a cosa fa riferimento “the Program”? Ad ogni programma mai rilasciato sotto GPLv3? (#v3TheProgram)

Il termine “the Program” (il Programma) significa una particolare opera rilasciata sotto GPLv3 che è stata inviata ad uno specifico licenziatario da un licenziante a monte o distributore. Il Programma è una particolare opera software che si è ricevuta in una data istanza di licenza GPLv3, come la si è ricevuta.

"The Program" (il Programma) non può mai significare "tutte le opere mai rilasciate sotto GPLv3"; quell'interpretazione non ha senso per varie ragioni. Abbiamo pubblicato un'analisi del termine "the Program" per coloro che vogliano saperne di più.

Se faccio delle copie di un programma coperto da GPL e le eseguo senza distribuirle o trasmetterle agli altri, cosa mi viene richiesto dalla licenza? (#NoDistributionRequirements)

Niente. La GPL non pone alcuna condizione su questa attività.

Se un programma client è distribuito con AGPLv3, deve fornire i propri sorgenti ai server coi quali interagisce? (#AGPLv3ServerAsUser)

La AGPLv3 obbliga un programma ad offrire codice sorgente a “all users interacting with it remotely through a computer network” (tutti gli utenti che vi interagiscono remotamente attraverso una rete telematica). Non importa se il programma è chiamato "client" o "server", quel che importa è se ci sia o no una ragionevole aspettativa che una persona interagisca da remoto con quel programma attraverso una rete.

Come posso offrire di scaricare i sorgenti agli utenti che interagiscono con un proxy server distribuito con licenza AGPL? (#AGPLProxy)

Per software in esecuzione su un proxy server, si può fornire un'offerta di codice sorgente attraverso uno dei metodi usati convenzionalmente per comunicare con gli utenti di quel tipo di proxy, ad esempio una "landing page" che viene mostrata agli utenti al primo utilizzo e che contiene l'offerta di codice sorgente assieme ad altre eventuali informazioni che si vogliono fornire.

La AGPL afferma che bisogna fare l'offerta a "tutti gli utenti". Se si sa per certo che ad un determinato utente è già stata mostrata l'offerta, per la versione attuale del software, non c'è bisogno di ripeterla per quello stesso utente.

In che modo le varie licenze di GNU sono compatibili tra loro? (#AllCompatibility)

Le varie licenze di GNU godono di ottima intercompatibilità. L'unico caso in cui non è possibile combinare codice tra due di queste licenze è quando si vuole usare codice che è stato rilasciato solamente sotto una licenza meno recente assieme a codice che è stato rilasciato sotto una versione più recente.

Segue una dettagliata matrice di compatibilità che copre varie combinazioni delle licenze di GNU, per fornire un riferimento di facile consultazione per casi specifici. Essa parte dall'ipotesi che qualcun altro abbia scritto un software coperto da una di queste licenze, e si vuole in qualche modo incorporare del suo codice all'interno di un progetto che si vuole rilasciare (che sia un'opera originale o una versione modificata di un'opera esistente). La licenza per il proprio progetto si può trovare in una della colonne in cima alla tabella, e la licenza per l'altro codice in una della righe sulla sinistra. La cella in cui esse si incrociano specificherà se la combinazione è permessa o meno.

Quando diciamo “copy code” intendiamo copiare il codice: si sta prendendo una sezione di codice da un file sorgente, con o senza modifiche, e la si sta inserendo nel proprio programma, formando quindi un'opera basata sull'iniziale sezione di codice. “Use a library” (usare una libreria) significa che non si sta copiando nessun file sorgente direttamente, ma invece si sta interagendo con esso attraverso link, importazione o altri meccanismi tipici che legano assieme i sorgenti quando si compila o esegue il codice.

Ogni volta che in questa matrice compare GPLv3, le medesime condizioni di compatibilità valgono anche per la AGPLv3.

Salta matrice di compatibilità


Voglio rilasciare il mio codice sotto la licenza:
solo GPLv2 GPLv2 o successiva GPLv3 o successiva solo LGPLv2.1 LGPLv2.1 o successiva LGPLv3 o successiva
Voglio copiare codice rilasciato sotto la licenza: solo GPLv2 OK OK [2] NO OK: Combinazione è solo sotto GPLv2 [7] OK: Combinazione è solo sotto GPLv2 [7][2] NO
GPLv2 o successiva OK [1] OK OK OK: Combinazione è sotto GPLv2 o successiva [7] OK: Combinazione è sotto GPLv2 o successiva [7] OK: Combinazione è sotto GPLv3 [8]
GPLv3 NO OK: Combinazione è sotto GPLv3 [3] OK OK: Combinazione è sotto GPLv3 [7] OK: Combinazione è sotto GPLv3 [7] OK: Combinazione è sotto GPLv3 [8]
solo LGPLv2.1 OK: Trasmettere codice copiato sotto GPLv2 [7] OK: Trasmettere codice copiato sotto GPLv2 o successiva [7] OK: Trasmettere codice copiato sotto GPLv3 [7] OK OK [6] OK: Trasmettere codice copiato sotto GPLv3 [7][8]
LGPLv2.1 o successiva OK: Trasmettere codice copiato sotto GPLv2 [7][1] OK: Trasmettere codice copiato sotto GPLv2 o successiva [7] OK: Trasmettere codice sotto GPLv3 [7] OK [5] OK OK
LGPLv3 NO OK: Combinazione è sotto GPLv3 [8][3] OK: Combinazione è sotto GPLv3 [8] OK: Combinazione è sotto GPLv3 [7][8] OK: Combinazione è sotto LGPLv3 [4] OK
Voglio usare una libreria rilasciata sotto la licenza: solo GPLv2 OK OK [2] NO OK: Combinazione è solo sotto GPLv2 [7] OK: Combinazione è solo sotto GPLv2 [7][2] NO
GPLv2 o successiva OK [1] OK OK OK: Combinazione è sotto GPLv2 o successiva [7] OK: Combinazione è sotto GPLv2 o successiva [7] OK: Combinazione è sotto GPLv3 [8]
GPLv3 NO OK: Combinazione è sotto GPLv3 [3] OK OK: Combinazione è sotto GPLv3 [7] OK: Combinazione è sotto GPLv3 [7] OK: Combinazione è sotto GPLv3 [8]
solo LGPLv2.1 OK OK OK OK OK OK
LGPLv2.1 o successiva OK OK OK OK OK OK
LGPLv3 NO OK: Combinazione è sotto GPLv3 [9] OK OK OK OK

Salta note a piè pagina

1: Bisogna seguire i termini della GPLv2 quando si incorpora il codice in questo caso. Non si può trarre vantaggio di termini definiti in versioni successive della GPL.

2: Sebbene sia possibile rilasciare il proprio progetto (che sia un'opera originale e/o un'opera modificata) sotto GPLv2-o-successiva in questo caso, si noti che il resto del codice usato deve rimanere solamente sotto GPLv2. Finché il proprio progetto dipenderà da quel codice, non sarà possibile aggiornare la licenza di quel progetto alla GPLv3-o-successiva, e l'opera per intero (qualsiasi combinazione del proprio progetto con altro codice) può solo essere trasmessa sotto i termini della GPLv2.

3: Se si può rilasciare il progetto sotto GPLv2 o successiva, si può scegliere di rilasciarlo sotto GPLv3 o successiva -- ed una volta fatto, si potrà incorporare il codice rilasciato sotto GPLv3.

4: Se si può rilasciare il progetto sotto LGPLv2.1 o successiva, si può scegliere di rilasciarlo sotto LGPLv3 o successiva -- ed una volta fatto, si potrà incorporare il codice rilasciato sotto LGPLv3.

5: Bisogna seguire i termini della LGPLv2.1 quando si incorpora il codice in questo caso. Non si può trarre vantaggio di termini definiti in versioni successive della LGPL.

6: Se si fa questo, fintanto che il progetto contiene il codice rilasciato solo sotto LGPLv2.1, non sarà possibile aggiornare la licenza di quel progetto alla LGPLv3 o successiva.

7: La LGPLv2.1 dà il permesso di cambiare la licenza del codice in una qualsiasi versione della GPL a partire dalla GPLv2. Se si può cambiare il codice coperto da LGPL in questo caso in una versione appropriata della GPL (come descritto dalla tabella), si può fare questa combinazione.

8: la LGPLv3 è la GPLv3 con dei permessi aggiuntivi che si possono ignorare in questo caso.

9: Visto che la GPLv2 non permette combinazioni con la LGPLv3, bisogna trasmettere il progetto sotto i termini della GPLv3 in questo caso, visto che permette questa combinazione.