lunedì 3 settembre 2007

Open Source o Free Software?


Vorrei fare un po' di chiarezza su una vexata quaestio che riguarda i due termini "Free Software" e "Open Source": si tratta di concetti ben differenti, anche se spesso (per non dire quasi sempre) sono usati come sinonimi.
Poiché non sono un integralista del software libero, ma mi ritengo un pragmatico, accetto entrambi i termini anche se non li considero equivalenti, e quindi ritengo sia utile, in questa sede, chiarire il significato dei due concetti.
Iniziamo con un po’ di storia: la nostra inizia quarant’anni fa, quando, nel centro ricerche della AT&T, i Bell Laboratories, nasceva Unix. Il sistema conobbe un’immediata fortuna, soprattutto in ambito accademico, nonostante AT&T non fornisse alcun tipo di assistenza. Gli utenti iniziarono allora a collaborare tra loro per correggere gli inevitabili bug e apportare migliorie. L’egida di questa sorta di cooperativa di utilizzatori fu assunta dall’università di Berkeley che, nel 1978, iniziò a distribuire una sua variante di Unix, la Bsd (Berkeley Software Distribution), dalla quale è nato l’attuale sistema operativo Free BSD, protetta dall’omonima licenza d’uso.La licenza BSD aveva lo scopo di proteggere il lavoro di chi aveva lavorato al progetto ma, allo stesso tempo, di garantirne la libera distribuzione ... ecco, il concetto di Open Source probabilmente nasce in questo momento.

Con un rapido salto coast to coast, raggiungiamo la costa occidentale degli Stati Uniti, dove, al non meno prestigioso Massachussets Institute of Technology, operava un giovane programmatore, Richard M. Stallman. Un giorno, per merito (o colpa? Dipende dai punti di vista) del software di gestione di una stampante, del quale il produttore non aveva rilasciato il codice sorgente, il giovane Richard iniziò a gettare le basi di quella che sarebbe diventata la Free Software Foundation, nata per tutelare gli autori del software e proteggerli dal plagio, garantendo, allo stesso tempo, la libera circolazione dei loro prodotti. La biografia di Richard Stallman è raccolta nel libro "Codice Libero" di Sam Williams.Apparentemente, quindi, Open Source e Free Software sono la stessa cosa, poiché lo scopo di entrambi i movimenti è quello di tutelare la paternità di un software e di garantirne la libera circolazione, tanto che i pragmatici (come me) preferiscono la definizione Free/Libre Open Source Software, in sigla FLOSS; a tale proposito si vedano anche le voci "Software Free/Libero/Open-Source" e "Free and Open Source Software" su Wikipedia; interessante, a tal proposito e sempre su Wikipedia, è la voce "Comparazione di licenze libere".

In realtà il movimento Open Source, che fa capo alla OSI (Open Source Iniziative) batte soprattutto sui fattori economico e pratico: un software “non libero”, cioè proprietario e del quale non sono pubbliche le sorgenti, è un software che segue una metodologia di sviluppo non efficiente, mentre il software Open Source, essendo affidato a comunità di sviluppatori, segue dei cicli di sviluppo ben diversi e più accelerati, come descritto nel libro “La cattedrale e il bazar” di Eric S. Raymond. Giova qui ricordare che la citata OSI (www.opensource.org) considera una sessantina di diverse licenze come rispondenti alla Open Source Definition. Ma cos'è questa Open Source Definition? Vediamola:
1. Libera ridistribuzione: la licenza non può limitare nessuna delle parti nella vendita o nella fornitura di software come componente di una distribuzione di software aggregati, contenente programmi provenienti da fonti diverse. La licenza non può richiedere il pagamento di una royalty o di diritti per tale rivendita;
2. Codice sorgente: il programma deve includere il codice sorgente, e deve consentire la distribuzione sia sotto forma di codice sorgente sia in forma compilata. Nei casi in cui un prodotto non venga distribuito con il codice sorgente, deve esserci la possibilità, ben pubblicata, di scaricare il codice sorgente via Internet senza costi aggiuntivi. Il codice sorgente deve essere la forma privilegiata in cui in programmatore modificherà il programma. Codice sorgente deliberatamente nascosto non è ammesso. Forme mediate, come l'output di un preprocessore non sono ammesse;
3. Prodotti derivati: la licenza deve consentire l'attuazione di modifiche e di prodotti derivati, consentendo inoltre la loro distribuzione sotto gli stessi termini di licenza del software originale;
4. Integrità del codice sorgente dell'autore: la licenza può imporre limitazioni sulla distribuzione del codice sorgente in forma modificata solamente se la licenza consente la distribuzione di file “patch” insieme al codice sorgente con lo scopo di modificare il programma durante l'esecuzione del build. La licenza deve consentire esplicitamente la distribuzione di software realizzato a partire dal codice sorgente modificato. La licenza può richiedere che i prodotti derivati portino un nome o un numero di versione diverso dal software originale;
5. Nessuna discriminazione verso singoli o gruppi: la licenza non deve porre discriminazioni verso qualsiasi persona o gruppo di persone;
6. Nessuna discriminazione verso campi di applicazione: la licenza non deve porre limitazioni sull'uso del programma in un particolare campo di applicazione. Per esempio, non può impedire l'uso del programma in una azienda o per la ricerca genetica;
7. Distribuzione della licenza: i diritti allegati al programma devono applicarsi a tutti coloro a cui viene ridistribuito il programma, senza la necessità di applicare una licenza supplementare per queste parti;
8. La licenza non deve essere specifica per un prodotto: i diritti allegati al programma non devono dipendere dal fatto che il programma faccia parte di una distribuzione particolare. Se il programma viene estratto da tale distribuzione e usato o distribuito nei termini della licenza del programma, tutte le parti a cui il programma viene ridistribuito devono avere gli stessi diritti garantiti in occasione della distribuzione originale del software;
9. La licenza non deve contaminare gli altri programmi: la licenza non deve porre limitazioni su altro software che venga distribuito insieme con il software in licenza. Per esempio, la licenza non deve asserire che tutti gli altri programmi distribuiti sullo stesso supporto devono essere software open source;
10. Conformità della licenza e della certificazione: qualsiasi programma che faccia uso di licenze certificate come conformi alla Open Source Definition può utilizzare il marchio registrato Open Source, e il codice sorgente può essere dichiarato esplicitamente di pubblico dominio. Nessun altro programma o licenza è certificato per fare uso del marchio registrato Open Source.

Diverso è il discorso della Free Software Foundation: secondo Richard Stallman, infatti, il software deve essere “... free as in free speech, not as in free beer ...” (“... libero come in libertà di parola, non in birra gratis ...”; in inglese, infatti, free significa sia “libero” che “gratis”) e per essere tale deve garantire le seguenti quattro libertà (www.fsf.org):
1. Libertà di eseguire il programma, per qualsiasi scopo (libertà 0).
2. Libertà di studiare come funziona il programma e adattarlo alle proprie necessità (libertà 1). L'accesso al codice sorgente ne è un prerequisito.
3. Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2).
4. 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.

Emanazione della Free Software Foundation (www.gnu.org) è il Progetto Gnu, lanciato nel 1984 per sviluppare un sistema operativo Unix-compatibile completo che rispondesse alle quattro libertà sopra enunciate. Le licenze accettate dalla FSF sono solo tre:
1. Licenza Pubblica Generica (GPL);
2. Licenza Generica Pubblica Attenuata (LGPL), da usare per includere un sorgente libero in un’applicazione proprietaria a sorgente chiusa, utilizzata soprattutto per sviluppare librerie;
3. Licenza per Documentazione Libera GNU (GNU FDL), che si applica ai manuali e alla documentazione.
Termino qui, scusandomi per le inevitabili semplificazioni fatte per ridurre entro una lunghezza accettabile (spero) questo post.

Il logo che apre il post è di una comunità professionale appartenente a Neurona.it. Un ringraziamento particolare a Roberta Voiglio, che ne è l'autrice.

Nessun commento: