HOME PAGE‎ > ‎RUBRICHE‎ > ‎Focus‎ > ‎

Le licenze software "libere" e "open source"

pubblicato 28 apr 2014, 08:37 da Emilio Curci   [ aggiornato in data 28 apr 2014, 08:38 ]
Con questo contributo proviamo a conoscere cosa si intende in informatica, con il termine di licenze "libere" e "Open source"e in cosa esse si distinguono dalle licenze software tradizionali.

Per "Open Source" (letteralmente sorgente aperta) si intende un software (ossia un programma informatico che gira su un computer) i cui autori consentono a chiunque ne abbia interesse di studiarlo, di apportarvi modifiche o, se concesso, anche di distribuirlo liberamente, rinunciando, cioè ai loro diritti esclusivi di utilizzo nascenti in loro favore per il fatto stesso di averlo creato.

A differenza, dunque, della classica protezione, del tipo "tutti i diritti riservati", tipica di tutti i software in commercio, nei casi di "open source" il programmatore, scegliendo di utilizzare determinate licenze, rinuncia del tutto (o in maniera limitata) all'esercizio dei diritti d'autore esclusivi sulla propria creazione.

In informatica esistono diverse licenze d'uso la cui accettazione da parte dell'utilizzatore finale può avvenire generalmente in quattro differenti modalità:

1) nel momento in cui si usa il programma e, dunque, la stessa viene implicitamente accettata con l'utilizzo stesso del software;

2) durante l'installazione del software. In tali casi mentre è in corso la procedura di installazione sul computer viene richiesto esplicitamente se si vuole accettare la licenza indicata. In mancanza il software non viene installato;

3) con l'apertura delle custodie in cui sono conservati i supporti su cui è registrato il programma (es: cd o dvd). In tal caso la licenza non viene accettata fino al momento dell'apertura della confezione;

4) prima di scaricare il programma via internet. In questi casi prima di poter scaricare il software viene richiesto all'utente di accettare la licenza. In mancanza di tale operazione non è possibile eseguire il download.

La scelta della licenza e della sua modalità di accettazione viene scelta dal programmatore software.

Le licenze per l'utilizzo dei software generalmente si distinguono in licenze per il software chiuso e licenze per il software aperto.

Per software chiuso si intende un programma che non è in alcun modo modificabile dall'utente finale (salvo diversa autorizzazione), ma può essere unicamente utilizzato a particolari condizioni.

Le tre licenze di uso più comune del software chiuso sono le seguenti:

- EULA (ovvero End User License Agreement)
Consiste in un vero e proprio accordo tra produttore e utilizzatore (che quest'ultimo deve necessariamente accettare) comprendente la concessione di licenza, le limitazioni d'uso, la limitazione di garanzia, la limitazione di responsabilità e le restrizioni all'esportazione.
Essa viene generalmente utilizzata per quasi tutti i software a pagamento in commercio, ma viene anche applicata per disciplinare le condizioni di utilizzo del software open source.

- FREEWARE
Il freeware è distribuito, a discrezione dell'autore, con o senza codice sorgente cioè (il codice di programmazione con cui è stato creato il programma stesso).
Tale licenza consente che il software venga distribuito gratuitamente e con la possibilità di ulteriore distribuzione senza il pagamento di alcun corrispettivo.

- SHAREWARE
Con la licenza shareware è possibile distribuire (e ridistribuire) liberamente programmi che possono essere utilizzati per un periodo di di prova variabile (a discrezione dell'autore).
Dopo questo termine se si intende continuare ad utilizzare il software è necessario pagare il corrispettivo del costo del programma. In alcuni casi la versione di prova (detta generalmente trial) può avere funzioni limitate rispetto a quella completa.

Passiamo, invece, ad esaminare quali sono le licenze per il software libero, non prima di aver chiarito quali sono le sue caratteristiche essenziali.

A differenza del software chiuso o "proprietario" la licenza d'uso del software libero permette di:

- eseguire il programma per qualsiasi scopo;
- accedere alla struttura interna del programma (codice sorgente), studiarla ed eventualmente modificarla;
- ridistribuirlo in un numero di copie illimitato.

Tali operazioni possono essere eseguite, però, soltanto se si rispettano i vincoli indicati nella licenza d'uso.
Tra i vincoli più frequenti quello di citare gli autori del programma originario anche nelle versioni modificate o quello di non applicare una licenza d'uso incompatibile con la licenza originaria o che vada contro le norme della licenza stessa.

Secondo Richard Stallman, fondatore della Free Software Foundation, un software si può definire libero solo se garantisce quattro "libertà fondamentali":

1) Libertà di eseguire il programma per qualsiasi scopo;
2) libertà di studiare il programma e modificarlo;
3) libertà di ridistribuire copie del programma in modo da aiutare il prossimo;
4) libertà di migliorare il programma e di distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio.

La maggior parte del software libero viene distribuito con la licenza GNU GPL (GNU General Public License), scritta proprio da Richard Stallman per garantire legalmente a tutti gli utenti le quattro libertà fondamentali.

Sebbene tale licenza si caratterizzi per la sua forma libera, di fatto essa è considerata una delle più restrittive, poiché prevede che ogni prodotto da essa derivato ovvero che modifica o usa un codice sotto GPL venga a sua volta distribuito con la medesima licenza.

La licenza GNU GPL nasce, al fine di garantire all'utente del software, una libertà di utilizzo, copia, modifica e distribuzione dello stesso.

Essa concede agli utilizzatori del software il permesso di modificare il programma, di copiarlo e di ridistribuirlo con o senza modifiche, gratuitamente o a pagamento.
L'utente è tenuto a rendere disponibile il codice sorgente del software alle persone che ne hanno ricevuto una copia o, in alternativa, accompagnare il software con una offerta scritta di rendere disponibile il sorgente su richiesta a prezzo nominale.

Rispetto alle altre licenze di software libero, la GPL impone un vincolo alla redistribuzione e cioè l'utente può farlo unicamente secondo i termini della GPL stessa ed ossia deve distribuire il testo della GPL assieme al software e corredarlo del codice sorgente o delle istruzioni per poterlo ottenere ad un costo nominale.

Non solo, ma nel caso in cui un utente effettui l'unione di un programma coperto da licenza GPL con un altro programma coperto da altra licenza può essere distribuita sotto GPL, o in alternativa, non essere distribuita affatto.

I programmi elaborati con licenza GNU GPL non offrono nessuna garanzia e, dunque, il rischio di malfunzionamento rimane a carico dell'utilizzatore.

La licenza GNU GPL non è liberamente modificabile in quanto sono consentiti solo la copia e la distribuzione sono permesse, ma il suo testo non può essere modificato.

In sostanza, dunque, nessun nuovo programma può essere creato partendo da un altro basato sul licenza GNU GPL se, attraverso le modifiche si snaturino le caratteristiche della licenza stessa.

Un'altra licenza simile, ma con meno restrizioni, è la GNU LGPL (acronimo di GNU Lesser General Public License).

Essa è stata studiata come un vero e proprio compromesso tra la GNU General Public License e altre licenze software.

La sua caratteristica principale, a differenza della GNU GPL sta nel fatto che eventuale che eventuale software derivato da un programma originariamente elaborato con GNU GPL, non debba essere necessariamente rilasciato sotto la medesima licenza.

Non tutte le licenze libere sono, però, compatibili tra di loro e, cioè, in alcuni casi non è possibile utilizzare due sorgenti con due licenze libere ed unirle per ottenere un unico software.
Tale circostanza si verifica quando non è possibile creare una licenza soddisfi tutti i requisiti previsti dalle licenze originali.

Sebbene la disponibilità del codice sorgente sia uno dei requisiti fondamentali che accomuna il software libero e quello open source, quest'ultimo si differenza dal primo soprattutto per i motivi ideologici sottostanti alla loro origine.

Infatti un programma può essere considerato Open source, soltanto quanto i termini di distribuzione rispondono alla definizione data dall'organizzazione Open Source Initiative (OSI) che, su richiesta, provvede anche a certificare con il relativo marchio l'autenticità di una licenza Open Source.

Riportiamo di seguito il testo tradotto della definizione di Open Source:

Open source non significa semplicemente libero accesso al codice sorgente di un programma.

La licenza di un software, per potersi considerare open-source, deve soddisfare i seguenti criteri:

1. Libera redistribuzione

La licenza non può limitare alcuno dal vendere o donare il software che ne è oggetto, come componente di una distribuzione aggregata, contenente programmi di varia origine. La licenza non può richiedere diritti o altri pagamenti a fronte di tali vendite.Motivo: Imponendo la libera redistribuzione, si elimina la tentazione di rinunciare a importanti guadagni a lungo termine in cambio di un guadagno materiale a breve termine, ottenuto con il controllo delle vendite. Se non vi fosse questa imposizione, i collaboratori esterni sarebbero tentati di abbandonare il progetto, invece che di farlo crescere.

2. Codice sorgente

Il programma deve includere il codice sorgente e ne deve essere permessa la distribuzione sia come codice sorgente che in forma compilata. Laddove alcune forme di un prodotto non siano distribuite con il relativo codice sorgente, deve essere chiaramente indicato il modo per ottenerlo, ad un costo non superiore ad una ragionevole spesa di distribuzione, preferibilmente scaricandolo gratuitamente da Internet. Per codice sorgente si intende la forma in cui un programmatore preferirebbe modificare il programma. Codice sorgente deliberatamente reso illeggibile non risponde ai requisiti. Forme intermedie come l'output di un processore o compilatore non rispondono ai requisiti.Motivo: Si richiede l'accesso al codice sorgente poiché non si può far evolvere un programma senza poterlo modificare. Il nostro obiettivo è rendere facile l'evoluzione del software, pertanto richiediamo che ne sia resa facile la modifica.

3. Prodotti derivati

La licenza deve permettere modifiche e prodotti derivati, e deve permetterne la distribuzione sotto le stesse condizioni della licenza del software originale.Motivo: La sola possibilità di leggere il codice sorgente non è sufficiente a permettere la revisione indipendente del software da parte di terzi e una rapida selezione evolutiva. Per garantire una rapida evoluzione, deve essere possibile sperimentare modifiche al software e redistribuirle.

4. Integrità del codice sorgente originale

La licenza può impedire la distribuzione del codice sorgente in forma modificata, a patto che venga consentita la distribuzione dell'originale accompagnato da "patch", ovvero file che permettono di applicare modifiche automatiche al codice sorgente in fase di compilazione. La licenza deve esplicitamente permettere la distribuzione del software prodotto con un codice sorgente modificato. La licenza può richiedere che i prodotti derivati portino un nome o una versione diversa dal software originale.Motivo: Incoraggiare il miglioramento è bene, ma gli utenti hanno diritto di sapere chi è responsabile del software che stanno usando. Gli autori e i tecnici hanno diritto reciproco di sapere cosa è loro chiesto di supportare e di proteggersi la reputazione.Perciò, una licenza open source deve garantire che il codice sorgente sia facilmente disponibile, ma può eventualmente richiedere che esso sia redistribuito solo in forma originale più file patch. In questo modo le modifiche "non ufficiali" possono essere rese disponibili pur rimanendo distinte dal codice sorgente originale.

5. Discriminazione contro persone o gruppi

La licenza non deve discriminare alcuna persona o gruppo di persone.Motivo: Per ottenere il massimo beneficio dal processo, il massimo numero di persone e gruppi deve avere eguale possibilità di contribuire allo sviluppo del software. Pertanto viene proibita l'esclusione arbitraria dal processo di persone o gruppi.Alcuni paesi, inclusi gli Stati Uniti, hanno restrizioni all'esportazione di certi tipi di software. Una licenza conforme all'OSD può avvertire gli utenti di possibili restrizioni e ricordare loro che sono obbligati a rispettare la legge; in ogni caso non può incorporare tali restrizioni essa stessa.

6. Discriminazione per campo d'applicazione

La licenza non deve impedire di far uso del programma in un ambito specifico. Ad esempio non si può impedire l'uso del programma in ambito commerciale o nell'ambito della ricerca genetica.Motivo: L'intenzione principale di questa clausola è di proibire trappole nelle licenze che impediscano al software open source di essere usato commercialmente. Vogliamo che le aziende si uniscano alla nostra comunità, non che se ne sentano escluse.

7. Distribuzione della licenza

I diritti allegati a un programma devono essere applicabili a tutti coloro a cui il programma è redistribuito, senza che sia necessaria l'emissione di ulteriori licenze.Motivo: Questa clausola intende proibire la chiusura del software per mezzi indiretti, come un obbligo di sottoscrizione di accordi di non diffusione.

8. Specificità ad un prodotto

I diritti allegati al programma non devono dipendere dall'essere il programma parte di una particolare distribuzione di software. Se il programma è estratto da quella distribuzione e usato o redistribuito secondo i termini della licenza del programma, tutti coloro che ricevano il programma dovranno avere gli stessi diritti che sono garantiti nel caso della distribuzione originale.Motivo: Questa clausola impedisce un'ulteriore classe di licenze-trappola.


9. Vincoli su altro software

La licenza non deve porre restrizioni su altro software distribuito insieme al software licenziato. Per esempio, la licenza non deve richiedere che tutti gli altri programmi distribuiti sugli stessi supporti siano software open source.Motivo: I distributori di software open source hanno il diritto di fare le loro scelte riguardo al software che intendono distribuire.

10. Neutralità rispetto alle tecnologie

La licenza non deve contenere clausole che dipendano o si basino su particolari tecnologie o tipi di interfacce.Motivo: Questa clausola è diretta in particolar modo a quelle licenze che richiedano un gesto esplicito di approvazione da parte dell'utente, al fine di stabilire un contratto. Clausole che richiedano un "click" su interfacce web o di altro tipo possono essere in conflitto con importanti metodi di distribuzione del software, come i siti FTP, le raccolte su CDROM e le copie distribuite sul Web. Tali clausole possono rendere difficoltoso il riutilizzo del software. Le licenze valide devono permettere la possibilità che: 1) il software venga distribuito mediante canali diversi dal Web, sui quali non si possa richiedere un "click" esplicito prima di iniziare il download, e che 2) il programma in oggetto, o sue porzioni, possano essere utilizzati in ambienti privi di interfaccia grafica, nei quali non si possa richiedere la presenza di specifiche finestre di dialogo.

In sostanza sia il Software libero che quello Open Source realizzano, dunque, i medesimi obiettivi, ma partono da presupposti differenti.

Il primo infatti nasce dall'esigenza di soddisfare le quattro libertà fondamentali sopra descritte basate su principi etici come possibilità di studiare, di aiutare il prossimo e di favorire la comunità, mentre il secondo nasce da un'esigenza pratica di individuare quali siano i criteri legali che effettivamente assicurino la libertà di una licenza software.

Nonostante le differenze di forma nella maggior parte dei casi entrambi i tipi di licenza soddisfano i medesimi requisiti.

Differenza rilevante è però costituita dal fatto che il software Open Source, a differenza di quello libero, non debba essere necessariamente necessariamente distribuito con la medesima licenza, ma possa avere licenze contenenti differenti permessi a totale discrezione degli autori.

Per chi intendesse approfondire tali differenze un famoso articolo che chiarisce le distinzioni fra le due definizioni è pubblicata sul sito della FSF (Free software foundation):http://www.gnu.org/philosophy/free-software-for-freedom.it.html

Facebook Twitter More...