Cerca nel blog

lunedì 14 maggio 2012

Le licenze software Libere e Open Source: una buona occasione di sviluppo ? Nel frattempo impariamo a conoscerle.

Con questo nuovo contributo proviamo a conoscere cosa si intende in informatica, con il termine "Open source"e a ragionare sulle prospettive che questo progetto potrebbe riservare per il futuro.

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 preprocessore 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

Al di là delle differenze tecniche ed ideologiche, importanti fino ad ora per comprendere il contesto in cui ci muoviamo, scopo finale di quest'articolo è quello di riflettere sulle possibilità di sviluppo, anche economico che, in futuro, l'adozione di tali licenze potrebbe consentire.

Possiamo innanzitutto affermare che la collaborazione di più soggetti (come detto consentita ed anzi incoraggiata per questo tipo di software) appare una delle prospettive più interessanti.

Il fatto che più persone, infatti, si impegnino a lavorare su un medesimo prodotto, consente certamente a quest'ultimo di poter essere costantemente migliorato fino al raggiungimento di un prodotto finale decisamente migliore di uno elaborato da un singolo team di persone.

Non solo, il software a licenza libera, essendo sempre modificabile, rimane sempre un cantiere aperto in cui far confluire nuove idee e nuove versioni sempre più aggiornate, consentendo potenzialmente di aver prodotti sempre in continua evoluzione.

E' proprio grazie all'uso di tali licenze (libere e open source) che sono nati ottimi prodotti quali, per citarne alcuni, il browser Mozilla Firefox, i pacchetti applicativi Open Office e Libre Office, il lettore multimediale VLC e il sistema operativo Linux.

Anche l'ormai celebre enciclopedia libera Wikipedia è frutto di una programmazione open source.

Tale movimento, nato e cresciuto soprattutto all'estero ha creato recentemente interesse anche in Italia, ove è stata istituita la “Commissione per il software a codice sorgente aperto nella Pubblica Amministrazione”, detta anche “Commissione Meo” che, nel maggio 2003, ha prodotto la pubblicazione dell'"Indagine conoscitiva sul software open source".

Tale documento oltre ad una descrizione d'insieme del contesto software open source contiene, infatti, varie proposte per la diffusione del software open source nella Pubblica Amministrazione italiana, tra cui quelle di adottare programmi open proprio al fine di risparmiare notevolmente sull'uso di licenze a pagamento.

A seguito di tale dibattito è stato infatti promulgato il DLgs. 82/05 (Codice dell'amministrazione digitale) che si occupa, tra l'altro, proprio di tali questioni.

Dopo qualche anno di silenzio con la manovra "Salva Italia" il governo Monti è tornato ad occuparsi di Open Source, prevedendo la possibilità per le Pubbliche Amministrazioni di considerare il software Open Source tra le possibili scelte tra quelle sul mercato per l'utilizzo dei propri terminali.

L'articolo 29-bis della manovra rubricato come Introduzione dell'impiego di software libero negli uffici pubblici per la riduzione dei costi della pubblica amministrazione prevede, infatti la sostituzione della lettera d) del comma 1 dell'articolo 68 del codice dell'amministrazione digitale con la seguente: «d) acquisizione di programmi informatici appartenenti alla categoria del software libero o a codice sorgente aperto;». 

In realtà non si tratta di una grandissima novità, se non terminologica, atteso che, nella precedente versione si parlava solo di codice aperto e ora anche di software libero.

In ogni caso la Pubblica Amministrazione prima di acquistare un software dovrà effettuare un'attività di comparazione di quello presente sul mercato, considerando, in tale scelta, anche il software libero.

Dunque, sebbene il Governo abbia quantomeno mostrato un minimo di interesse nei confronti dell'Open Source, soprattutto basato su motivi di natura economica, probabilmente questo non basta soprattutto perchè non si fa ancora sufficiente informazione in merito.

Ciononostante l'adozione di software Open Source garantirebbe certamente notevoli vantaggi.

Da un lato, infatti, l'adozione di software Open Source consentirebbe alla Pubblica Amministrazione notevoli risparmi conseguenti all'abbandono delle licenze (prevalentemente Microsoft) che secondo talune stime costerebbero circa un milione di euro, ma dall'altro la scelta di tale sistema potrebbe portare anche ulteriori benefici.

E' bene, però, chiarire che, investire sull'Open source, non vuol dire avere tutto gratuitamente, bensì è necessario investire anche economicamente sullo sviluppo di tali sistemi per avere poi un buon prodotto finale da utilizzare senza costi ulteriori.

Peraltro, decidere di investire sullo sviluppo di software open source, partendo anche da soluzioni già esistenti, magari attraverso dei veri e propri bandi di gara, consentirebbe anche di dare nuove prospettive e nuove occasioni di lavoro a numerosi (e volenterosi) giovani programmatori italiani.

Ma se anche non si volesse andare in tale direzione, come detto sopra, anche il semplice utilizzo di piattaforme open source quali ad esempio Open Office, ridurrebbe, già ora, in maniera consistente la spesa per le licenze software delle Pubbliche Amministrazioni.

E' necessario, però, non ridurre tutto il discorso (come può apparentemente sembrare) ad un semplice scopo di risparmio economico e riuscire a guardare alle altre grandi potenzialità delle piattaforme aperte.

Orientandosi a scelte "open" vi sarebbe, inoltre, una maggiore possibilità di concorrenza tra i fornitori, non limitata dall'esistenza di specifici software riservati, invece, solo ad alcuni.

Anche l'aspetto della sicurezza potrebbe essere valorizzato, dal momento che proprio la possibilità di conoscere il codice sorgente del software potrebbe rendere il prodotto finale più affidabile e meno attaccabile rispetto ad uno chiuso e, dunque, certamente meno esaminabile.

Non solo, ma il software aperto, a differenza di quello proprietario, consentirebbe innumerevoli possibilità di ampliamento ed integrazione con altri software già esistenti e soprattutto specifiche personalizzazioni in base alle esigenze della singola Amministrazione.

C'è un altra grande opportunità che va sicuramente colta e, cioè la possibile interoperatività tra i sistemi adottati.

Immaginiamo, infatti, un software open source basato su una piattaforma informatica comune a tutte le Pubbliche amministrazioni e alle enormi potenzialità di inter scambio di dati tra le amministrazioni stesse.

Oggi, come è noto, i dati delle singole Amministrazioni non sono liberamente scambiabili tra loro ed anzi, a volte, la loro acquisizione è estremamente lenta con enorme disagio per cittadini e non solo.

Tutte cose nuove ? Nella realtà si, ma almeno nelle intenzioni, no.

Riportiamo di seguito il testo dell'art. 50 del Codice dell'Amministrazione digitale che recita:

Art. 50 - Disponibilità dei dati delle pubbliche amministrazioni
1. I dati delle pubbliche amministrazioni sono formati, raccolti, conservati, resi disponibili e accessibili con l'uso delle tecnologie dell'informazione e della comunicazione che ne consentano la fruizione e riutilizzazione, alle condizioni fissate dall'ordinamento, da parte delle altre pubbliche amministrazioni e dai privati; ...
2. Qualunque dato trattato da una pubblica amministrazione ... è reso accessibile e fruibile alle altre amministrazioni quando l'utilizzazione del dato sia necessaria per lo svolgimento dei compiti istituzionali dell'amministrazione richiedente, senza oneri a carico di quest'ultima, salvo per la prestazione di elaborazioni aggiuntive; 
3. Al fine di rendere possibile l'utilizzo in via telematica dei dati di una pubblica amministrazione da parte dei sistemi informatici di altre amministrazioni l'amministrazione titolare dei dati predispone, gestisce ed eroga i servizi informatici allo scopo necessari, secondo le regole tecniche del sistema pubblico di connettività di cui al presente decreto.

Tutto estremamente interessante se non fosse per il fatto che, tale realtà è lungi dall'essere realizzata a causa della presenza di croniche carenze strutturali della Pubblica Amministrazione.

Qualche amministrazione pubblica locale sta, però, già iniziando a muoversi in tal senso e sull'argomento è possibile leggere i relativi aggiornamenti sul sito www.dati.gov.it, ma è ancora molto poco.

Del resto, anche di questo, sembra essersi accorto (con ritardo...) il Governo che ha costituito una Cabina di Regia finalizzata alla scrittura di un'Agenda Digitale Italiana, al fine di recepire l'Agenda digitale Europea.

Sono tanti piccoli passi e, dunque, il progetto è ancora lontano a realizzarsi, nel frattempo, però, riteniamo che la cosa più importante sia fare quantomeno informazione per rendere i cittadini consapevoli dei vantaggi a cui potrebbero andare incontro se si investisse realmente in tale direzione.

E se poi volessimo andare oltre e cominciare a partecipare attivamente al dibattito possiamo farlo, oltre che contribuendo con qualche intervento su questo blog o su altri che si occupano di analoghe questioni, anche su un'apposito sito dedicato alla raccolta di idee sull'Agenda digitale Italiana in materia di open source.

Buon lavoro a tutti.


Nessun commento:

Posta un commento