domenica 2 novembre 2008

Software libero, open source, licenze: vediamo di capirci qualcosa (prima parte)

Un quadretto con le mascotte di alcuni software liberi

Un quadretto con le mascotte di alcuni software liberi

Tempo fa aprii la sezione “richieste“. Alcuni “aficionados” del mio blog mi hanno chiesto di spiegare per bene alcuni concetti, come software libero, open source e, in particolare, la differenza tra le diverse licenze.

Ed eccomi qui.

Iniziamo quindi dalla definizione di software libero. La definizione è stata coniata da Richard Stallman ed è composta da quattro libertà che vado prontamente a spiegare.

Libertà di eseguire il programma, per qualsiasi scopo (libertà 0)

Questa è la libertà più semplice e, almeno all’apparenza, sembra persino inutile enunciarla. Quale programma ci impedisce di utilizzarlo per qualsiasi scopo? In realtà tantissimi.

Ad esempio, Mac OS X ha una licenza che ci impedisce di utilizzarlo per far funzionare un computer che non sia Apple. Microsoft Windows, nella versione OEM (cioè quella che troviamo preinstallata quando compriamo un PC) ha una licenza che ci impedisce di utilizzarlo su un computer diverso da quello acquistato.

Molti software gratuiti sono limitati da licenze che dicono che non possiamo usarli per “scopi commerciali”. Ovvero possiamo usarli a casa, per i nostri fatti, ma non in ufficio.

Un software libero, invece, deve dare la libertà all’utente di poterlo utilizzare davvero per qualsiasi scopo. Persino uno scopo non previsto dal programmatore o che al programmatore dispiacerebbe. La licenza non deve porre alcun limite.

Libertà di studiare come funziona il programma e adattarlo alle proprie necessità (libertà 1). L’accesso al codice sorgente ne è un prerequisito.

Abbiamo visto in precedenza che i programmi sono scritti in certi linguaggi, chiamati “ad alto livello”, nel senso che sono simili al linguaggio umano. Viceversa il computer comprende solo linguaggio binario. Un programma (il compilatore) si occupa di tradurre il linguaggio ad alto livello in linguaggio binario (linguaggio macchina).

Per studiare come funziona il programma abbiamo quindi bisogno della sua forma primitiva, quella scritta dal programmatore. Sebbene sia possibile, con tecniche molto complesse, riuscire a capire qualcosa anche a partire dal linguaggio macchina, tuttavia questo è molto difficile. Inoltre è esplicitamente proibito da molte licenze di software proprietario.

Avendo invece il programma nel suo codice originario (detto codice sorgente), per un altro programmatore è abbastanza agevole studiare il programma e capire come funziona.

Ma questo non basta: la libertà 1 dice anche che possiamo modificarlo e adattarlo alle nostre esigenze (o pagare qualcuno per farlo). Questo significa che se voglio aggiungere una nuova funzione, oppure correggere un errore, posso farlo.

In altre parole, l’autore del programma si spoglia dell’esclusiva “proprietà” della sua opera e ci dice: ok, se il programma non ti soddisfa al 100%, miglioralo.

E’ una pratica piuttosto comune, infatti, che le aziende o gli enti paghino dei programmatori per apportare delle modifiche a programmi liberi. In questo modo, invece di commissionare un software del tutto nuovo, prendono il software che già esiste e lo adattano ai loro bisogni.

Non solo le aziende, chiaramente, ma chiunque sia capace di farlo.

Allora uno potrebbe chiedersi:

ok, ma a me che mi frega? Io non so programmare.

Vero, ma se un programma non ha una funzione che ritieni utile puoi chiedere al programmatore di inserirla (di solito con i software liberi è facile contattare il programmatore) o, se lui non lo fa, può farlo un altro utente più esperto di te, magari sul forum di supporto del programma stesso.

Per esempio, personalmente mi è capitato (sul forum di Ubuntu) di apportare una piccola modifica al driver di una scheda di rete, in modo che potesse funzionare anche su un altro modello simile. L’utente ovviamente è stato contentissimo. Ma questo è stato possibile unicamente perché quel driver era software libero, altrimenti non ci sarebbe stato modo di aiutarlo.

Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2).

“Non copiate Windows”. “Non mettere Photoshop su e-mule”. Questo è quello che dicono i “padroni” del software. E’ un loro diritto farlo, almeno finché per dissuadere la gente non violano qualche nostro diritto più importante.

Ma anche se è loro diritto, non è detto che sia un buon diritto. Chi fa software libero, pensa di non avere il diritto di impedire agli altri di dare via una copia del programma. Non solo perché, come Stallman, ritiene che così si aiutino gli altri, ma anche per aiutare se stesso. Più gente usa un programma, più famosi si diventa. Più gente usa un programma, più test sul suo funzionamento vengono effettuati. Più gente usa un programma, più è facile reclutare altri programmatori che possono dare una mano a correggere bug o a migliorarlo in altro modo. Insomma, è uno scambio: rinuncio a controllare le copie ma ottengo altri benefici.

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.

Questa libertà è una sorta di fusione tra la libertà 1 e la libertà 2. Non solo ho la possibilità di migliorare il programma per me stesso, non solo posso ridistribuire copie del programma, ma posso distribuire anche le migliorie che ho apportato, in modo che altri ne traggano beneficio.

Attenzione: è una libertà, non un obbligo. La licenza non mi deve obbligare a dare in giro le mie modifiche se non voglio farlo. Neppure mi deve obbligare a comunicarle all’autore originale. Questo perché se l’autore muore, oppure se cambia indirizzo e-mail, la libertà 3 muore con lui. Invece questa libertà deve rimanere.

E’ la libertà sulla quale si basa il modello di sviluppo comunitario del software libero. Io faccio una modifica, la rendo pubblica, altri la provano, magari migliorano ulteriormente la mia modifica e io stesso posso così usare un programma ancora migliore.

Anche se non sono obbligato a farlo, nella maggioranza dei casi conviene comunque ridistribuire le modifiche che ho fatto ad un programma. Aiutarsi l’un l’altro, insomma, è conveniente.

Attenzione: molti confondono “free software” con software “gratis”, poiché “free” in inglese vuol dire sia gratuito che libero. Ma quando parliamo di “free software” intendiamo il software libero, mentre quello semplicemente gratis si dice “freeware”.

Bene, la prossima volta analizzeremo le diverse licenze che attuano questi principii. Noteremo che esistono licenze anche molto diverse tra loro, che producono effetti sugli utenti e sulla comunità del software molto differenti.

Nessun commento: