Licenze per il software

All'opposto, una licenza di software libero permette lo studio, la distribuzione, la modifica e la redistribuzione del programma modificato. Questo è possibile in quanto i detentori dei diritti di sfruttamento economico del programma lo consentono, eventualmente a certe condizioni.

Licenze proprietarie

Una licenza che non sia liberasemilibera è detta proprietaria. Le licenze proprietarie contengono le clausole più disparate; in generale non consentono né l'accesso al codice sorgente, né modifiche al programma. Di seguito un breve glossario dei termini più comunemente usati per la distribuzione di software con licenze proprietarie.

Nessuna licenza

Anche se questa non è una licenza, l'effetto è quello di una licenza proprietaria. Un programma che non sia accompagnato da alcuna licenza di copyright è soggetto alla convenzione internazionale di Berna sul diritto d'autore, e come tale non può essere distribuito o modificato senza l'esplicito permesso dei titolari dei diritti di sfruttamento economico. Ciò significa che il programma non è libero se non accompagnato da una licenza libera, e questo anche nel caso in cui il sorgente sia disponibile, gratuitamente o meno.

Freeware

A meno di specifiche ulteriori, un programma si dice freeware se può essere liberamente e gratuitamente copiato per qualunque scopo. Questi programmi di solito non sono accompagnati dal sorgente, oppure sono soggetti ad altre restrizioni che hanno l'effetto di renderli non liberi. Un esempio molto noto è il visualizzatore di documenti PDF Adobe Acrobat reader.

Shareware

I programmi shareware possono essere copiati e distribuiti liberamente, ma non possono essere legittimamente utilizzati senza pagarli dopo un primo periodo di prova. Alcuni di questi programmi smettono di funzionare dopo il periodo di prova, o forniscono funzionalità ridotte fino all'acquisto di una chiave che li sblocchi.

Solo eseguibile

Gran parte dei programmi proprietari sono distribuiti in sola forma eseguibile, senza sorgenti. Eventualmente, l'eseguibile può essere soggetto a limitazioni d'uso. Vedi ad esempio la licenza del Macromedia Flash Plugin.

Accordo di non divulgazione

Talvolta un programma è consegnato solo dopo che chi lo riceve abbia firmato un impegno a non divulgare certe specifiche informazioni sul programma stesso. Questi documenti (l'accordo) sono detti in inglese NDA (non disclosure agreement), e sono comuni nei casi in cui il sorgente sia distribuito, ma senza poter essere ulteriormente redistribuito. Per esempio, l'impegno può consistere nel non divulgare informazioni su come il programma funziona.

Uso limitato

Una comune clausola che rende una licenza non libera è quella di uso senza fini di lucro. Molti programmi sono distribuiti gratuitamente per uso non commerciale, cioè possono essere usati gratuitamente purché gli utilizzatori non ne traggano un guadagno. Esistono diverse clausole analoghe, per esempio per uso personale, per uso accademico, per uso scolastico. Altre restrizioni sono ad esempio la clausola non trasferibile, che impedisce la libera redistribuzione. Programmi di questo genere possono essere accompagnati o meno dal sorgente, ma di solito non lo sono.

Software semilibero

Il software corredato di codice sorgente, distribuito a singoli utenti col permesso di di uso, copia, modifica e distribuzione è detto semilibero. Un esempio è il simulatore di reti ns-2, di cui alcune parti sono date in licenza solo per scopi non commerciali, mentre altre parti possono essere modificate solo per scopi di valutazione e ricerca.

Questo significa che una distribuzione commerciale di Linux che sia orientata al mercato scientifico e della ricerca non può includere il simulatore di reti ns-2, a meno che le parti per uso non commerciale ne siano eliminate, compito difficile e forse impossibile. Oltretutto, siccome la clausola di uso non commerciale comprende la documentazione, non è possibile vendere un libro su ns-2 che descriva le parti soggette a tali licenze.

Licenze per il software libero

Un'elegante definizione di licenza libera fu data per la prima volta da Richard Stallman negli anni Ottanta. Una definizione più dettagliata, equivalente alla prima, fu data negli anni Novanta dalla Open Source Initiative.

Un licenza per il software libero permette a chiunque riceva un programma ad essa soggetto di usarlo per qualunque scopo, di copiarlo, modicarlo e redistribuirlo. Che la distribuzione sia o meno gratuita non è rilevante. Il codice sorgente deve essere accluso o può essere richiesto al prezzo di costo del trasferimento. Se chi riceve il software può redistribuirlo solo entro gli stessi termini di licenza, si parla di licenza con permesso d'autore (copyleft in inglese); in caso contrario si parla di licenza senza permesso d'autore (non-copyleft). La seguente illustrazione di Chao-Kuei evidenzia i rapporti fra i diversi schemi di licenza fin qui descritti.

 [illustrazione degli schemi di licenza software]

Scelta di una licenza per software originale

Per rendere libero un programma bisogna allegare al codice sorgente un file (tipicamente di nome LICENSE.TXT) che contenga il testo della licenza scelta. Inoltre, è consigliabile aggiungere all'inizio di ogni file sorgente una riga di copyright analoga a quella che si trova alla fine di questo articolo. Ad ogni modifica del file bisogna aggiungere l'anno di modifica alla lista degli anni riportata nella riga di copyright. Se risultasse difficile riportare il carattere ©, questo può essere sostituito dai tre caratteri (C). Dopo la riga di copyright bisogna indicare che i termini della licenza di copyright sono contenuti nell'allegato file LICENSE.TXT.

Scrivere ex novo una licenza di copyright per il software è una pratica da evitare. È molto difficile scriverne una nuova, anche per un legale specializzato in questa materia. Inoltre, l'uso di una delle licenze il cui uso è consolidato ha diversi vantaggi: gli utilizzatori del software le conoscono già, e ne sanno valutare le implicazioni; sono scritte da legali; hanno provato la loro validità sul campo; infine, facilitano lo scambio di codice fra progetti liberi diversi.

Che licenza scegliere per un nuovo programma? Dipende dai propri obiettivi. Il miglior suggerimento, in linea con quanto si trova nella Debian Free Software Guidelines FAQ e in un articolo di David A. Wheeler, è usare una delle tre seguenti licenze.

La licenza pubblica generica (GPL) del progetto GNU

Se lo scopo della licenza è di assicurarsi che tutte le copie del programma, comprese quelle modificate, siano accompagnate dal codice sorgente o sia comunque facile procurarselo, allora è bene usare la GNU GPL.

QUesta è la licenza più diffusa in assoluto, è usata per i programmi sviluppati nell'ambito del progetto GNU e per molti altri, come ad esempio il kernel Linux, l'editor GNU Emacs, il compilatore portabile GCC, gli ambienti desktop per X KDE e Gnome.

La GPL è il primo e più importante esempio di licenza con permesso d'autore. Chi modifichi software con permesso d'autore e ne distribuisca le modifiche è tenuto a farlo secondo gli stessi termini in cui è distribuito il programma originale. Detto altrimenti, bisogna dare agli altri le stesse libertà che si sono ottenute. Più precisamente, la distribuzione di ogni opera derivata da un programma con licenza GPL deve a sua volta essere soggetta alla licenza GPL o ad una licenza che dia le stesse libertà. Questo anche se il programma è linkato ad altri, in quanto il risultato è considerato opera derivata. La licenza tuttavia non copre la chiamata di un programma GPL da parte di altri programmi, o il suo uso come parte di un gruppo di programmi, o la mera aggregazione con altri programmi sullo stesso supporto: tutti questi usi del programma GPL sono permessi senza vincoli.

La GPL si preoccupa di proteggere il buon nome degli autori imponendo che le versioni modificate di un programma siano chiaramente indicate come tali, se distribuite. È comunque possibile effettuare modifiche per uso personale, o uso interno in un'organizzazione, senza sottostare a formalità particolari.

Normalmente è preferibile linkare un programma GPL con librerie soggette a licenze compatibili con la GPL, come la GNU LGPL o la nuova BSD. Nel caso sia necessario usare librerie distribuite con licenze non compatibili con la GPL bisogna distinguere vari casi. Un'eccellente riferimento è la GPL FAQ, che contiene un gran numero di domande e risposte sulla GNU GPL. Una risposta particolarmente interessante tratta dei collegamenti ai moduli caricabili, come quelli usati da molti linguaggi moderni (Perl, Python, Java). È una buona idea partire da quella domanda, e passare quindi a quella su come aggiungere eccezioni alla GPL per un dato programma. C'è anche un messaggio di Linus Torvalds, datato 19 ottobre 2001, che offre spunti di riflessione molto interessanti su questo argomento.

La licenza pubblica generica attenuata (LGPL) del progetto GNU

Se lo scopo della licenza è assicurarsi che il software rimanga libero anche una volta modificato, lasciando tutavia la libertà di linkare ad esso qualunque altro programma, libero o proprietario, allora è bene usare la GNU LGPL.

La LGPL è una licenza compatibile con la GPL, usata principalmente per librerie, plugin e componenti. Alcuni noti programmi distribuiti con licenza LGPL sono l'emulatore i386 Bochs, molte delle librerie del desktop Gnome, la libreria C Glibc e la libreria C++ libg++.

La LGPL è una licenza con permesso d'autore, come la GPL. Il software coperto da LGPL, però, può essere linkato con software non compatibile con la GPL, anche proprietario, purché il codice sorgente della parte LGPL sia reso disponibile, e purché la parte LGPL sia aggiornabile indipendentemente dal resto del programma con cui è linkata. Normalmente si ottiene questo risultato se la parte LGPL è una libreria condivisa, una DLL, un modulo caricabile o un componente.

Ci sono pro e contro nell'uso della LGPL. La Free Software Foundation sconsiglia esplicitamente l'uso della LGPL, con lo scopo di ampliare la scelta di software coperto da GPL. Per chi condivide questa finalità, è consigliabile leggere e capire perché la FSF preferisce la GPL. Se, d'altra parte, lo scopo è quello di creare librerie o moduli liberi, senza preoccuparsi del software che verrà linkato con esse, allora la LGPL può essere una buona scelta.

La LGPL è compatibile con la GPL; questo significa che si può prendere un pezzo di codice LGPL, incorporarlo in un programma GPL e distribuire il tutto sotto la GPL. Questa è un'importante caratteristica di questa licenza.

La nuova BSD e la licenza MIT X

Se lo scopo cui si mira è la massima diffusione del codice tramite il permesso di usarlo in qualunque programma, che sia libero o proprietario, la licenza giusta è la nuova BSD (nota anche come licenza BSD senza la clausola di pubblicità) o la licenza MIT X.

Alcuni famosi programmi distribuiti con una di queste due licenze sono il kernel e gli strumenti di base del sistema operativo FreeBSD, il server X XFree86, molti strumenti di rete, e il server web Apache.

La nuova BSD dà all'utente la massima libertà. Solo il software di pubblico dominio dà una libertà maggiore, anche se in Europa gli autori non possono in ogni caso rinunciare alla paternità dell'opera. Gli utenti possono utilizzare il software come meglio credono, anche ridistribuendolo con una licenza proprietaria, così com'è o modificato. L'altra faccia della medaglia è che chiunque può prendere il software, migliorarlo e redistribuirlo in forma eseguibile senza sorgenti, mantenendo le modifiche segrete, senza restituire la libertà ottenuta. Ma se gli autori originari costituiscono un gruppo di riconosciuta competenza su quello specifico argomento, un gruppo che continua ad operare miglioramenti e distribuirli con la stessa licenza, il rischio non esiste, e il software gode del pubblico più vasto possibile. Esempio di un tale caso è l'evoluzione della pila di protocolli TCP/IP a patire dai sorgenti originari del sistema BSD: benché molti produttori software abbiano usato il codice TCP/IP nei propri programmi proprietari, ogni nuovo sviluppo è stato sempre incorporato nel codice originario, e ad oggi il meglio della pila protocollare TCP/IP è libera.

Le licenze nuova BSD e MIT X sono compatibili con la GPL, cioè si può prendere un pezzo di codice MIT X, incorporarlo in un programma GPL e distribuire il tutto sotto la GPL. È da notare però che la licenza BSD originale non è compatibile con la GPL a causa della clausola di pubblicità, che impone che una nota sia inclusa in tutto il materiale pubblicitario distribuito col programma. Siccome la GPL proibisce ogni restrizione addizionale circa la redistribuzione del software, la licenza BSD originale non è compatibile con la GPL.

Contributi al software libero

Quando si contribuisce ad un programma libero, piuttosto che scriverlo da capo, la cosa migliore è usare la licenza adottata dal programma stesso. Pur essendo spesso possibile fare diversamente, di solito non è consigliabile.

Una ragione per evitare di combinare licenze diverse per lo stesso programma è che spesso non è facile accertare la loro compatibilità. È accaduto in passato che incompatibilità o problemi legali siano stati scoperti solo dopo molto tempo, mettendo così in dubbio i diritti degli autori e degli utenti. Un'altra ragione è che, se il programma che si modifica ha sviluppato una comunità attorno a sé, questa può vedere di malocchio un cambiamento di licenza, gettando così una cattiva luce sulle modifiche apportate non per ragioni tecniche, ma a causa della licenza con cui queste sono distribuite.

Per esempio, volendo proporre una modifica al kernel Linux, bisognerà renderla soggetta alla GNU GPL, essendo questa la licenza utilizzata per il resto del kernel, né sarebbe possibile fare altrimenti. D'altra parte, se si vuol proporre un nuovo modulo per il simulatore di reti ns-2, è preferibile distribuirlo con una licenza nuova BSD, anche se sarebbe possibile usare una licenza LGPL, o anche una GPL con eccezioni. In questi ultimi casi, siccome il resto del codice di ns-2 (che è di notevoli dimensioni) è in gran parte coperto da licenza BSD, una licenza di tipo diverso rischierebbe di essere malvista all'interno della comunità che gestisce il programma.

Alcune associazioni che producono software libero chiedono a chi contribuisce di firmare una liberatoria o un trasferimento di copyright. La Apache foundation e la Free Software Foundation chiedono di cedere loro i diritti di sfruttamento economico, o almeno di rinunciare ad ogni rivendicazione economica sul software che viene proposto per l'incorporazione nei loro progetti di software libero. La ragione è che, se mai una disputa sui diritti d'autore dovesse arrivare in tribunale, la FSF o la Apache foundation si troverebbero in una posizione molto più forte come uniche titolari dei diritti di sfruttamento economico, piuttosto che trovarsi nella posizione di dover convincere ad andare in giudizio una miriade di sviluppatori, molti dei quali potrebbero non essere interessati a farlo, o che potrebbero essere irreperibili.

Un altro punto da considerare è che contribuire all'avanzamento di una base di codice affermata richiede non solo qualità tecnica e una corretta scelta della licenza, ma anche conoscenza della comunità che si è aggregata attorno al software, e della prassi accettata per proporre nuovi contributi. Ci possono essere solo uno o due autori principali, come ci possono essere diversi sviluppatori responsabili di sezioni diverse. In ogni caso, seguire l'uso consolidato è condizione per essere presi sul serio.

Licenze per la documentazione del software

Il software è normalmente accompagnato dalla documentazione relativa, di solito parte della distribuzione stessa. Molti autori di software libero usano la stessa licenza per il software e per la documentazione. Benché sia in linea di principio scorretto, perché le licenze per il software libero fanno esplicito riferimento al software, quest'uso è ormai comune, e non ha dato adito a problemi legali. Usare la stessa licenza software per la documentazione è quindi una prassi priva di rischi.

Esistono comunque due alternative interessanti per chi vuole usare licenze esplicitamente scritte per la documentazione: la GFDL e le licenze Creative Commons.

La licenza libera per la documentazione del progetto GNU (GFDL)

Per chi vuole scrivere un intero libro da stampare e vendere, il cui contenuto sia liberamente riproducibile e modificabile, la GFDL è una buona scelta. Si tratta di una complessa licenza con permesso d'autore, con molte parti opzionali come copertine, risvolti, quaderno delle modifiche, sezioni immutabili, che la rendono adatta a un prodotto complesso come è un libro. È molto utilizzata dalla FSF per la documentazione del progetto GNU. La GFDL è stata oggetto di numerose critiche, soprattutto perché l'abuso delle sezioni immutabili può causare problemi nella creazione di piccole opere derivate, e può causarne l'accumulo nel tempo.

Licenze Creative Commons

Per chi desidera una semplice licenza libera con permesso d'autore, è possibile usare la licenza Attribution-ShareAlike dei creative commons. In alternativa, una licenza libera senza permesso d'autore è la licenza Attribution. Entrambe consentono il libero uso, anche a fini di lucro, e la modifica dell'opera, a condizione che sia citato l'autore. Entrambe permettono la copia e la redistribuzione, ma la versione con permesso d'autore impone che quest'ultima avvenga con identica licenza. Entrambe le licenze sono in corso di traduzione e adattamento da parte di tecnici e legali di diversi paesi in tutto il mondo, in maniera che siano calate perfettamente all'interno dei diversi sistemi legislativi.


Copyright © 2004-2005 Francesco Potortì
La versione ipertestuale più recente, comprendente riferimenti ad altri documenti sul web si trova ad <http://fly.isti.cnr.it/sl/licenze.html>

È consentita la copia letterale e la distribuzione con qualsiasi mezzo, a condizione che questa nota sia riprodotta.

Ultimo aggiornamento: 2005-01-26