Domande poste di frequente sulla GNU GPL - Progetto GNU - Free Software Foundation (FSF)

Domande poste di frequente sulla GNU GPL

 [Immagine della testa di uno GNU] [ Coreano | Francese | Giapponese | Inglese | Italiano | Polacco | Portoghese ]
Dopo aver letto queste domande e risposte, potete misurare la vostra conoscenza delle licenze di software libero col nostro quiz. (in inglese)


Sommario


Che significa "GPL"?

"GPL" significa "General Public License" (Licenza Pubblica Generica). La 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?

Assolutamente no -- ci sono molte altre licenze libere: sul sito ce n'è una lista (seppur 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?

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ù lasca.

Tutto il software GNU usa la GNU GPL come licenza?

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?

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

Rendere il programma un pacchetto software 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 a <maintainers@gnu.org>.

Cosa bisogna fare quando si scopre una possibile violazione della GPL?

Bisogna riportarla.. 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 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?

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?

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.

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

"Valid for any third party" significa che chiunque abbia ricevuto l'offerta ha il diritto di pretendere che l'offerente la rispetti.

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 i binari ricevuti, devono accompagnarli con una copia di quest'offerta scritta. Questo significa che gli utenti che non hanno ricevuto i binari 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 GPL dice che le versioni modificate, se rese pubbliche, devono essere "concesse in licenza ... ad ogni terza parte." Ma chi sono queste "terze parti"?

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 *faccia* 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 apporto ad un programma coperto da GPL?

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.

Che tu voglia o no il copyright sulle tue modifiche, devi comunque rilasciare la versione modificata, integrale, sotto 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?

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?

Sì, la GPL permette a chiunque di farlo. Il diritto di vendere copie è parte della definizione di software libero.

La GPL mi permette di richiedere un prezzo per scaricare il programma dal mio sito?

Sì. Si può richiedere qualunque prezzo per distribuire una copia del programma. Se si distribuiscono i binari 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 i binari.

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

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 che nessuno richieda un prezzo per questo.

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

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 e poi metterne una copia su un sito web, rendendolo pubblico.

La GPL mi permette di distribuire una versione beta o modificata soggetta ad una clausola di non diffusione (NDA, nondisclosure agreement)?

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.

La GPL mi permette di sviluppare una versione modificata soggetta ad una clausola di non diffusione (NDA, nondisclosure agreement)?

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.

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?

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.

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

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.

E se il programma fosse poco più grande della stessa licenza?

Se un singolo programma fosse così corto, si potrebbe anche usare una semplice licenza che non ponga nessuna restrizione d'uso, piuttosto che la GNU GPL.

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

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.

Il preambolo e le istruzioni contribuiscono con circa 5000 caratteri al documento, meno di un terzo della lunghezza totale della GPL. Pertanto non determineranno un cambiamento sostanziale nelle dimensioni di un pacchetto software, a meno che il pacchetto 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"?

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 collegamento (linking) di due moduli insieme, ma non consentire la combinazione del loro codice sorgente in un unico modulo.

Che significa dire che una licenza è "compatibile con la GPL"?

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.

La GPL permette una tale combinazione, a patto che il programma risultante sia rilasciato sotto la GNU GPL. L'altra licenza è compatibile con la GPL se permette la stessa cosa.

Se scrivo programmi che fanno uso di librerie non libere, e uso la GPL, a quali problemi legali vado incontro?

Se le librerie usate rientrano nella seguente eccezione contenuta nella GPL:

     However, as a special exception, the source code distributed need not
     include anything that is normally distributed (in either source or
     binary form) with the major components (compiler, kernel, and so on) of
     the operating system on which the executable runs, unless that
     component itself accompanies the executable.

allora non c'è bisogno di fare nulla di speciale per usarle. In altre parole, se le librerie di cui l'autore ha bisogno sono distribuite come parte fondamentale di un sistema operativo proprietario, la GPL dice che chi compila il software può collegarlo con queste librerie.

Se poi l'autore volesse consentire al suo programma di essere collegato a librerie che non rientrano nella precedente eccezione, allora l'autore dovrebbe aggiungere una sua particolare eccezione, del tutto al di fuori della GPL. Per esempio, la seguente nota di copyright e di licenza dà il permesso di collegare il programma con il pacchetto chiamato "FOO":

   Copyright (C) yyyy  <name of copyright holder>

    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, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

    In addition, as a special exception, <name of copyright
    holder> gives permission to link the code of this program with
    the FOO library (or with modified versions of FOO that use the
    same license as FOO), and distribute linked combinations including
    the two.  You must obey the GNU General Public License in all
    respects for all of the code used other than FOO.  If you modify
    this file, you may extend this exception to your version of the
    file, but you are not obligated to do so.  If you do not wish to
    do so, delete this exception statement from your version.

L'autorizzazione contenuta in questa eccezione può essere concessa solo dai detentori dei diritti d'autore per il programma. Se ad esempio uno scrivesse un programma tutto da solo, quindi facendo l'ipotesi che il datore di lavoro o la scuola di appartenenza non rivendichi i diritti d'autore, allora questo autore sarebbe il detentore del copyright, e potrebbe autorizzare una simile eccezione. Ma se si vogliono usare parti di altri programmi protetti dalla GPL nel proprio codice, non è possibile autorizzare l'eccezione per quelle parti: bisogna ottenere l'assenso dai detentori dei diritti d'autore del programma.

Se altre persone modificano un programma che sia rilasciato con una simile eccezione, queste non sono obbligate ad autorizzare la stessa cosa per il loro lavoro -- possono scegliere di farlo o di non farlo.

L'aggiungere una siffatta eccezione elimina sì ogni problema legale, ma non può nulla contro un problema ben più serio che emerge quando si usano librerie non libere: il programma non sarà del tutto utilizzabile in un ambiente libero. Se un programma per svolgere un certo compito dipende da una libreria non libera, allora non potrà svolgere quel compito nel Mondo Libero. Se senza di questa libreria proprietaria il programma non può neanche girare, non potrà mai essere parte di un sistema operativo libero come ad esempio GNU; il programma resta completamente escluso dal Mondo Libero.

Allora ogni autore dovrebbe riflettere su questa cosa: è possibile trovare un modo di realizzare il programma senza usare questa libreria? È possibile scrivere un'alternativa a questa libreria che sia libera?

Purtroppo se il programma è stato già scritto usando la libreria proprietaria, allora probabilmente è troppo tardi per cambiare idea. È possibile comunque rilasciare il programma così com'è, piuttosto che non rilasciarlo affatto: ma si raccomanda di menzionare nel README del programma che il fatto che il programma dipenda da una libreria proprietaria è un inconveniente, e di suggerire agli utenti l'obiettivo di modificare il programma in modo che svolga gli stessi compiti senza usare la libreria in questione.

Si raccomanda anche di scrivere alla nostra organizzazione (<tasks@gnu.org>) circa questa libreria proprietaria e sui compiti che essa svolge: potremmo incoraggiare gli sviluppatori a realizzare una libreria che faccia le stesse cose e che sia libera.

Come ottengo i diritti d'autore sul mio programma, allo scopo di rilasciarlo sotto la GPL?

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?

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?

Si veda la pagina delle GPL instructions.

È possibile ottenere istruzioni passo per passo su come applicare la GFDL ad un manuale?

Si consulti la parte finale della stessa GFDL, e la pagina delle GFDL instructions.

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

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.

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? Lo sviluppatore potrebbe agire in modo da violare la GPL?

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?

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?

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?

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.

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?

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?

Solamente quando il programma copia parti di se stesso nel suo output.

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

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 programma 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?

Sì, perché il programma per come è effettivamente eseguito include la libreria.

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?

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 collegamenti ("bindings") con 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.

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 collegati 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++ e vorrei rilasciarla sotto la GPL. È permesso dai termini della GPL che il mio programma sia dinamicamente collegato con le librerie di run-time del Visual C++?

Sì, perché quelle librerie di run-time vengono solitamente distribuite col compilatore che si sta usando.

Perché la licenza originale BSD è incompatibile con la GPL?

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

    Non è lecito imporre restrizioni ulteriori all'acquirente nel suo
    esercizio dei diritti qui garantiti.

L'obbligo di pubblicità impone proprio una tale ulteriore restrizione, e quindi è incompatibile con la GPL.

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

Se un programma rilasciato sotto la GPL fa uso di plug-in, quali sono i requisiti da includere nelle licenze di questi plug-in?

Dipende da come il programma fa girare i suoi plug-in. Se il programma usa fork ed exec per invocare i plug-in, allora i plug-in sono programmi separati, e quindi la licenza del programma principale non impone nessun requisito per essi.

Se il programma invece è 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, e così i plug-in devono essere trattati come estensioni al programma principale. Questo significa che essi devono essere rilasciati sotto la GPL o sotto una licenza ad essa compatibile.

Un caso ambiguo si ha quando il programma collega dinamicamente i plug-in, ma la comunicazione tra i due è limitata all'invocazione della funzione 'principale' del plug-in con alcune opzioni ed all'attesa che questa termini.

Posso usare la GPL per un plug-in destinato ad un programma non libero?

Se il programma usa fork ed exec per invocare i plug-in, questi sono da considerarsi programmi separati, e quindi la licenza del programma principale non pone restrizioni alle licenze dei plug-in. Così, è possibile usare la GPL per un plug-in, e non ci sono requisiti particolari da soddisfare.

Se invece il programma effettua un collegamento dinamico dei plug-in, ed essi (il programma e i plug-in) effettuano delle reciproche chiamate a funzione e/o condividono delle strutture dati, allora li si considera formare un unico programma, e così i plug-in devono essere trattati come estensioni al programma principale. Ciò significa che collegare il plug-in GPL col programma principale 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 più in alto che comincia con: "Se scrivo programmi che fanno uso di liberie non libere".

Tu hai un programma sotto GPL a cui vorrei collegare 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?

Sì.

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

Si può chiedere, ma molti programmatori 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.

Come posso permettere che ad una mia libreria coperta da GPL vengano collegati moduli proprietari solo per mezzo di un'interfaccia controllata?

Basta aggiungere il testo seguente alla licenza riportata in ogni file del programma, alla fine del testo che dice che il file è distribuito sotto la GNU GPL:

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

    As a special exception, the copyright holders of FOO give you
    permission to link FOO with independent modules that communicate with
    FOO solely through the FOOBAR interface, regardless of the license
    terms of these independent modules, and to copy and distribute the
    resulting combined work under terms of your choice, provided that
    every copy of the combined work is accompanied by a complete copy of
    the source code of FOO (the version of FOO used to produce the
    combined work), being distributed under the terms of the GNU General
    Public License plus this exception.  An independent module is a module
    which is not derived from or based on FOO.

    Note that people who make modified versions of FOO 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.

Ho scritto una applicazione che è collegata ad altro software con licenze diverse. Sono molto confuso sul tipo di licenza che posso usare per il mio programma. Mi potete dire quali licenze posso usare?

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:

Qual è la differenza tra "semplice aggregazione" e "fondere due moduli in un programma"?

La "semplice aggregazione" di due programmi consiste nel metterli entrambi sullo stesso CD-ROM o disco fisso. Usiamo questo termine quando vogliamo indicare due programmi separati, che non siano parti di un singolo programma. In questo caso se uno è sotto GPL, non c'è alcuna restrizione per l'altro programma.

Fondere due moduli vuol dire collegare i due componenti insieme in modo da formare un programma più grande. Se uno dei due è coperto da GPL, anche l'insieme dei due programmi deve essere coperto da GPL. Se questo non è possibile o è indesiderato, è possibile non farlo affatto.

In cosa consiste la fusione di due parti per ottenere un programma? 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", ridirezionamento dell'output, 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 collegati insieme in uno spazio di indirizzamento condiviso, questo vuol dire quasi sicuramente fondere due programmi in uno solo.

Al contrario, ridirezionamento, 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.

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?

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 suo contributo alla FSF, o di recedere dal copyright e renderlo così di pubblico dominio.

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 <licensing@gnu.org> per ottenere maggiori informazioni.

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?

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.

Io uso il linguaggio di programmazione C e C++, e compilo usando GCC. Devo rilasciare il software che scrivo in questi linguaggi con la stessa licenza di GCC?

L'uso di GCC non richiede l'uso di nessuna licenza particolare per il programma compilato.

Posso usare la GPL per qualcosa che non sia software?

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.

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

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. Lo posso fare?

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 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?

Ci sono due ragioni.

Prima, una di carattere generale. Se permettessimo che una compagnia 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.

Voglio distribuire i binari di un programma senza accompagnarli con i codici sorgenti. Posso rendere disponibili i sorgenti via FTP anziché per posta?

Il codice sorgente deve essere fornito per posta su un supporto fisico, se qualcuno lo richiede. Naturalmente la pratica di mettere a disposizione su FTP, oltre che per posta, i codici sorgenti è comunque incoraggiata, ma il solo accesso via FTP ai sorgenti non è sufficiente a soddisfare la sezione 3 della GPL.

Se un utente dichiara di volere i sorgenti, occorre essere certi che quell'utente riesca ad ottenerli. Se un utente in particolare può accedere ai sorgenti attraverso l'utilizzo di un servizio FTP anonimo, perfetto, il lavoro è fatto. Ma non tutti gli utenti sono in rete. E costoro hanno gli stessi diritti degli altri di avere i sorgenti: per questo occorre essere pronti a spedire loro i sorgenti, su un disco o su un nastro per posta ordinaria.

Se l'accesso via FTP è abbastanza comodo, forse nessuno richiederà una copia per posta ordinaria, e non sarà mai necessario fornirla. Ma non si può dare per scontato.

Chiaramente, è comunque più semplice allegare già da subito i sorgenti insieme al codice binario.

Posso mettere i binari sul mio server internet e i sorgenti su un altro server internet?

La GPL richiede che l'accesso alla copia dei sorgenti sia offerto "dallo stesso posto"; ovvero, accanto al codice binario. In ogni caso, se ci sono degli accordi con un altro sito affinchè venga mantenuta la disponibilità dei codici sorgenti, e si usi poi un link o un altro tipo di rimando, in prossimità dei binari, a dove questi risiedano, in questo caso pensiamo che la clausola "dallo stesso posto" sia soddisfatta.

Si noti, comunque, che non è abbastanza cercare qualche sito che possa avere il codice sorgente oggi, e dire alle persone di cercare lì. Domani quel sito potrebbe decidere di cancellare il codice sorgente, o addirittura lo potrebbe sostituire con la versione più nuova dello stesso programma. A quel punto non si sarebbe più in regola con i requisiti della GPL. Per essere ragionevolmente certi di soddisfare quei requisiti, occorre effettuare un vero e proprio accordo con l'altro sito, e assicurare così che il codice sorgente vi rimarrà presente per quanto tempo si terranno disponibili i binari.

Voglio distribuire una versione estesa di un programma protetto da GPL, in forma binaria. È sufficiente distribuire i codici sorgenti della versione originale?

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

Parte dell'idea stessa del free software è che gli utenti hanno 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 rilascati sotto GPL.

Voglio distribuire i binari, ma distribuire tutti i sorgenti non è conveniente. Posso rilasciare agli utenti, oltre ai binari, solo i file che descrivono le differenze dalla versione "standard"?

Questa è una buona domanda, 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 ai binari probabilmente non funzionerebbero più con la nuova versione.

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

Voglio rendere disponibili i binari attraverso un servizio FTP anonimo, ma dare i sorgenti solo a coloro che ne fanno esplicita richiesta.

La GPL richiede che coloro che ridistribuiscono i binari senza sorgenti si offrano di spedire i sorgenti, in quanto questo è l'unico modo per essere sicuri che gli utenti abbiano i sorgenti.

Per questo motivo se si vuol distribuire i binari attraverso un FTP anonimo, è necessario distribuire insieme a loro anche i sorgenti. Non dovrebbe essere difficile. Una volta trovato un sito che permetta la distribuzione di un programma, sicuramente se ne trova uno che possa ospitare anche i sorgenti.

I sorgenti distribuiti devono corrispondere esattamente ai binari. In particolare occorre essere sicuri che siano della stessa versione del programma, non una versione più vecchia o più nuova.

È possibile rendere disponibili sorgenti e binari da macchine diverse, ammesso che esse siano facilmente raggiungibili nello stesso modo, e ammesso anche che venga riportata, in prossimità dei binari, l'informazione del luogo dove reperire i sorgenti.

Come posso essere sicuro che tutti coloro che scaricano i binari scarichino anche i sorgenti?

Non è necessario assicurarsi di questo. Un volta resi disponibili per certo i sorgenti e i binari 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 sono intesi ad assicurarsi che gli utenti possano avere i sorgenti, non a forzare gli utenti a scaricare i sorgenti anche se non lo volessero.

Per quale motivo alcune librerie GNU sono rilasciate sotto la normale licenza GPL invece che sotto la Lesser GPL?

Usare la Lesser GPL per qualsiasi particolare libreria costituisce un passo indietro per il software libero. Significa abbandonare parzialmente il tentativo di difendere la libertà dell'utente, ed alcuni dei requisiti nel condividere di ciò che è stato costruito sopra il software coperto da GPL. In se stessi, sono cambiamenti per il peggio.

Talvolta però un piccolo e localizzato compromesso potrebbe rivelarsi parte di una buona strategia. Talvolta usare la LGPL per una libreria può portare ad un uso più largo della libreria stessa, e, grazie a miglioramenti più consistenti per essa, in più largo supporto al software libero e così via. Questo potrebbe essere una buona cosa per il software libero, se però accade su larga scala. Ma quanto questo può accadere? Possiamo solo speculare.

Sarebbe bello poter provare la LGPL su ogni libreria per un certo tempo, considerare se questo sia d'aiuto, e cambiare la licenza in GPL se d'aiuto non fosse. Ma questo non è fattibile. Non appena usassimo la LGPL per un particolare libreria, tornare indietro potrebbe essere difficile.

Per questo decidiamo quale licenza usare per ogni libreria, analizzando caso per caso. C'è una lunga spiegazione su come noi decidiamo sulla 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.

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 devono riportare la dicitura: "Version 2 of the GPL or any later version"?

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. (L'ultimo cambiamento è 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 2 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 2. Quando un programma dice "Version 2 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 3 della GPL sarà resa disponibile, gli sviluppatori della maggior parte del programmi rilasciati sotto GPL, rilasceranno le loro successive versioni specificando "Version 3 of the GPL or any later version". Da quel momento gli utenti dovranno seguire i requisiti più rigorosi della GPL versione 3, per le versioni successive del programma.

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

Perché non usate la GPL per i manuali?

È possibile usare la licenza GPL per i manuali e la documentazione, ma la Licenza Libera GNU per la Documentazione (GFDL) è più adatta allo scopo.

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 contro, la GFDL ha clausole che aiutano gli editori di manuali liberi a trarre profitto da essi.

Noi permettiamo modifiche in testi che trattano argomenti tecnici, ma non ne permettiamo nelle sezioni che affermano le nostre posizioni legali, politiche o etiche. Facciamo questo elencando esplicitamente le sezioni che non possono essere modificate. La GFDL pone delle condizioni per queste "sezioni invarianti"--la GPL non avrebbe permesso una cosa simile.

È importante permettere modifiche nelle parti tecniche, perché gli sviluppatori che fanno dei cambiamenti sui programmi devono apportare le necessarie modifiche alla documentazione perché questa sia aggiornata. Non possiamo richiedere loro di farlo, ma se c'è una speranza che lo facciano, di certo facciamo bene a non intrarciarli.

Esistono traduzioni della GPL?

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

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 baco 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:

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?

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 collegato 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 collegate 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 collegamento 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 collegarlo 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 collegarlo 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?

Poiché la GPL è una licenza sui diritti d'autore, sono i detentori di tali diritti sul software che hanno il potere di far valere la GPL. Se vi accorgete di una violazione della GPL, dovreste informarne gli sviluppatori del software coinvolto, i quali sono o possono facilmente raggiungere i detentori dei diritti d'autore.

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?

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?

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 collegare 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 sotto la GPL, senza eccezioni; 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?

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 specifica 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?

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.


[ Coreano | Francese | Giapponese | Inglese | Italiano | Polacco | Portoghese ]

Per informazioni e domande sulla FSF e GNU rivolgersi, possibilmente in inglese, a gnu@gnu.org. Altri modi per contattare la FSF.

Commenti su queste pagine web a webmasters@gnu.org, altre domande a gnu@gnu.org.

Copyright (C) 2001 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA

La copia letterale e la distribuzione di questo articolo nella sua integrità sono permesse con qualsiasi mezzo, a condizione che questa nota sia riprodotta.

Aggiornato: $Date: 2005/05/05 19:37:12 $ $Author: novalis $