Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
9
come termine per accusare programmatori di essere pirati informatici. Furono
infatti proprio i primi hacker a porre le basi in merito alla libertà di informazione,
alla proprietà intellettuale, al diritto all'educazione ed all'apprendimento.
Qualcosa si stava muovendo. Le informazioni iniziavano pian piano a diffondersi
all'interno di questi circoli e nel giro di qualche anno numerosi furono i
produttori di hardware che realizzarono appositamente macchine ―aperte‖, ideali
secondo l'etica hacker. L'incremento dei prezzi dei computer, e la riluttanza dei
produttori di hardware nel fornire agli sviluppatori il codice delle loro macchine
scatenò la rivolta. Nel 1984 Richard Stellman scrisse il manifesto del GNU e
fondò la Free Software Fondation, un'organizzazione senza fini di lucro per lo
sviluppo e la diffusione del software libero. Tra i progetti affrontati dalla FSF vi
era anche quello più ambito: la scrittura di un intero sistema operativo
completamente libero e compatibile con l'ormai conosciutissimo UNIX che
potesse servire come pietra miliare del movimento. A tal proposito venne anche
creata la prima licenza GPL che garantiva all'autore, la libertà agli utenti di
fornire pieni diritti di distribuzione e modifica, con l'unica garanzia che ogni
eventuale modifica venisse notificata agli sviluppatori. Il software libero si stava
ormai facendo largo nel mondo degli appassionati ed il progetto GNU
continuava ad andare avanti con la produzione degli applicativi di supporto e
del compilatore GCC, scritto dallo stesso Stellman e largamente utilizzato dagli
sviluppatori dell'organizzazione e non. Mancava però un mezzo di
comunicazione che permettesse un rapido comunicare (e quindi condividere
codice) anche con persone dall'altra parte del pianeta. Mancavano ancora tanti
punti di comunicazione (detti anche nodi) che in maniera del tutto indipendente
e quindi svincolati da qualsiasi controllo centralizzato riuscissero ad
interconnettersi tra di loro in maniera persistente al fine di permettere lo
scambio della conoscenza. Con l'avvento di Internet tutto questo fu solo storia,
Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
10
le distanze iniziarono ad accorciarsi e con introduzione del protocollo HTTP e
dei primi web server (Apache) tutto il sapere iniziò a riversarsi indistintamente
sulla rete. Con il passare del tempo, però, le licenze liberali iniziarono ad essere
viste come delle licenze ―contagiose‖ in quanto a partire dal codice licenziato
con la GPL qualsiasi ulteriore modifica doveva avere la stessa licenza. Fu cosi che
per favorire l'idea delle licenze liberali anche nel mondo degli affari alcuni
membri del free software iniziarono a creare una sorta di lobby a favore della
ridefinizione ideologica del software libero, evidenziandone i vantaggi pratici
per le aziende. Fu cosi che venne coniato il termine open source. Tale nome fu
scelto anche per evitare l'equivoco dovuto al duplice significato della parola
inglese ―free‖ che finiva il più delle volte interpretata come sinonimo di gratuito
invece che libero. La scelta a favore dell'open source da parte di alcune
importanti aziende del settore come l'IBM, Netscape, HP e Sun Microsystems
facilitò inoltre l'accettazione del movimento presso l'industria del software,
facendo uscire l'idea della ―condivisione del codice‖ anche come metodologia di
produzione efficace e di qualità. Il fenomeno del software free, libero o aperto
che sia, era ormai in circolo e si stava diffondendo a vista d'occhi tra gli
incuriositi, gli appassionati e le aziende del settore.
Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
11
Definizione Software Libero
La parola libero non implica la possibilità di
utilizzare il software libero in maniera
indiscriminata. Il Software libero è comunque
soggetto ad una licenza d'uso, a differenza ad
esempio del software di pubblico dominio.
Riportiamo la migliore definizione che siamo
riusciti a trovare i free software, anche questa riportata da Wikipedia. Rispetto al
software 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.
La licenza d'uso pone in genere i seguenti vincoli, di cui i principali sono:
gli autori precedenti del software devono essere menzionati anche nelle
versioni modificate, lasciando intatto il loro copyright;
non è possibile applicare una licenza d'uso incompatibile con la licenza
originaria o che vada contro le norme della licenza stessa. Per esempio
chiunque può riemettere del software rilasciato sotto LGPL usando la
licenza GPL (tale operazione è anche chiamata upgrade della licenza),
mentre non è possibile fare il contrario (naturalmente se non si è il
detentore unico del copyright);
normalmente, nella licenza, vi è una clausola che sancisce la non usabilità
del software se non si rispetta la licenza d'uso o se una o più norme della
stessa licenza non sono valide per termini di legge;
Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
12
quando si distribuisce un binario occorre o distribuire insieme anche i
sorgenti o garantire per iscritto la possibilità a tutti gli utenti di venirne in
possesso dietro richiesta ed al solo costo del supporto
Secondo Richard Stallman e la Free Software Foundation da lui fondata, un
software per poter essere definito libero deve garantire quattro "libertà
fondamentali":
I. Libertà di eseguire il programma per qualsiasi scopo
II. Libertà di studiare il programma e modificarlo
III. Libertà di copiare il programma in modo da aiutare il prossimo
IV. Libertà di migliorare il programma e di distribuirne pubblicamente i
miglioramenti, in modo tale che tutta la comunità ne tragga beneficio
L'insieme di queste libertà hanno reso possibile la nascita della GPL e della LGPL,
entrambe licenze liberali che verranno analizzate nel relativo paragrafo di
approfondimento delle licenze.
Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
13
Definizione Open Source
Il termine inglese open source indica un
software rilasciato con un tipo di licenza per la
quale il codice sorgente è concesso alla
disponibilità degli sviluppatori in modo che
con l'impegno e la collaborazione (in genere
libera e spontanea) il risultato finale possa
ottenere una complessità superiore rispetto a quella che potrebbe ottenere un
singolo gruppo di programmazione. Per poter capire quando e come
considerare un software di tipo open source devono essere soddisfatti i dieci
criteri fondamentali che sono alla base del movimento OSI. Riportiamo sotto tali
criteri con la relativa motivazione esposta dalla nota enciclopedia gratuita
Wikipedia.
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.
MOTIVAZIONE: 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.
Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
14
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.
MOTIVAZIONE: 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.
Prodotti derivati
La licenza deve permettere modifiche e prodotti derivati, e deve permetterne la
distribuzione sotto le stesse condizioni della licenza del software originale.
MOTIVAZIONE: 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 ridistribuirle.
Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
15
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.
MOTIVAZIONE: 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 ridistribuito 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.
Discriminazione contro persone o gruppo
La licenza non deve discriminare alcuna persona o gruppo di persone.
MOTIVAZIONE: Per ottenere il massimo beneficio dal processo, il massima
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.
Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
16
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.
MOTIVAZIONE: 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.
Distribuzione della licenza
I diritti allegati a un programma devono essere applicabili a tutti coloro a cui il
programma è ridistribuito, senza che sia necessaria l'emissione di ulteriori
licenze.
MOTIVAZIONE: Questa clausola intende proibire la chiusura del software per
mezzi indiretti, come un obbligo di sottoscrizione di accordi di non diffusione.
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 ridistribuito 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.
MOTIVAZIONE: Questa clausola impedisce un'ulteriore classe di licenze-
trappola.
Alessio Ragni
Università di Camerino
Tesi di Laurea in Informatica
17
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.
MOTIVAZIONE: I distributori di software open source hanno il diritto di fare le
loro scelte riguardo al software che intendono distribuire.
Neutralità rispetto alle tecnologie
La licenza non deve contenere clausole che dipendano o si basino su particolari
tecnologie o tipi di interfacce.
MOTIVAZIONE: 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 utilizzare in ambienti privi di interfaccia grafica, nei quali non si
possa richiedere la presenza di specifiche finestre di dialogo.
La prima bozza di questo documento fu scritta da Bruce Perens come "Linee
guida per il software libero in Debian". Essa venne ampiamente discussa e
migliorata nelle mailing list del progetto Debian nel giugno 1997. Questo
documento è il risultato della rimozione di ogni riferimento a Debian e della
successiva pubblicazione del risultato.