lunedì 14 novembre 2016

Le regole del software libero (di Marco Ciurcina)

Riporto integrale il testo di un utile articolo del collega avvocato Marco Ciurcina (comparso inizialmente su www.industriasoftwarelibero.it/wp-content/uploads/2016/10/regole_software_libero.pdf e rilasciato con licenza CC by-sa). Marco è uno dei maggiori esperti italiani di questioni giuridiche legate al software libero e open source ed è da anni membro e sostenitore delle principali realtà italiane attive in questo campo.

_____________________________________

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.

Immagine sotto licenza CC by-sa 2.0 (see credits here)

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.

Nessun commento: