Guida rapida alla GPLv3
di Brett Smith[Questo articolo è disponibile anche nei formati PDF e reStructuredText .]
Dopo un anno e mezzo di pubblica consultazione, migliaia di commenti e quattro bozze, la versione 3 della GNU General Public License (GPLv3) è stata finalmente pubblicata il 29 Giugno 2007. Nonostante si siano sviluppate numerosissime discussioni sin dall'apparizione della prima bozza, solamente poche persone hanno parlato dei benefici che essa fornisce ai programmatori. Abbiamo deciso di pubblicare questa guida per sopperire a tale mancanza. Partendo da un breve ripasso sul software libero, il copyleft e gli scopi della GPL, giungeremo ad una revisione delle principali modifiche alla licenza per vedere in che modo supporta gli ideali del software libero e porta benefici ai programmatori.
I fondamenti della GPL
Nessuno dovrebbe essere limitato dal software che usa. Ogni utente deve avere il diritto a quattro libertà:
- la libertà di usare il software per qualunque scopo,
- la libertà di modificare il software per adattarlo ai propri bisogni,
- la libertà di condividere il software con gli amici e i vicini, e
- la libertà di condividere le modifiche effettuate.
Quando un programma offre agli utenti tutte queste libertà, noi lo chiamiamo software libero.
I programmatori possono rilasciare il proprio software sotto i termini della GNU GPL e, qualora lo facciano, il software in questione sarà considerato software libero e rimarrà tale per sempre, a prescindere da chi modifica o distribuisce il programma. Noi lo chiamiamo copyleft: il software è soggetto al copyright, ma invece di usare i diritti del copyright per limitare i diritti degli utenti così come fa il software proprietario, noi lo utilizziamo per assicurarci che ogni utente mantenga la libertà.
La licenza GPL viene aggiornata per proteggere il suo copyleft e assicurare che non venga indebolito da sviluppi legali o tecnologici. La nuova versione protegge gli utenti da tre minacce recenti:
- Tivoizzazione: alcune società hanno creato diversi tipi di dispositivi che eseguono software con licenza GPL, ma hanno manipolato l'hardware per fare in modo che solo loro possano modificare il software installato, non voi. Se un dispositivo può eseguire software arbitrario si tratta di un vero e proprio computer e il suo proprietario deve avere il controllo su ciò che fa o non fa. Quando un dispositivo ve lo impedisce ci riferiamo ad esso con il termine “tivoizzazione”.
- Leggi che proibiscono il software libero: Legislazioni tipo il Digital Millennium Copyright Act e l'European Union Copyright Directive rendono criminale scrivere o condividere software in grado di rompere il DRM (che per noi significa "gestione digitale delle restrizioni"; per approfondire). Queste leggi non devono interferire con i diritti che la GPL vi garantisce.
- Accordi discriminatori di brevetto: Microsoft ha recentemente iniziato a dire alle persone che non citeranno in giudizio gli utenti del software libero per infrazione dei brevetti di licenza—a patto che ottengano il software da un fornitore che paga a Microsoft questo privilegio. In sostanza, Microsoft sta cercando di riscuotere i diritti d'autore per l'impiego del software libero, il che interferisce con la libertà degli utenti. Nessuna società dovrebbe essere in grado di comportarsi così.
La versione 3 contiene inoltre un insieme di migliorie per facilitare l'uso della licenza e la sua comprensione, ma a prescindere da tutte queste modifiche, la GPLv3 non è una licenza radicalmente nuova; si tratta piuttosto di un'evoluzione della versione precedente. Anche se buona parte del testo è stata modificata, la maggior parte di esso chiarisce semplicemente i dettami della GPLv2. Tenendo a mente questo punto, è possibile vedere le principali modifiche della GPLv3, sottolineando le migliorie che essa apporta per utenti e programmatori.
Neutralizzare le leggi che proibiscono il software libero — ma non il DRM
Probabilmente sarà ben nota la pratica della gestione digitale delle restrizioni (DRM) imposta sui DVD ed altri media e, altrettanto, delle leggi che rendono illegale la creazione di strumenti atti a superare tali restrizioni, come il Digital Millennium Copyright Act e la European Union Copyright Directive. Nessuno deve avere il diritto di impedirvi di scrivere del codice, a prescindere dalla natura del codice stesso o dal suo scopo, e la GPLv3 protegge questo diritto per voi.
È tuttora possibile utilizzare del codice protetto da una licenza GPL per creare un software che implementi il DRM. Tuttavia, se qualcuno compie questa operazione con del codice protetto dalla GPLv3, la sezione 3 afferma che il sistema DRM implementato non conta come un'effettiva misura di “protezione” tecnologica. Questo significa che, nel caso in cui riusciate a rompere il DRM, sarete liberi di distribuire il software che riesce a rompere le restrizioni senza poter essere minacciati dal DMCA o leggi simili.
Come sempre, la licenza GNU GPL non limita la maniera in cui le persone usano il software; piuttosto proibisce loro di limitare i diritti altrui.
Protezione del diritto di smanettare
La tivoizzazione è un grave attentato alla libertà degli utenti: il diritto di modificare il software diverrà insignificante se nessun computer in vostro possesso vi permetterà di modificare il software che usa. La GPLv3 blocca la tivoizzazione, obbligando il distributore a fornire tutte le informazioni e i dati necessari per installare software modificato sul dispositivo. Queste informazioni potrebbero essere basilari, come ad esempio un insieme di istruzioni, oppure potrebbero includere dati speciali, come le chiavi crittografiche o le istruzioni su come aggirare il controllo di integrità implementato nell'hardware, a seconda del modo in cui l'hardware stesso è stato progettato—ma a prescindere dall'informazione di cui si ha bisogno, dobbiamo assicurarci che sia possibile ottenere tale informazione.
La portata di tale requisito è però limitata. Ai distributori è ancora permesso l'utilizzo di chiavi crittografiche per qualsiasi scopo e la divulgazione delle chiavi sarà imposta soltanto nel caso in cui sia necessario modificare il software rilasciato sotto licenza GPL presente nel dispositivo che vi hanno venduto. Lo stesso progetto GNU utilizza GnuPG per verificare l'integrità del software presente nel suo sito FTP e misure di questo tipo giovano agli utenti, quindi è importante notare che la GPLv3 non vuole vietare l'utilizzo della crittografia. Essa semplicemente impedisce alle persone di privarvi dei diritti che la licenza vi fornisce—a prescindere dalla modalità con cui tale attacco alla libertà venga mosso, sia esso attraverso un brevetto, una tecnologia o qualsiasi altro mezzo.
Maggiore protezione contro le minacce dei brevetti
Nei 17 anni successivi alla pubblicazione della GPLv2, il panorama dei brevetti di software è cambiato considerevolmente e le licenze del software libero hanno adottato nuove strategie per tenere il passo. La versione 3 della GPL implementa queste modifiche. Ogni volta che un soggetto utilizza software protetto dalla licenza GPLv3, scritto o modificato personalmente, deve fornire agli altri utenti le licenze necessarie ad esercitare i diritti garantiti dalla GPL. In aggiunta a ciò, qualora un licenziatario provi ad intentare una causa per violazione di brevetto verso un altro utente, la sua licenza decadrà.
Per gli utenti ed i programmatori ciò significa che potranno lavorare con del software protetto dalla GPLv3 senza preoccuparsi del fatto che un contributore possa denunciarli per infrazione di brevetto in un secondo momento. Con tali modifiche, la GPLv3 garantisce agli utenti maggiori difese contro le aggressioni brevettuali rispetto a tutte le altre licenze software.
Chiarire la compatibilità tra le licenze
Se, in passato, si trovava del codice che si sarebbe voluto implementare all'interno di un progetto protetto dalla GPL, la GPLv2 affermava che la licenza di tale codice aggiunto non poteva contenere alcuna restrizione che non fosse già presente nella GPLv2. In tal caso consideravamo una tale licenza come compatibile con la GPL.
Tuttavia, alcune licenze erano dotate di requisiti che non erano veramente restrittivi, dal momento che rispettarli era molto facile. Per esempio, alcune licenze vi negano il permesso di utilizzare alcuni marchi. Ciò non rappresenta davvero un'ulteriore restrizione: se tale clausola non venisse inserita affatto nella licenza, voi non avreste comunque il diritto di usare il marchio in questione e, pertanto, abbiamo sempre affermato che le licenze di questo tipo sono compatibili con la GPLv2.
Ora, la GPLv3 conferisce a tutti esplicitamente il permesso di utilizzare il codice con tali requisiti. Queste nuove condizioni dovrebbero chiarire le incomprensioni sulla compatibilità con la GPL: in che modo le licenze sono compatibili e che cosa è possibile fare con il codice compatibile con la GPL.
Nuove licenze compatibili
Oltre a chiarire le regole per licenze già compatibili con la GPL, la GPLv3 aggiunge la compatibilità con un paio di altre licenze, tra le quali la licenza Apache License 2.0 ne è un ottimo esempio. Molto software libero di qualità, supportato da grandi comunità, è disponibile con questa licenza e noi speriamo che le modifiche alla GPLv3 portino ad un aumento della cooperazione e della condivisione all'interno della comunità del software libero. Il quadro informativo qui sotto illustra alcune comuni relazioni di compatibilità tra le diverse licenze di software libero:
Le frecce che vanno da una licenza all'altra indicano che la prima licenza è compatibile con la seconda. Ciò rimane vero anche se per arrivare da una licenza all'altra seguite più di una freccia; e così, ad esempio, la licenza ISC è compatibile con la GPLv3. La GPLv2 è compatibile con la GPLv3 se il programma vi permette di scegliere una “versione successiva” della GPL, che è il caso della maggior parte del software rilasciato con questa licenza. Questo diagramma non è completo (si veda la nostra pagina sulle licenze per una lista più completa delle licenze compatibili con le GPL versioni 2 e 3), ma illustra chiaramente che la GPLv3 è compatibile con praticamente ogni cosa con la quale la GPLv2 è compatibile, e anche qualcuna in più.
La licenza GNU Affero GPL versione 3 è stata altrettanto integrata. La licenza Affero GPL era stata originariamente progettata per assicurare che tutti gli utenti di una applicazione web ricevessero il suo codice sorgente. La GNU Affero GPL versione 3 estende questo fine: è ora applicabile ad ogni software che interagisca con le reti e perciò adattabile anche a programmi come i server per videogiochi. La clausola aggiuntiva è inoltre più flessibile, in modo che, qualora una persona utilizzi del codice sorgente con licenza AGPL all'interno di un programma sprovvisto di un'interfaccia di rete, egli dovrà soltanto fornire il codice sorgente nella stessa maniera in cui la GPL ha sempre fatto. Rendendo compatibili queste due licenze, i programmatori di software che interagiscono con le reti potranno rafforzare il loro copyleft continuando comunque a costruire il codice sulle fondamenta mature del codice GPL a loro disponibile.
Ulteriori modi in cui i programmatori possono fornire il codice sorgente
Uno dei vincoli fondamentali imposti dalla GPL è che chi distribuisce codice oggetto debba sempre fornire un modo di ottenere i sorgenti. La licenza GPLv2 prevedeva alcune modalità per offrire i sorgenti e queste sono ancora disponibili nella GPLv3 con l'aggiunta di alcuni chiarimenti. La GPLv3 offre inoltre nuovi modi per fornire il codice sorgente quando viene trasmesso del codice oggetto in rete. Per esempio, quando ospitate del codice oggetto in una pagina web oppure in un server FTP, potete semplicemente mettere a disposizione le istruzioni per indicare ai visitatori il server di terze parti dal quale possono ottenere il codice sorgente. Grazie a questa nuova opzione, soddisfare tale requisito sarà più facile per molti di quei piccoli distributori che operano solo minime modificazioni ad una larga base di codice sorgente.
La nuova licenza permette inoltre di trasmettere il codice oggetto attraverso BitTorrent. Innanzitutto, le persone che scaricano o eseguono il seeding del torrent sono esenti dai requisiti di licenza relativi alla trasmissione del software e, di conseguenza, chiunque crei il torrent può fornire il codice sorgente indicando semplicemente agli altri utenti da quale server possono scaricarlo.
Queste nuove opzioni aiutano a mantenere la GPL in linea con le consuetudini sulla distribuzione del codice sorgente, evitando al contempo che tale codice diventi più difficile da ottenere per gli utenti.
Meno codice sorgente da distribuire: nuova eccezione per le librerie di sistema
Entrambe le licenze della GPL richiedono che forniate il codice sorgente completo necessario alla compilazione del software, incluse le librerie di supporto, gli script di compilazione e così via. Inoltre le due licenze definiscono le regole per le librerie di sistema: non siete obbligati a fornire il sorgente per alcune componenti centrali del sistema operativo, come ad esempio le librerie C.
La GPLv3 ha perfezionato la definizione di libreria di sistema per includere software che può non essere incluso di default nel sistema operativo, ma che possiamo ragionevolmente aspettarci di trovare sul sistema di tutti gli utenti del software. Ad esempio, ora include anche le librerie standard dei linguaggi di programmazione comuni come Python e Ruby.
Questa nuova definizione determina inoltre la possibilità di combinare software con licenza GPL con librerie di sistema incompatibili con la GPL, come la libreria C di OpenSolaris, e distribuirle entrambe assieme. Tali modifiche renderanno la vita più facile ai distributori del software libero che vogliano fornire tali combinazioni ai loro utenti.
Una licenza globale
La GPLv2 si sofferma moltissimo sulla “distribuzione” —quando condividete il programma con qualcuno, lo state distribuendo. La licenza non spiega cosa in intende per "distribuzione" poiché il termine fu preso in prestito dalle leggi sul copyright degli Stati Uniti. Ci aspettavamo che i giudici sarebbero andati in cerca della definizione del termine, ma abbiamo scoperto che le leggi sul copyright di altri Paesi usano la stessa parola con significati diversi. A causa di ciò, un giudice di un Paese diverso potrebbe analizzare la GPLv2 in maniera diversa rispetto ad un giudice degli Stati Uniti.
La GPLv3 utilizza un nuovo termine, “cedere” (convey) e fornisce una definizione del termine. Convey ha lo stesso significato implicito nella parola da noi usata “distribuire”, ma dato che viene ora spiegato direttamente nella licenza, dovrebbe essere facile per tutti intenderne l'esatto significato. Vi sono altre modifiche minori all'interno della licenza atte ad assicurarne la corretta applicazione in tutto il mondo.
Quando le regole vengono infrante: un percorso semplice per il rispetto delle regole
Sotto la GPLv2, se veniva violata la licenza, si perdevano automaticamente, in ogni caso e in maniera definitiva i diritti relativi. L'unica maniera in cui era possibile riottenerli era presentando una richiesta al detentore del copyright. Nonostante una forte difesa contro le violazioni sia molto utile, questa politica poteva creare molti problemi quando un utente andava accidentalmente in collisione con le regole della licenza. Fare una richiesta di risanamento formale della licenza ai detentori del copyright poteva essere gravoso e costoso: una tipica distribuzione di GNU/Linux si basa sul lavoro di migliaia di programmatori.
La GPLv3 concede un condono per buona condotta: se si viola la licenza è possibile riottenere i propri diritti correggendo la violazione, a meno che il detentore del copyright vi contatti entro 60 giorni. Dopo aver ricevuto una tale notifica, è possibile riottenere i propri diritti se si tratta di una prima violazione e se questa viene corretta entro 30 giorni. Altrimenti, a seconda del caso, è possibile trovare una soluzione al problema accordandosi con i detentori del copyright che si siano messi in contatto con voi, e i diritti verranno ripristinati.
Il rispetto della GPL è sempre stata la principale priorità del FSF Compliance Lab ed altri gruppi il cui fine è far rispettare la licenza in tutto il mondo. Le modifiche appena spiegate assicurano che il rispetto rimanga la priorità fondamentale per gli enti che impongono la GPL, dando al contempo ai violatori l'incentivo per conformarsi.
Una licenza migliore e più aggiornata
Probabilmente alcune delle modifiche di cui sopra vi sembreranno meno importanti rispetto ad altre ed è giusto così. Ogni progetto è differente e necessita di parti diverse di una licenza a seconda del caso, ma vi è una buona probabilità che alcune di queste modifiche aiutino voi e il vostro lavoro.
Considerati nel loro insieme, tutti questi aggiornamenti rappresentano molto di più: abbiamo scritto un copyleft migliore, che protegge meglio la libertà degli utenti, ma permette anche una maggiore cooperazione all'interno della comunità del software libero. Tuttavia l'aggiornamento della licenza è solo una parte del lavoro complessivo: affinché le persone possano beneficiarne, anche i programmatori devono usare la GPLv3 per i loro progetti. Rilasciando il vostro software protetto dalla nuova licenza, vi assicurerete che tutti quanti—utenti, programmatori, distributori, persino gli avvocati—ne trarranno beneficio. Speriamo che userete la GPLv3 per il prossimo rilascio del vostro software.
Se desiderate maggiori informazioni sull'aggiornamento del vostro progetto alla GPLv3, la FSF Compliance Lab sarà molto felice di assistervi. Su entrambi i siti gnu.org e fsf.org potete trovare le istruzioni elementari per l'utilizzo della licenza, ed una FAQ che contiene i problemi più comuni che le persone incontrano di solito. Se la vostra situazione è più complicata vi preghiamo di contattarci e noi faremo tutto il possibile per aiutarvi nella transizione alla nuova licenza. Uniti, possiamo aiutare gli utenti a proteggere la loro libertà.