Alcuni anni fa, quando mi avvicinai a Windows per la prima volta, rimasi un po’ male del fatto che il sistema operativo integrava una quantità di strumenti veramente limitata e che, se uno necessitava di un qualsivoglia software, doveva sborsare del denaro. I programmi freeware, quelli cioè che non richiedevano il pagamento di una licenza d’uso, erano veramente pochi e, ovviamente, di livello qualitativo assolutamente scadente. Col tempo le cose migliorarono e cominciarono a fare la loro comparsa diversi programmi freeware di buon livello. E poi cominciarono a fare la loro comparsa i programmi open source, o a codice sorgente aperto.
C’è una nettissima differenza fra un programma freeware ed uno open source, che forse ai più sfugge: mentre il primo è un programma di uso gratuito che qualcuno realizza e di cui pubblica il solo eseguibile, del secondo si ha a disposizione anche il codice sorgente. Questo significa che un qualunque utente del programma che conosce la programmazione ed utilizza il linguaggio usato dal creatore del software può aprire il sorgente e modificare il programma adattandolo alle proprie esigenze. Ma non solo: dal sorgente può eventualmente (se la licenza lo permette) derivare anche una sua opera personale e ridistribuirla alla comunità (in questo caso si parla in genere di fork).
Ma dove sta la bellezza del software open source? Sta nel fatto che chiunque può analizzare il sorgente e verificare, ad esempio, che il programma faccia effettivamente quello che l’autore dichiara. Senza entrare nello specifico, succede fin troppo spesso che i software eseguano operazioni tenute nascoste all’utente: mi ricordo il caso di un noto player multimediale che inviava, all’insaputa dell’utente, l’ID di quest’ultimo quando si collegava ad internet per effettuare il download di componenti e codec aggiuntivi. Ovviamente, l’operazione era eseguita all’insaputa dell’utente ed impostata in modo da essere la scelta di default. Per disattivare questa opzione, si doveva ricorrere al download di un programma aggiuntivo che effettuasse la modifica. Può anche succedere, ad esempio, che software che dovrebbero garantire la sicurezza dei dati (leggi l’articolo sulla sicurezza dei dati in campo informatico) contengano delle back-door (“porte secondarie”), vale a dire sistemi occulti che permettano di recuperare l’accesso ai dati a prescindere dal possesso o meno della password dell’utente. Questi sono solo un paio di esempi che però descrivono bene gli svantaggi dell’utilizzo di un applicativo di cui si dispone del solo eseguibile.
Un altro vantaggio del software open source l’ho già accennato precedentemente. Si può utilizzare come base per una propria applicazione o per un proprio prodotto il lavoro che qualcuno ha già in parte sviluppato. In questo caso non si commette nessun reato di appropriazione di proprietà intellettuale perché, a differenza del caso di un software closed source che venga esaminato con un disassemblatore, l’autore del progetto open source rilascia il sorgente proprio per mettere a disposizione della comunità internazionale il frutto del suo ingegno. Prendiamo ad esempio il caso del formato OGG, utilizzato per comprimere i file musicali: a differenza del formato MP3, che è proprietario e di cui vengono detenuti i diritti sul suo algoritmo di compressione, l’OGG è liberamente utilizzabile e, grazie al sorgente disponibile, accessibile a chiunque. Questa del rilascio del sorgente è però una scelta radicale, che deve essere ponderata bene dall’autore: una volta rilasciato il sorgente, il programmatore resta il “padre putativo” del software, ne mantiene cioè la proprietà intellettuale ma ne permette, in pratica, il libero utilizzo da chiunque. E’ scontato che un fork, cioè una derivazione, non abbia nulla da spartire con il progetto originale se non il codice di partenza: quindi il progetto originale chiamato, ad esempio, ABC e rilasciato dallo sviluppatore X. Ypsilon, resterà sempre il punto di riferimento per chi cerca ABC. Questo è giusto dirlo perché qualcuno potrebbe pensare che se uno si appropria del sorgente possa anche appropriarsi del nome e far passare il tutto come opera sua. No: abbiamo una licenza che tutela l’autore e gli riconosce la paternità del progetto. Inoltre, la licenza può restringere un eventuale utilizzo del sorgente: se ad esempio se ne utilizzano parti di codice per un proprio progetto, l’autore del software originale potrebbe richiedere di essere citato fra i contribuenti del progetto derivato. Oppure potrebbe richiedere che sia utilizzata la stessa licenza della sua opera originale (ad esempio, se lui ha rilasciato il progetto sotto licenza GPL, anche i lavori derivati devono obbligatoriamente essere rilasciati sotto licenza GPL).
Se, poi, il progetto è molto grande il gruppo di sviluppatori si può allargare fino a dimensioni molto vaste: è questo infatti il caso di noti progetti open source come OpenOffice, The Gimp, Linux stesso. In questo caso avremo una vera e propria struttura dietro al progetto, che definisce le linee di sviluppo, coordina i vari sviluppatori e pubblica il risultato del lavoro del team. Se il progetto viene venduto anche con licenza commerciale oppure vengono venduti servizi accessori al progetto stesso (assistenza tecnica, assistenza sull’installazione, ecc…) e c’è quindi un introito monetario, la struttura dirigenziale si può organizzare come una qualunque azienda ed i coordinatori del progetto e tutti od alcuni sviluppatori possono ricevere un compenso per le prestazioni che offrono. Oppure, come spesso accade, il contributo che danno allo sviluppo del progetto è completamente gratuito ma “avallato” dalle società per cui lavorano. Facendo un esempio concreto, alcuni dipendenti di Novell, la società che detiene i diritti sulla distribuzione Linux SUSE, collaborano anche ad alcuni progetti open source correlati: Miguel de Icaza, tanto per citarne uno, è dipendente Novell ma è anche fondatore e coordinatore del progetto GNOME (un diffuso desktop manager per Linux) e di Mono (un ambiente di sviluppo compatibile con il codice C# ed il framework .NET, entrambi sviluppati da Microsoft).
Abbiamo accennato alle licenze: la GPL (o più esattamente GNU GPL, “GNU General Public License”) e la Creative Commons sono le più comuni nel mondo open source. La prima possiamo dire che è La licenza di Linux: il suo creatore, Mark Shuttleworth, è un accanito sostenitore del software open source ed ha redatto la licenza GPL versione 2 che attualmente copre il kernel Linux (il “nocciolo” del sistema operativo) e la stragrande maggioranza del software per il Pinguino nel lontano 1991. La Creative Commons è una licenza, o per meglio dire una famiglia di licemze, più recente e diversa dalla GPL. In particolare, la GPL è molto restrittiva su un punto:se non si può rilasciare un progetto senza nessuna restrizione sui diritti, allora non si può rilasciare come GPL. Invece, la famiglia delle licenze Creative Commons permettono di ritenere alcuni diritti sul prodotto rilasciato: ad esempio, l’autore può rilasciare la sua opera senza nessuna riserva oppure richiedere a chi la utilizzerà di citare espressamente il suo nome; oppure ancora di impedire di derivare opere commerciali dalla sua opera ecc…
Ma non si pensi al software a sorgente aperto come ad un software gratuito: chi l’ha detto che open source non significhi denaro? Spesso si pensa infatti che rilasciando il sorgente della propria opera si escluda a priori la possibilità di guadagnare vendendola. Non è così: anche la licenza GPL da l’esplicito permesso di vendere la propria opera intellettuale. E qui abbiamo diverse possibilità. Posso citare quelle che prima mi vengono in mente: inviare il sorgente dietro pagamento di un prezzo di acquisto oppure vendere assistenza ed aggiornamenti sul software stesso. Oppure possiamo avere la vendita di un vero e proprio pacchetto con una confezione, dei manuali e dei supporti fisici per l’installazione del programma, con la differenza, rispetto ai programmi closed source, di non ricevere solo l’eseguibile ma anche i suoi sorgenti. Quest’ultima è anche la strada maggiormente battuta dalle società che distribuiscono Linux: Ubuntu, Novell/SUSE, Red Hat, ad esempio, permettono il libero download ed utilizzo dei loro sistemi Linux ma, a chi lo desidera, offrono anche una versione a pagamento degli stessi, con manuali utente per la guida all’installazione ed all’utilizzo dei principali applicativi compresi nella distribuzione, aggiornamenti e supporto tecnico online o telefonico per un periodo di tempo garantito.
Infine un accenno ai brevetti. Tempo fa al Parlamento Europeo le grandi case produttrici di software hanno fatto forza sui parlamentari per far passare anche in Europa un sistema di licenze sul software più restrittivo delle norme nazionali che regolano la pubblicazione del software nei vari Stati. Fortunatamente tale sistema è stato bocciato! Dico fortunatamente perché se fosse passata tale norma si sarebbe dato un grosso colpo al software open source ed alla libertà intellettuale allineando il sistema europeo al (vergognoso) sistema del copyright americano. In pratica, se io inventassi un sistema per effettuare un’operazione banale ma, ad esempio, molto usata, e la brevettassi, chiunque poi dovrebbe pagarmi una licenza per poter utilizzare il mio metodo. Sembra a prima vista una cosa positiva ma così non è: se ci fossero in circolazione dei programmi sviluppati da appassionati che hanno rilasciato le loro opere con un sistema identico al mio ma non brevettato, il mio brevetto renderebbe quel software illegale. E le soluzioni per i loro sviluppatori sarebbero soltanto 2: o pagarmi la royalty per poter utilizzare la loro idea nel loro programma (badate bene! In questo sta l’assurdo! Loro magari lo hanno inventato prima di me ma io l’ho brevettato e li ho “fregati”) oppure riscrivere il codice utilizzando un algoritmo che non sia proprietario. Nel primo caso, però, sarebbero costretti a chiedere un prezzo agli utenti del loro programma per poter rientrare del costo di licenza causato dal mio brevetto. In questo caso, chi ne farebbe quindi le spese sarebbe proprio l’utente finale, che da libero e gratuito vedrebbe il suo software preferito divenire commerciale ed a pagamento!
Solo quindi chi avesse alle spalle un grosso potere potrebbe sopravvivere, quindi le grandi software house opererebbero come squali nell’oceano mangiando tutti i pesci più piccoli ed accaparrandosi brevetti su brevetti per poter poi citare le rivali, così com’è di moda negli Stati Uniti dove non passa mese senza leggere che A cita B per infrangimento del brevetto X; ma B cita a sua volta A perché questa ha infranto il suo brevetto Y. Entra nella disputa anche C, che dichiara che il brevetto X contiene del codice del suo brevetto Z.. ecc… Ed il tutto finisce sempre con esborsi milionari, con gravi ricadute sull’utente finale che vede il prezzo del software lievitare sempre di più (chi ha comprato la versione più completa dell’ultimo sistema operativo di una nota software house americana sa a cosa mi riferisco…). Ma non è solo una questione di soldi. Il software closed source pieno di codice brevettato non è neanche controllabile, per cui la tendenza è sempre quella di curare poco l’efficienza e la sicurezza dello stesso. Ecco, perciò, che anche la qualità finale nel risentirebbe in maniera incredibile, con grave danno per la sicurezza dei computer degli utenti finali.
So di essere stato prolisso ma l’argomento è molto complesso e delicato e non si può certo esauire nello spazio di un articolo. Spero solo di aver fatto nascere un po’ di curiosità ed interesse nei più: le alternative open source a molti programmi a pagamento esistono e sono lontane solo pochi colpi di click su un buon motore di ricerca. Anche nei miei link ho inserito i collegamenti a diversi progetti a sorgente aperto così che chi vuole cominciare a scegliere con la propria testa può farlo in tutta libertà :-).