_____________________________________
CHE COS'È IL SOFTWARE LIBERO
L'espressione "software libero" si riferisce alla libertà dell'utente di eseguire, copiare, distribuire,
studiare, cambiare e migliorare il software. Più precisamente, esso si riferisce a quattro tipi di libertà
per gli utenti del software:
- Libertà di eseguire il programma, per qualsiasi scopo (libertà 0).
- Libertà di studiare come funziona il programma e adattarlo alle proprie necessità (libertà 1).
L'accesso al codice sorgente ne è un prerequisito.
- Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2).
- Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale
che tutta la comunità ne tragga beneficio (libertà 3). L'accesso al codice sorgente ne è un
prerequisito.
Un programma è software libero se l'utente ha tutte queste libertà[1].
“Il "Software libero" è una questione di libertà, non di prezzo” [2]. Non importa dunque se il software
viene fornito dietro pagamento di un prezzo: questo non ne cambia la natura.
La disponibilità del codice sorgente, cioè della versione del software che può essere analizzata e
modificata dai programmatori, è centrale nella nozione di software libero. Per funzionare sui computer
i software devono essere tradotti in linguaggio macchina, idoneo a funzionare nei computer, mediante
un programma interprete o mediante un programma di compilazione del “codice oggetto” (la versione
del software che può essere interpretata dal computer ma che è incomprensibile per i programmatori).
Se si dispone solo della versione in “codice oggetto” è praticamente impossibile studiare e modificare
il software come previsto dalla definizione di software libero.
Nel 1998 un gruppo di appassionati fonda la Open Source Initiative[3] con lo scopo dichiarato di evitare
l'enfasi sugli aspetti etici del software libero che, a loro dire, ostacola la comprensione e l'uso del
software libero da parte dell'industria informatica. Utilizzano quindi l'espressione “open source” ed
adottano la Open Source Definition[4], che però, nella sostanza, riproduce con formulazione diversa la
definizione di software libero.
L'espressione “open source” enfatizza il requisito dell’accesso al software in formato sorgente: l’Open
Source Initiative mette in sordina gli aspetti etici e punta l'attenzione sul modello di sviluppo del
software libero/open source.
Analogamente a quanto fa la Free Software Foundation con riferimento alla definizione di software
libero[5], anche l’Open Source Initiative tiene un elenco di licenze alle quali riconosce la conformità con
la Open Source Definition[6], ma se si comparano i due elenchi si rileva che, sostanzialmente,
coincidono e le poche differenze dipendono da questioni di dettaglio più che di sostanza[7].
Esistono molte licenze di software libero, anche se le più utilizzate sono relativamente poche: le 10
licenze più diffuse sono adottate da oltre il 90% dei progetti di software libero[8].
La più importante licenza di software libero è senz'altro la GPL: il 30 % dei progetti di software libero
utilizza la GPLv2 o la GPLv3.
Un aspetto molto importante di alcune licenze di software libero (come la GPL) è il cosiddetto
carattere “copyleft”. La parola “copyleft” esprime un gioco di parole intraducibile in italiano. In
inglese, right può significare “destra” e “diritto” mentre left può significare “sinistra” e “permesso”.
Quindi “copyleft” è il contrario di copyright e si potrebbe tradurre “permesso d'autore”.
La caratteristica “copyleft” di una licenza implica che è legittimo modificare e redistribuire il software
licenziato secondo quella licenza a condizione che la versione modificata sia a sua volta licenziata
secondo i termini della stessa licenza.
Per dirla in breve, le licenze “copyleft” incentivano la condivisione: chi vuole modificare il software e
distribuirlo può farlo a condizione che a sua volta conceda ai suoi utenti le stesse libertà che gli sono
state concesse.
La clausola “copyleft” non è uguale in tutte le licenze di software libero e quindi produce effetti
diversi a seconda della sua formulazione.
Si usa quindi classificare le licenze di software libero in base al modo in cui funziona, in una specifica
licenza, la caratteristica “copyleft”.
Ci sono, innanzitutto,
licenze “non-copyleft”, cioè licenze (come le licenze BSD, MIT e Apache) che
non contengono una clausola “copyleft” e quindi non hanno effetto “copyleft”: chi distribuisce un
programma licenziato con una licenza “non-copyleft” non è tenuto a distribuirlo secondo i termini
della stessa licenza.
Vi sono poi le
licenze cosiddette “strong copyleft”: sono licenze che contengono clausole “copyleft”
che estendono i loro effetti a tutte le opere derivate, comprese le librerie che, quando si esegue il
programma licenziato con licenza “strong copyleft”, sono collegate dinamicamente a questo.
Le licenze che, invece, circoscrivono in modo più o meno ampio la portata della clausola “copyleft”,
permettendo quindi di applicare licenze diverse ad alcune opere derivate, sono dette
licenze “weak
copyleft” (per es., la LGPL e la MPL).
Vi sono poi alcune licenze (per es., l'AGPL e l'EUPL) che impongono di rendere disponibile il codice
sorgente del programma anche agli utenti che lo utilizzano da remoto, collegandosi al server presso il
quale il software è fatto funzionare come servizio (cd. SaaS): queste licenze sono dette “cloud
copyleft”.
NOTE DEL PARAGRAFO
1. Vedi http://www.gnu.org/philosophy/free-sw.it.html.
2. Come si legge in http://www.gnu.org/philosophy/free-sw.it.html.
3. Vedi http://www.opensource.org.
4. Vedi http://www.opensource.org/docs/definition_plain.php.
5. Vedi http://www.gnu.org/licenses/license-list.it.html.
6. Vedi http://opensource.org/licenses/.
7. Vedi https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses
8. Vedi http://www.blackducksoftware.com/oss/licenses#top20.
SOFTWARE LIBERO E DIRITTO
Al software si applica il diritto d'autore che riserva al titolare i diritti di pubblicazione e di
utilizzazione economica del software in ogni modo, in particolare mediante l'esercizio esclusivo delle
facoltà di riproduzione, modifica, distribuzione, noleggio, prestito, comunicazione al pubblico,
esecuzione in pubblico e pubblicazione in raccolta del software.
Il diritto d'autore opera di default: anche se il titolare del diritto non fa nulla (non registra il software e
non lo accompagna con informative o licenze), il suo software è protetto dal diritto d'autore e, senza la sua autorizzazione, non può essere utilizzato.
Perché un programma sia software libero è quindi necessario che il titolare del diritto lo pubblichi
secondo i termini di una idonea licenza: una licenza di software libero.
In alcuni paesi, come per esempio gli Stati Uniti, al software si può applicare il diritto di brevetto per
invenzione che attribuisce al titolare il diritto esclusivo di attuare l'invenzione e di trarne profitto.
Chi usa o distribuisce del software libero non può solo per questo escludere che quel software attui
un'invenzione tutelata da un brevetto. L'uso e la circolazione del software libero sono quindi interferiti anche dal diritto di brevetto per
invenzione.
In alcune licenze di software libero si adottano diverse tecniche per limitare l'interferenza dei brevetti
con il software libero e scoraggiare chi voglia impedire l'uso e la circolazione del software libero
facendo valere un proprio brevetto per invenzione.
Per esempio, alcune licenze prevedono che chi contribuisce al software e/o chi lo distribuisce (a
seconda dei casi) concede licenza dei propri (eventuali) diritti di brevetto. L'ampiezza della licenza dei
diritti di brevetto varia da licenza a licenza e quindi può riguardare un insieme più o meno ampio dei
brevetti detenuti da chi contribuisce al (e/o da chi distribuisce il) software libero.
Va poi ricordato che possono interferire con l'uso e la circolazione del software libero anche altre
norme, come per esempio quelle:
- sui marchi e sugli altri segni distintivi,
- sulle informazioni segrete,
- sui prodotti a duplice uso.
Inoltre, chi usa o distribuisce software libero deve anche valutare eventuali ulteriori obblighi (che si
potrebbero assumere, per es., con un contratto, distinto dalla licenza di software libero). È però
importante verificare che tali obblighi siano compatibili con la licenza di software libero applicabile:
alcune licenze di software libero (come per es. la GPL e la MPL) limitano espressamente la possibilità
che l'utente assuma obblighi che interferiscono con la sua libertà di distribuire ulteriormente il
software.
OBBLIGHI DEGLI UTENTI DI SOFTWARE LIBERO
Le licenze di software libero impongono una serie di obblighi a chi distribuisce il software in versione
originale o modificata.
Deve quindi rispettare questi obblighi chi distribuisce (su supporti fisici o anche online) copie o
modifiche (cd.
patch) di software libero o chi distribuisce dei prodotti che includono componenti in
software libero. Questi obblighi riguardano quindi anche soggetti che operano in settori industriali
lontani dall'industria informatica: molti dei prodotti oggi sul mercato (come per esempio autovetture,
condizionatori, decoder ed elettrodomestici) includono comunemente software libero.
In certi casi, anche l'offerta di software come servizio da remoto (cd.
SaaS) può implicare la necessità
di rispettare alcuni degli obblighi imposti dalle licenze di software libero (per es., se nel server si
utilizza software “
cloud copyleft” o se l'utente deve utilizzare nel suo client del software libero
distribuito dal fornitore del servizio).
Gli obblighi imposti a carico di chi distribuisce il software o di chi vi contribuisce sono previsti dalle
licenze di software libero a vantaggio degli utenti “a valle” (gli utenti ai quali si distribuisce il
software e, a volte, i loro aventi causa) ma anche a vantaggio dei licenzianti (coloro i quali hanno
sviluppato e distribuito la versione originaria del software).
Alcune licenze “
copyleft” sono incompatibili tra di loro. Quindi, se si intende realizzare un progetto
complesso, riusando diversi programmi licenziati con diverse licenze di software libero, può essere
utile analizzare (meglio se prima di iniziare il progetto) come interagiscono i diversi componenti per
evitare il rischio di incompatibilità.
Le diverse licenze “
copyleft” impongono su chi distribuisce il software una serie di obblighi che sono
tipici di questo tipo di licenze ma che variano da licenza a licenza:
- rendere disponibile il software anche in formato sorgente (per es., la GPL e la MPL),
- includere informazioni sull'installazione del software (per es., la GPL e la EPL),
- se si modifica il software, rendere disponibile anche la versione originale (per es. la MPL e la GPL),
- non imporre all'utente ulteriori obblighi che limitino l'ulteriore distribuzione del software (per es. la
GPL e la MPL),
- manlevare i contributori del software da eventuali danni conseguenti alla distribuzione di prodotti
che includono il software stesso (per es., la EPL).
Vi sono poi altri obblighi che riguardano tutti i tipi di licenze di software libero, anche quelle “
non-copyleft”,
che anche variano da licenza a licenza.
Innanzitutto, praticamente tutte le licenze di software libero impongono di redistribuire il software con
una nota di diritto d'autore (cd. “
copyright notice”).
Poi, alcune licenze impongono di distribuire il software con altre informative da redigere secondo
specifiche indicazioni (che variano da licenza a licenza).
Per esempio, alcune licenze richiedono di:
- includere il testo della licenza (per es., le licenze MIT e Apache),
- dare credito agli autori del software (per es., le licenze MITv1 e BSD originale),
- se si modifica il programma, indicare quali modifiche sono state introdotte (per es., la GPL e la
licenza Apache).
Infine, alcune licenze di software libero prevedono degli obblighi rispetto ai diritti di brevetto per
invenzione eventualmente detenuti dall'utente di software libero.
Alcune licenze di software libero contengono una licenza esplicita dei diritti di brevetto a carico di chi
distribuisce il software (per es., la GPLv3) o di chi vi contribuisce (per es., la GPLv3, la MPLv2 o la
licenza Apache).
Si ritiene inoltre che alcune licenze di software libero (per es., la GPLv2 e la BSD modificata)
contengono una licenza di brevetto implicita che si applica a chi distribuisce il software ed a chi vi
contribuisce.
Alcune licenze contengono poi delle clausole (cd. “di rappresaglia”) che, sotto certe condizioni,
determinano la cessazione della licenza di software libero se il licenziatario fa valere la violazione d'un
brevetto (per esempio, la MPL, la GPLv3 e la licenza Apache) che interferisce con l'uso del software.
È infine importante ricordare che la violazione degli obblighi imposti dalle licenze di software libero
può determinare la cessazione degli effetti della licenza, con la conseguente necessità di “fare
qualcosa” per riacquistare il diritto d'utilizzare il software secondo i termini della stessa licenza di
software libero (per es., la GPL – con modalità diverse tra la GPLv2 e la GPLv3 – la MPL e la EPL).
I PRINCIPALI PROBLEMI E COME LIMITARNE IL RISCHIO
Per evitare di violare gli obblighi imposti dalle licenze di software libero è utile adottare alcune
semplici accortezze.
In particolare:
- adattare la contrattualistica con i fornitori di software per responsabilizzarli al rispetto degli obblighi
imposti dalle licenze di software libero,
- prevedere che gli sviluppatori interni si dotino (ed utilizzino in modo corretto) strumenti di controllo
di versione del software sviluppato,
- adottare procedure e strumenti idonei a documentare quale software libero sarà distribuito e secondo
quali licenze di software libero,
- individuare i soggetti responsabili del rispetto degli obblighi imposti dalle licenze di software libero,
- prevedere che, prima della sua distribuzione, il software acquisito da terzi e quello sviluppato
internamente sia controllato dai responsabili individuati.
A volte (certamente quando non è stato adottato “a monte” un appropriato processo di documentazione
delle licenze di software libero che si applicano al software che si intende distribuire) è utile utilizzare
strumenti di analisi del software per acquisire in modo automatico indicazioni sulle licenze ed
informative di diritto d'autore del software che si riusa e distribuisce.
_____________________________________________
© Marco Ciurcina, 2016 – Alcuni diritti riservati
Quest'opera è utilizzabile secondo i termini della licenza Creative Commons Attribuzione Condividi allo stesso modo 4.0 Internazionale. Il testo della licenza è disponibile qui https://creativecommons.org/licenses/by-sa/4.0/legalcode.
Articolo comparso anche su http://www.industriasoftwarelibero.it/wp-content/uploads/2016/10/regole_software_libero.pdf.