Windows 7 sins
Lunedì, Novembre 23rd, 2009Windows 7 sins è una campagna della Free Software Foundation.
Windows 7 sins è una campagna della Free Software Foundation.
Cos’è il copyleft?
Il termine copyleft è chiaramente il contrario di copyright. La traduzione italiana (contestata) è permesso d’autore. Ma che cosa significa?
Il copyright sono i “diritti” dell’autore di un’opera, intesi come divieti per chi ne possiede una copia. La famosa frase “All rights reserved” (tutti i diritti riservati) rende abbastanza ovvio l’ossimoro: non si parla di diritti, ma di rigide imposizioni.
Il copyleft è una clausola che può essere applicata a una licenza libera. Quest’ultima garantisce le libertà basilari all’utente. Tra queste libertà vi è quella di distribuirla. Il problema nasce proprio qui: se io scarico un software libero, ho il diritto di:
Personalmente penso che la risposta alle domande sopra poste debba sempre essere no. Per lo stesso motivo per cui si sviluppa software libero, bisognerebbe impedire che tale software venisse distribuito non liberamente o andasse a integrare altri software che liberi non sono.
Altri la pensano diversamente. Ritengono che impedire le tre azioni sopra elencate equivalga a privare gli utenti di alcune loro libertà. A questa obiezione rispondo che non bisogna abusare della parola libertà. La mia libertà inizia dove finisce la tua? Bene, allora non ho il diritto di prendere un software (scritto da me o da altri), fornirtene una copia e decidere cosa farai tu con quella copia. Che senso ha lagnarsi di “non essere liberi di imporre”? E’ pura retorica.
Ad ogni modo non tutti la pensano così e non riuscirò, con questo post, a convincerli a rivedere le proprie idee. Con questa introduzione voglio principalmente spiegare cos’è il copyleft: è il “copyright al contrario” che impedisce di distribuire un software libero (o i suoi moduli) come software non libero.
L’uso del programma in rete
Le licenze, con o senza copyleft, hanno un problema storico. Come ho spiegato in un post precedente, le licenze libere tradizionali sono state scritte anni prima della diffusione di internet come la conosciamo oggi. Di conseguenza esse garantiscono tutte le libertà fondamentali agli utenti che ricevono una copia del programma, che avranno quindi la possibilità di eseguirlo in locale o installarlo essi stessi su di un server. Quando utilizzano il programma attraverso una rete però (webmail, forum, mailing list…) non ricevono alcuna copia del programma e i termini della licenza non si applicano. Queste persone non vedono il codice sorgente, tanto meno lo possono modificare o ridistribuire. Eppure, da un punto di vista logico, non esiste un motivo per il quale chi usa Evolution debba avere più libertà di chi usa una webmail.
L’unica licenza che prende in considerazione questo problema, e che quindi garantisce a chi usa un programma attraverso la rete le sue libertà basilari, è la GNU AGPL. Si tratta di una licenza libera dotata di un forte copyleft, derivata dalla GPL.
Al momento, chi non ama il copyleft non ha a disposizione una licenza già pronta che risolva i problemi legati all’uso di un programma in rete. Vi è però una motivazione: inserire una clausola che garantisca le libertà degli utenti di rete significherebbe inserire una forma di copyleft. Infatti non si garantirebbe solo la libertà di chi riceve il programma che si sta distribuendo, ma anche la libertà degli utenti del suo server.
Chi considera una regola simile inaccettabile, a mio parere, dovrebbe comunque garantire in prima persona almeno i diritti degli utenti dei propri siti internet. Nulla gli vieta infatti di distribuire i sorgenti di tutti i programmi liberi che crea o che utilizza, se la licenza lo consente.
Le licenze senza copyleft
La più famosa licenza priva di copyleft è indubbiamente la BSD. Quando si utilizza questo nome però bisognerebbe capire cosa si intende. Esistono infatti due versioni: la licenza BSD a 4 clausole (o licenza BSD originale o FreeBSD license) conteneva la cosiddetta clausola pubblicitaria (ad clause). La clausola numero 3 imponeva infatti di includere nel software una frase che riconoscesse la paternità del programma alla This product includes software developed by the University of California, Berkeley and its contributors. Non si tratta ovviamente di un abuso, ma questo ha portato il problema della proliferazione dei riconoscimenti. Poichè ogni autore di un “pezzo” di software tendeva a modificare questa licenza aggiungendo il proprio nome o quello della propria organizzazione, man mano che nuovi programmatori miglioravano il codice si aggiungevano sempre più nomi. Lo stesso FreeBSD ha deciso di eliminare quella clausola e tentare di eliminare i nomi che potevano essere eliminati quando, nel 1997, ha dovuto rilasciare una versione con ben 75 riconoscimenti. Va comunque detto che non vi è nulla di non libero in tale licenza, solo qualche problema pratico.
La versione successiva della licenza viene generalmente chiamata la BSD a 3 clausole, o modificata. La clausola publicitaria è stata depennata. Questa licenza, in pratica, permette a chi riceve una copia del software di farne ciò che desidera. Anche distribuirlo in forma binaria - purchè naturalmente applichi la stessa licenza.
La licenza X11 non obbliga l’utente a includere il nome dell’autore originale (l’X Consortium) ma al contrario impedisce l’uso di tale nome a fini pubblicitari, a meno che non si disponga di esplicita dichiarazione scritta da parte dell’interessato.
La SGI Free Software License B, versione 2.0, è molto simile alla X11. Le versioni precedenti alla 2.0 non sono considerate libere. Tuttavia esse permettono di ridistribuire il software con una versione successiva della licenza, perciò la loro non-libertà si può annullare ni maniera banale.
La licenza Expat permette essenzialmente di fare qualsiasi cosa con il software che copre, purchè non si elimini la licenza. Inoltre essa si applica esplicitamente anche ai file di documentazione distribuiti con il programma.
Sia la licenza X11, sia la Expat sono talvolta chiamate licenza MIT. Data l’ambiguità del termine sarebbe meglio evitarlo.
Come si combinano queste licenze con la GPL e la AGPL?
Tutte le licenze senza copyleft qui elencate sono compatibili con la GPL. Questo significa che il codice coperto da GPL e il codice libero coperto da queste licenze possono essere combinati insieme formando un’unica entità distribuibile, modificabile e ridistribuibile. Ogni parte di codice sarà sottoposto solo alle regole stabilite dalla licenza alla quale è associato.
Queste licenze sono compatibili anche con la AGPL. Si tenga presente che un modulo coperto da una di esse, se inserito in un software più ampio coperto da AGPL, viene sottoposto a una delle clausole della AGPL. Se modificato, quindi, il suo codice sorgente dovrà essere reso disponibile alle persone che se ne servono attraverso una rete.
Ho già parlato (un paio di post fa) della licenza GNU Affero General Public License, o AGPL. Ma vorrei approfondire il tema.
Differenze con la GPL
La AGPL3 differisce con la GPL3per principalmente per la sezione 13. La riporto, in inglese, perchè GNU non ha ancora fornito una traduzione in italiano.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
Per prima cosa, essa dice che, se si modifica il codice sorgente del programma, bisogna offrire ai propri utenti (che interagiscono con il programma attraverso la rete) la possibilità chiara (prominently) di ricevere una copia dei sorgenti stessi.
La AGPL e le altre licenze
Il codice sorgente del programma rilasciato con la AGPL potrebbe includere delle librerie o altri moduli, che possono anche essere stati scritti da altri programmatori, e che potrebbero essere coperti da licenze differenti. Allora sorge la domanda: se si modifica queste librerie, occorre poi distriburle agli utenti che le utilizzano attraverso una rete?
Risposta: si, a meno che non si tratti di librerie di sistema. Non sarebbe ragionevole, infatti, chiedere che chi modifichi libc ne fornisca il sorgente agli utenti del proprio sito. Tuttavia, se si utilizza una libreria per la connessione al database e questa viene modificata, i sorgenti dovranno essere pubblicamente disponibili.
Per la precisione, la sezione 13 utilizza una definizione ben precisa parlando del “codice sorgente” che deve essere distribuito: lo chiama Corresponding Source. Questo termine è definito nella sezione 1 della AGPL:
The “Corresponding Source” for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work’s
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
AGPL e GPL: compatibili?
La AGPL3 richiama esplicitamente la GPL nella sezione 13 riportata all’inizio. Essa è compatibile con la versione 3 della GPL. Questo significa che è possibile usare una libreria distribuita con GPL3 all’interno di un programma AGPL.
Tuttavia, la AGPL non è compatibile con la GPL2. Questo accade perchè quanto richiesto dalla sezione 13 è definito come Further Resctrictions dalla sezione 7 della GPL2. Essa proibisce qualsiasi ulteriore restrizione, perchè si rischierebbe che un distributore aggiunga alla licenza imposizioni che non hanno a che fare con la libertà.
Scegliere tra AGPL e GPL
La maggior parte degli sviluppatori web che rilasciano script coperti da licenza AGPL3, semplicemente non hanno riflettuto sul fatto che questa licenza non garantisca realmente la libertà degli utenti o non sono a conoscenza della AGPL.
La AGPL andrebbe sempre utilizzata al posto della GPL. Nel caso in cui si stia rilasciando uno script PHP che produce output in HTML, le ragioni sono ovvie. Ma anche quando si sta rilasciando un programma di altro genere è saggio utilizzare la AGPL. Infatti il software potrebbe essere scaricato da programmatori che decideranno di migliorarlo, eventualmente aggiungendovi nuove funzionalità - questa pratica è prevista dalle licenze libere ed è da incoraggiare. Tuttavia questo significa anche che un programma pensato per essere eseguito in locale potrebbe diventare un programma che offre funzionalità di rete, che magari l’autore originale non immaginava. E’ quindi una buona abitudine utilizzare sempre la AGPL.
Troppo libera per Google
Google si proclama sostenitore del software libero e fornisce strumenti per alcuni progetti. Google Code però ha preso una decisione drastica: ha bandito la AGPL. Chiedendo gentilmente agli autori dei progetti coperti da questa licenza di… andarsene.
Un breve post per segnalarvi che Ac LAB (Anti-cloud LAB) ha ora una sua mailing list. La lista è pubblica. Consiglio l’iscrizione a chi è interessato all’argomento.
La licenza storica del progetto GNU è la GPL. Essa è apprezzata da alcuni e mal sopportata da altri perchè, oltre a garantire all’utente le quattro libertà del software, è dotata di un forte copyleft.
Copyleft è il contrario di copyright. Significa che una licenza, oltre a garantire delle libertà, impone (se di imposizione si può parlare) che queste libertà vengano preservate. Un copyleft minimo consiste nello stabilire che, quando un software viene stabilito, esso sia accompagnato dalla stessa licenza con la quale lo si è avuto. In caso contrario una persona potrebbe prendere un software libero e distribuirlo come software proprietario.
Il copyleft della GPL è particolarmente forte, perchè vieta di aggiungere parti di codice proprietario al programma. Si può modificare e migliorare il software e non distribuirlo. Ma se si desidera distribuirne una versione modificata, i sorgenti delle proprie modifiche devono poter essere visionati da chiunque riceva il software stesso e devono essere coperti da licenza GPL o altre licenze compatibili. Il software o parte di esso inoltre non potrà essere usato come modulo per un software non libero. Vi sono poi ulteriori “restrizioni”, che in realtà non sono altro che garanzie di libertà per l’utente finale.
Ma la GPL ha un forte limite: il suo spirito originale viene completamente snaturato se utilizzata con applicazioni web. Questo perchè quando essa è stata scritta internet non esisteva.
Spieghiamo questo limite con un esempio. Paperino scrive un programma, poniamo un web forum, e lo distribuisce sul suo sito. La licenza è la GPL. Topolino scarica questo forum e lo installa a sua volta sul suo sito. Dal suo punto di vista è software libero: può usarlo come vuole, studiarne i sorgenti, modificarlo e distribuirlo (anche in versione modificata). Infatti, dopo aver constatato che manca una funzione di ricerca tra i messaggi vecchi, Topolino stesso la implementa. Fa qualche prova e si sfrega le mani: va che è una scheggia! Paperoga si collega quotidianamente al sito di Topolino e usa il forum. Un giorno decide di mettere su un forum anche lui, si collega al sito di Paperino, scarica il programma e lo installa. La funzionalità di ricerca non c’è e purtroppo Paperoga non ha le conoscenze per implementarla. Topolino (che mi è sempre stato un po’ antipatico) non ha condiviso con la comunità il codice che ha scritto.
Questo non è giusto: Paperoga usa il forum che gira sul sito di Topolino, è a tutti gli effetti un utente del software. Eppure non gode di nessuna delle quattro libertà sopra citate. Perchè? Tecnicamente perchè non ne ha mai ricevuto una copia. Lo usa attraverso una rete. Topolino, non distribuendo il programma in sè, non è tenuto a fornire nè i sorgenti nè la licenza GPL.
Tutto ciò è perfettamente legale ma profondamente contrario alle intenzioni di chi ha scritto la licenza.
Fortunatamente la società Affero ha scritto una nuova licenza, che è in realtà una variante della GPL. E’ la licenza chiamata GNU Affero General Public License, o semplicemente AGPL. Essa è molto simile alla GPL ma con un’aggiunta importante. Stabilisce che chi modifica il software ricevuto e lo installa su un server pubblico deve condividere con la comunità le modifiche apportate.
In questo modo viene a cadere l’assurda distinzione tra chi utilizza un software dopo averne ricevuta una copia e chi lo utilizza attraverso la rete. Almeno in teoria.
Consiglio la lettura di due saggi “politici” riguardanti il software libero. Entrambi sono di Eben Moglen, che è stato l’autore originale della licenza GPL e ha collaborato fino alla stesura di una bozza per la terza versione.
Spero che la lunghezza e il fatto che il primo sia in inglese non scoraggino la lettura. Se siete a conoscenza di traduzioni in italiano di Anarchism tiumphant vi prego di segnalarmele.
Buona lettura.
La licenza libera per eccellenza scritta e utilizzata dal progetto GNU è la General Public License (GPL). Fin dagli albori o quasi, alla GPL hanno affiancato un’altra licenza un po’ meno libera: la LGPL. Questo acronimo inizialmente stava per Library General Public License e questo ha portato molti sviluppatori a credere che fosse la licenza più adatta per le librerie. Per risolvere l’inconveniente il nome della licenza è stato cambiato in Lesser General Public License: licenza pubblica “un po’ meno generale”.
Infatti le librerie, per essere libere e dotate di un buon copyleft, dovrebbero essere rilasciate con licenza GPL o AGPL. La LGPL è un compromesso tra la libertà assoluta che la GPL giustamente esige e le logiche di mercato. Infatti la differenza tra queste due licenze è molto semplice: una libreria LGPL, pur essendo tecnicamente libera, può essere utilizzata all’interno di un software commerciale.
Sembra strano che il progetto GNU e la Free Software Foundation non possano tollerare che alcune righe di codice proprietario siano inserite in un programma libero (la GPL giustamente lo vieta) ma allo stesso tempo chiudano un occhio se una libreria libera implementa funzionalità che poi verranno utilizzate da software proprietari. In altre parole: un programma libero con un pezzo di codice proprietario non va bene; un programma proprietario con un pezzo di software libero va bene. Eticamente non regge.
Oltretutto interi programmi (e non solo librerie) sono stati rilasciati con licenza LGPL e sono considerati liberi.
Sul sito di GNU vi è un articolo intitolato Why you shouldn’t use the Lesser GPL for your next library, nel quale, oltre a spiegare perchè la LGPL normalmente non dovrebbe essere usata, si spiega perchè in alcuni casi sia ritenuta preferibile. Essenzialmente il ragionamento è questo: se una libreria offre funzionalità che nessun’altra libreria offre, o se la sua qualità è nettamente superiore a quella delle librerie non libere, è giusto che sia rilasciata come GPL; se però teme la concorrenza di altre librerie proprietarie, la sua licenza potrebbe essere la LGPL. Il motivo addotto da GNU è il seguente: i software proprietatari, se possono scegliere quali librerie usare, le scelgono tra quelle che permettono al programma stesso di rimanere non libero; se le librerie libere sono nettamente superiori alle loro concorrenti, non devono porsi questo problema, perchè un software per essere di qualità potrebbe/dovrebbe utilizzarle e divenire libero; se invece non lo sono, per trovare una maggiore diffusione, devono permettere il proprio utilizzo all’interno di programmi non liberi, quindi usare la LGPL.
Il progetto GNU, quindi, sembra partire dal presupposto che un programma proprietario che utilizza una o più licenze LGPL sia eticamente migliore di un programma proprietario che non utilizza alcuna libreria libera. Questo potrebbe essere in parte vero, ma mi rifiuto di esaminare il problema da questo punto di vista. Loro stessi, in altri casi, rifiutano questo tipo di approccio: si veda l’articolo di Stallman Avoiding ruinous compromises, nel quale definisce “rovinoso compromesso” l’inserimento di driver non liberi all’interno delle distribuzioni GNU/Linux allo scopo di aumentarne la diffusione.
Se poi lo scopo è non imporre limitazioni per vie legali, chiedendo implicitamente protezione a quegli stessi poteri che limitano tutte le nostre libertà (digitali e non), allora non bisognerebbe usare alcuna licenza. In tal caso si deve dichiarare esplicitamente il proprio software di pubblico dominio, per che in caso contrario All rights are reserved, come dice la SIAE. Questa è una scelta di tipo diverso, che non giudico migliore nè peggiore.
Usare la LGPL per diffondere maggiormente una libreria, accettando un compromesso eticamente ancor meno accettabile (potenziamento di software proprietari/monopolistici), non è peggio che includere driver proprietari?
Non sarebbe ora che la Free Software Foundation e il progetto GNU allargassero il proprio concetto di “Rovinoso compromesso” e dessero alle fiamme la licenza LGPL?
Invito di nuovo chi segue il mio blog a visitare Ac LAB (Anti-cloud LAB), che continua ad arricchirsi con contenuti interessanti.
Ora è possibile inserire commenti agli articoli. La registrazione non è richiesta (anzi, non è proprio possibile).
Ac LAB - aclab.indivia.net
Riprenditi il cervello!
Ne hanno parlato tutti i principali siti e blog di informazione che trattano di informatica. Il nuovo servizio di Opera sta passando come un’alternativa al cloud computing, ma è proprio così? A ben guardare no: è semplicemente un cloud computing “moderato” basato su software proprietario. Eppure potrebbe rappresentare ugualmente una novità interessante…
Sempre più spesso i programmi di cui ci serviamo, i nostri dati e i nostri documenti si trovano su computer remoti. In parte questo concetto sta alla base di internet: visualizzo un sito creato da uno che vive in australia… ma da tempo questo fenomeno ha superato i limiti consigliati dal buon senso.
Ormai affidiamo quotidianamente le nostre comunicazioni, i nostri dati, i nostri pensieri, i frutti della nostra creatività alle multinazionali, senza avere la più pallida idea di cosa ne facciano realmente.
Il Software Libero non è tale per chi lo subisce. Se non lo posso modificare, non posso studiarne le modifiche apportate da altri, e anzi non so nemmeno che software è (perchè gira su un server in Arizona), ecco che i più apprezzati software liberi diventano proprietari.
Ci stiamo affidando a tecnologie sulle quali non abbiamo alcun controllo; stiamo perdendo le capacità e la voglia di controllarle; non conosciamo chi le controlla… siamo uomini e donne o clienti di Facebook?
Ac LAB (anti-cloud laboratory) mira alla diffusione di informazioni su chi controlla i nostri dati, su come lo fa, su quali pericoli concreti ci minacciano. Ma anche su quali alternative possiamo costruire da soli, senza metterci nelle mani di qualche multinazionale.
aclab.indivia.net
Riprenditi il tuo cervello!