GPL contro BSD

Per motivi di lavoro mi sono scontrato con l’argomento licenze per il software.
Nel mondo dello sviluppatore di programmi (e siti) le licenze e le vendite dei propri prodotti non sono cose molto semplici.

Questa immagine non è assolutamente di proprietà di Micene.net

Googlando per la rete ho trovato questo interessantissimo articolo che spiega la differenza tra la licenza GPL e quella BSD.

Essendo il sito coperto dalla licenza CC (come lo è Micene.net), posso tranquillamente riportarvi l’articolo a patto di indicarvi la paternità che in questo caso è del sito syscallme.2bopen.org.

Eccovi l’articolo:

Su indicazione del mitico Luca Corbo, ho letto questo articolo, contenente una riflessione e un parallelismo tra la licenza GPL e la BSD. Devo dire che mi è sembrato interessante e ho decido di tradurlo e postarlo.

In realtà il mio obiettivo è soprattutto cercare di scatenare una discussione su queste pagine al riguardo. E’ un articolo di Armin Ronacher e l’originale lo trovate qui.

Una precisazione è tuttavia importante prima di andare a leggere: Il fatto che io stia pubblicando queste parole, non vuole dire nè che le condivida, nè tantomeno che ne consigli le conclusioni. Trovo solo interessante porsi queste domande e diffondere queste considerazioni in una lingua a noi più comprensibili.

Sei sicuro di voler usare la GPL

Quando ho iniziato ad usare Linux ero totalmente concentrato sul concetto di Open Source. Lo sono tuttora, ma il mio punto di vista è un po’ cambiato. La prima licenza Open Source che ho utilizzato per il mio primo “codice” era GPL e ho continuato a farlo per un bel po’. L’ultimo “codice” sul quale ho lavorato attivamente, Zine, era licenziato GPK fino a pochi giorni prima del rilascio, quando ho decido di re-licenziare tutto sotto la licenza BSD modificata.

Il motivo per cui ho cambiato la licenza all’ultimo momento è un po ‘complessa e voglio condividere la mia esperienza qui per un attimo. Suppongo che molte persone hanno agito come me e hanno scelto la GPL per anni perch� tutti lo facevano, senza mai avere la curiosità di leggerla e conoscere tutte le implicazioni che essa porta con se.

Left contro Right
GPL e BSD (e simili), non potrebbero essere licenze più diverse tra loro. A partire dalla loro lunghezza. La licenza BSD consta di due o tre clausole in tutto, più la dichiarazione di diritto d’autore e la clausola di non-garanzia. La GPLv3 dall’altro lato ha la bellezza di 600 linee di testo. BSD limita i diritti, la licenza GPL permette. Restringere i diritti effettivamente suona male, ma semplicemente significa che, con il codice licenziato in BSD “modified” è possibile fare praticamente tutto ad eccezione di quanto espressamente la licenza vieta. La GPL parte, invece, (dal punto di vista opposto [n.d.A.]) spiegando ciò che puoi fare con essa (…vietando tutto il resto [n.d.A.]). La GPL continua a seguire il principio del Copyleft, cosa che la licenza BSD non sta facendo.
Ciò ha implicazioni molto complesse che molti utenti non conoscono, anche se dovrebbero.

Cosa dice la BSD
Cominciamo ad analizzare la licenza BSD, la licenza che ho scelto. La clausola “tre” la rende molto simile alla licenza MIT e la clausola “due” è fondamentalmente la licenza MIT. Che cosa significa?

Copyright (c) [ANNO], [PROPRIETARIO DEL COPYRIGHT]
All rights reserved.

La ridistribuzione e l’uso in forma sorgente e binaria, con o senza modifiche, sono consentiti a condizione che siano soddisfatte le seguenti condizioni:

* Le ridistribuzioni del codice sorgente devono mantenere la nota di copyright di cui sopra, il presente elenco di condizioni e la seguente dichiarazione di non responsabilità.
* La ridistribuzione in forma binaria deve riprodurre l’avviso di copyright di cui sopra, il presente elenco di condizioni e la seguente dichiarazione di non responsabilità nella documentazione e / o in altri materiali forniti con la distribuzione.
* N� il nome del n� i nomi dei suoi collaboratori possono essere utilizzati per avallare o promuovere prodotti derivati da questo software senza previa autorizzazione scritta.

Beh, abbastanza semplice! Esso consente all’utente di fare tutto con l’applicazione, ma eliminando il Copyright. La terza clausola significa che le opere derivate non possono utilizzare i nomi dell’autore per farsi pubblicità.

Ora: questo ovviamente significa che chiunque può prendere il tuo software, cambiare il branding e venderlo. Il mondo è cattivo e puoi star certo che ciò accadrà se l’applicazione è buona. Noi parleremo di questa parte della licenza più tardi. Intanto vediamo come funziona la GPL.

Cosa dice la GPL
La licenza GPL è troppo lunga per essere citata qui; cercherò di riassumere gli aspetti più importanti di essa:

* Le copie possono essere distribuiti gratuitamente o per denaro, ma il codice sorgente deve essere spedito o fornito gratuitamente (oppure a prezzo di costo) su richiesta. Colui che riceve il codice sorgente automaticamente assume gli stessi diritti, ciò significa che può condividere copie gratuitamente o rivendendole.
* Il materiale concesso in licenza può essere analizzato o modificato.
* Il materiale modificato deve essere distribuito con gli stessi termini di licenza, oppure non può essere distribuito.

C’è molto di più in questa licenza, come ad esempio quanto codice sorgente deve essere reso disponibile e come gestire questa cosa, ma ciò che ho riportato è l’essenza. Come per la BSD qualcuno può prendere l’applicazione, cambiargli nome e rivenderla, ma questa licenza richiede che il sorgente modificato sia reso disponibile obbligatoriamente sotto sotto gli stessi termini di licenza.
Tuttavia le modifiche devono essere messe a disposizione del pubblico, solo in caso di distribuzione.

Ciò rende perfettamente legale prendere del codice GPL, modificarlo pesantemente e utilizzarlo in applicazioni o librerie non distribuite. Questo è il modo con cui aziende come Google possono far girare le loro versioni di Linux patchate, per esempio. Ma ciò comporta anche che il codice non GPL non può usare codice GPL: e questo è il vero grande problema.

Compatibilità fra licenze
La licenza BSD è compatibile con la licenza GPL, ma la licenza GPL non permette l’uso di codice GPL in codice non GPL. Ciò è decisamente fastidioso se gli utenti si aspettano

BSD è compatibile con la licenza GPL, licenza GPL, ma non consente l’utilizzo di GPL nel codice licenza non GPL codice. Questo è particolarmente fastidioso considerando che le più grandi librerie che gli utenti utilizzano sono in GPL. Per esempio, la popolare libreria readline è sotto licenza GNU GPL. La gente ha cercato di riscrivere readline per sbarazzarsi del problema della GPL, ma le alternative non sono mantenute quanto l’originale.

Io penso che questo sia ciò a cui Steve Ballmer si riferisce come “cancro”. E purtroppo non ha del tutto torto. Ad esempio, ho cercato di sviluppare una gestione della shell interattiva per Zine ma senza readline (che non posso utilizzare poichè Zine è sotto licenza BSD) l’esperienza degli utenti è ridicola. Avrei bisogno di re-licenziare l’intera applicazione in GPL solo per avere una shell interattiva con readline.

Libertà
Ora: questo dipende da come si definisce la libertà. Le persone che stanno dietro la GPL hanno una visione veramente comunista in termini di libertà: il software libero deve essere disponibile a tutti alle stesse condizioni. Purtroppo, come il comunismo, questa visione delle cose non funziona, perch� le esigenze dell’uomo non sono realmente compatibili con questo modo di vedere le cose. D’altro canto ci sono le licenze maggiormente permissive come la BSD che ti danno tutti i diritti, salvo il diritto d’autore e l’”obbligo” di rispettare la libertà. Se solo voleste, potreste prendere del codice BSD e re-licenziarlo sotto la licenza GPL. Questo tipo di libertà, tuttavia, è un biglietto di sola andata. Una volta che avete fatto un rilascio del codice in GPL, esso sarà sempre e solo rilasciabile in GPL. Almeno finchè non revochiate la licenza.

Fare soldi
In definitiva l’obiettivo dello sviluppo del software per molti è quello di fare soldi. Molte persone decidono di utilizzare la licenza GPL per questo, attraverso un sistema di “doppia licenza”, licenziando il proprio software in GPL e con licenza a pagamento, dove quest’ultima vale per le versioni che vengono vendute ai clienti. Come sviluppatore “singolo” (senza una community alle spalle [n.d.A.] è piuttosto difficile vendere codice rilasciato in licenza BSD. Lì il business-model è probabilmente più sviluppare moduli non open source (…ad applicazioni open [n.d.A.], da vendere ai clienti. Se decidi di aprire tutto il codice sorgente sotto la BSD, beh deve essere veramente buono in modo che sia possibile farci i soldi sopra!

Molti sviluppatori non si preoccupano veramente di questo, sviluppano, si divertono e licenziano BSD per gli altri, in modo che possano iniziare da dove loro hanno smesso. Un buon esempio di successo di codice licenziato BSD/MIT sono Django e Ruby on Rails. Entrambi i progetti sono sviluppati da forti comunità, sostenuti da società dietro di esse. La società che sta dietro Rails crea applicazioni rails-based closed-source di grande successo; Molti degli sviluppatori che lavorano su Django sono pagati dalle singole aziende che investono su di esso.
Recap

Prima di licenziare il tuo codice sotto una licenza OpenSource…pensa alla licenza! Entrambi i tipi di licenza hanno i loro vantaggi e svantaggi e sarebbe stupido usare la GPL senza pensare, solo perchè “tutti lo fanno”. Molti lo fanno solo perchè non hanno letto la licenza!