Approfondimenti sulla AGPL

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.

Tags:

Leave a Reply

*
To prove that you're not a bot, enter this code
Anti-Spam Image