Richard Stallman (2005)Mi scuseranno i latinisti per lo scempio del titolo In realtà il titolo è stato corretto da DFC, il mio era “De fontis manifestis” (na cazzata). Sono andato a memoria, in più ho tradotto letteralmente il termine OpenSource. Sono abbastanza sicuro del fontis (genitivo, giusto), un po’ meno del manifestis (manifestæ ?) ma vabbè. Del resto le ultime versioni le ho fatte ben più di un lustro fa. Mi scuserà anche DFC per aver scimiottato un suo ultimo titolo, del resto però questo post è frutto delle diatribe avute proprio a casa sua quindi in qualche modo bisognava ricollegarsi. Per riassumere, tutto nasceva da un suo post a commento di un articolo del blasonato Beppe Grillo. Vorrei quindi cercare, se mi è permesso, di fare maggiore chiarezza sul concetto di Open Source, che in molti non hanno capito (e che Beppe Grillo ha DISTORTO in maniera alquanto dannosa).

Allora. Giusto per demolire subito molti in partenza: Open Source non è sinonimo di gratis, nè di qualità.

Il termine Open Source sta letteralmente ad indicare “Sorgente Aperto“. Il (codice) sorgente è il listato di istruzioni e operazioni logiche che il programmatore scrive (semplificando) per poi ottenere (attraverso vari processi tra cui parsing, linkinge compilazione) un certo programma finito, che poi può essere usato sulla macchina per il quale è stato compilato. In realtà non tutto viene compilato, è possibile anche utilizzare linguaggi interpretati ma non voglio incasinare eccessivamente la discussione.

L’aggettivo “Aperto” invece sta ad indicare il fatto che il codice sorgente di un dato programma viene rilasciato “pubblicamente”, in contrapposizione ai programmi il cui codice sorgente è gelosamente custodito dai proprietari. Ho messo pubblicamente tra virgolette: nella realtà esistono una miriade di opzioni e licenze che garantiscono forme di salvaguardia del proprio lavoro. Esistono poi anche coloro che rinunciano ad ogni diritto di proprietà (Public Domain).

Lo sviluppo di questi concetti è profondamente radicato nella storia stessa dell’informatica, se vi interessa approfondire il come ed il perchè vi consiglio di iniziare dalla pagina di wikipedia.

Ad ogni modo, sul sito OpenSource.org è possibile leggere quali sono i punti fondamentali che caratterizzano un software OpenSource ad oggi:

The basic idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.

Questa è l’idea base, poi ci sono un insieme di principi guida (che ho riassunto citando solo i principali, la lista completa è qui):

  1. Ridistribuzione libera: il software opensource deve avere una licenza tale da permetterne la libera distribuzione (senza royalties)
  2. Disponibilità dei sorgenti: il software opensource deve essere distribuito assieme al proprio codice sorgente (o deve fornire facilmente i mezzi per trovarlo da qualche parte, magari su un sito)
  3. Lavori derivati: si devono permettere lavori derivati dall’originale, da redistribuire con la stessa licenza dell’originale
  4. Distinzione degli autori: bisogna fornire un modo per permettere ai vari autori del sorgente di risultare tali (ovvero di tracciare la storia e le modifiche fatte al software e da chi)

Questo, in linea di massima, è tutto. Come vedete, non c’è alcuna garanzia di migliori capacità o di economicità dei programmi OpenSource rispetto a quelli proprietari (quelli che hanno limitazioni rispetto a quanto sopra esposto). I sostenitori dell OpenSource ritengono tuttavia (come si evince anche dal paragrafo in inglese che ho citato) che queste linee guida possano condurre “de facto” alla creazione di software “di qualità superiore“.

Di per sè, un software OpenSource non è migliore di altri. La qualità di un programma dipende da altri fattori ed è un argomento comunque molto complesso e oggetto di diatribe, perchè il settore informatico è relativamente recente, se confrontato rispetto ad altri settori, per cui non vi è ancora omogeneità nelle procedure da seguire. Comunque, si stanno facendo enormi passi in avanti per codificare le metodologie di sviluppo e valutazione del software.

Se ad esempio posso valutare la qualità di un ponte stradale andando a misurare dei parametri di riferimento e confrontandoli con le specifiche richieste su tali parametri in fase di progetto, non così semplicemente posso compiere una simile operazione su un programma. Innanzitutto perchè non è mai facile definirne le specifiche, e questo per una svariata serie di motivi che non sto a elencare qui. Inoltre, anche presupponendo delle ottime specifiche, non è semplice stabilire qual’è il vero comportamento di un programma: non si può semplicemente testare qualsiasi combinazione di comandi e di stati perchè richiederebbe tempi assurdi, sempre che sia fattibile! Questi due esempi (che rappresentano una minima parte dei problemi di progetto del software) vi dovrebbero far capire che la qualità di un programma ha poco a che vedere con il fatto che il codice sorgente sia pubblico o meno.

In realtà si sostiene che nei programmi opensource sia molto più facile andare ad apportare migliorie e correzioni. Questo è sicuramente vero, perchè un programma il cui codice sorgente sia pubblico può essere ispezionato da chiunque: ad esempio, uno sviluppatore potrebbe andare a vedere come è stata implementata una certa funzione, e potrebbe decidere di riscriverla in modo più efficiente. Chi trova una vulnerabilità di sicurezza la può correggere o la può segnalare al team di sviluppo. Questo processo non avviene pubblicamente per i software proprietari (a meno di non utilizzare pratiche complicate come il reverse engineering, che quasi sempre sono illegali), ma è lasciato alla discrezionalità del “proprietario”.

Anche qui, dipende molto dalla metodologia che si adotta per tracciare le modifiche ai sorgenti. E in questo esisteranno “cattivi sviluppatori” sia nel campo dell’opensource, sia nel campo del software proprietario. Un esempio di buona metodologia è sicuramente quella adottata dal progetto mozilla, che ha standardizzato la gestione delle modifiche e la segnalazione di bug relativi al proprio software tramite un sistema appositamente sviluppato, bugzilla. Relativamente al software proprietario, si può fare affidamento sulle certificazioni (sempre che non se le siano comprate sottobanco smiley ) che un azienda può conseguire e che attestano l’aderenza a certi standard e “best pratices“. In generale, la presenza di queste certificazioni sta ad indicare un buon livello di organizzazione aziendale, che IN TEORIA dovrebbe riflettersi sulla qualità del prodotto.

E ora, prima di uscire totalmente dal seminato, veniamo al secondo aspetto importante: il software opensource è “gratis”? La risposta che mi sento di dare è … dipende.

Parlando di costi in generale (e questo è un discorso che si applica sempre, come ho già fatto ad esempio nell’articolo per i risparmi casalinghi), bisogna considerare che essi si suddividono principalmente in due categorie: costi di acquisto e costi di esercizio.

Per affrontare questo discorso, e vorrei che lo notaste, non farò alcuna distinzione tra software proprietario ed opensource. Questo perchè il mio discorso si applica in generale ad un qualsiasi programma informatico.

Per quanto riguarda i costi di acquisto, un programma può essere gratuito oppure no. Un programma gratuito opensource può essere ad esempio FileZilla (un client FTP molto popolare). Un software proprietario gratuito può essere Free-Av (la versione “free” di un antivirus commerciale).

Parlando invece di costi di esercizio, bisogna prima spiegare qual’è la loro natura nell’ambito del software. Parlando di automobili, il costo di acquisto è rappresentato dal prezzo di listino dell’auto. I costi di esercizio comprendono tutte le spese che dovete fare dopo l’acquisto per mantenere “in regola” la vostra auto: la benzina per farla andare, i ricambi, l’assicurazione, il bollo, le revisioni … Nell’ambito del software invece i costi di esercizio sono qualcosa di più “astratto“: essi infatti sono relativi alla funzione e all’importanza che il programma utilizzato ha per la persona che lo utilizza (lo stakeholder, quello che “ha interesse ad usare il programma”). Passiamo ad esempi pratici.

Un’azienda Y decide di dotarsi di un’sistema ERP per la razionalizzazione dei propri processi aziendali. In questo caso il costo d’acquisto iniziale dovrebbe rappresentare il fattore meno importante nella scelta. Questo perchè l’azienda Y si sta dotando di un componente che, una volta scelto, diverrà parte integrante dell’azienda, e sarà quindi di cruciale importanza per l’adempimento delle mansioni aziendali (= il business aziendale = i soldi che fa l’azienda). Probabilmente, l’azienda sarà più interessata a valutare sia le funzionalità offerte dal sistema, sia la sua “affidabilità“, sia i costi d’esercizio rappresentati, ad esempio, dal supporto tecnico fornito da chi rende disponibile il sistema ERP.

A questo punto dovrebbe essere chiara una cosa al lettore: in linea teorica, un produttore di software potrebbe decidere di distribuire il proprio sistema ERP gratuitamente, magari anche in forma opensource (cosa che già avviene, un esempio qui). Ovviamente il guadagno avverrà su altre cose: vuoi il supporto tecnico 24h al giorno? Paga. Vuoi la formazione del personale? Paga. Vuoi un componente plugin specializzato da inserire nel tuo sistema ERP? Paga. Tutti questi rientrano nei costi d’esercizio.

Un’altro esempio di questa politica è rappresentato dalla piattaforma di sviluppo (IDE) Eclipse . In questo caso si fornisce gratuitamente un ambiente per sviluppare software (cosa che ne permette una rapida diffusione tra gli interessati). Esso è organizzato in maniera fortemente modulare: a questo punto chiunque può pensare di aggiungere funzionalità al prodotto con appositi plugin, che verranno rilasciati gratuitamente o a pagamento.

Guardiamo la cosa da un’altra prospettiva ancora. Esistono certi campi dell’informatica che presentano fattori di criticità estrema. Pensate al sistema di controllo di un apparecchio per radiografie. All’avionica di un aeromobile. Al software per la gestione del traffico ferroviario. Alla gestione dei dati bancari. In questi campi, un qualsiasi errore può portare a guasti le cui conseguenze in genere rappresentano un danno per le persone, per cose, oppure economico. A casa vostra la schermata blu viene in genere risolta con un bel reset (e con una scarica di bestemmie inenarrabili, ma questo è un altro discorso). Se l’apparecchio che vi sta facendo la radiografia ha una “schermata blu”, voi andate al creatore (oppure tornate a casa con 12 braccia).

Ed è proprio per questo, fondamentalmente, che Grillo nel suo articolo l’ha sparata (e anche DFC l’ha notato). Il software opensource è si gratuito all’atto dell’installazione, ma per ottenere certe garanzie bisogna sganciare la grana, e tanta. Dire che si può tranquillamente prendere il software delle Pubbliche Amministrazioni, cestinarlo e sostituirlo con alternative opensource per avere tutto come prima ma senza pagare nulla, è una stronzata megalitica. Mi chiedo, a questo punto, se Grillo le spari di questo calibro anche nei campi in cui non ho i mezzi per rendermene conto.

Una cosa però si può aggiungere: sicuramente sarebbe possibile (ed auspicabile) sostituire il software in certi settori non critici. Penso ad esempio al settore dell’istruzione: invece di avere i laboratori didattici con installato Windows, Office e compagnia bella (tutti pagati e licenziati), si potrebbe ottenere lo stesso risultato utilizzando prodotti a costo zero. Le attività didattiche ne uscirebbero perlopiù incolumi, se non migliorate (anche perchè, parlando di informatica, è sicuramente più istruttivo lavorare con un sistema UNIX che con un sistema Windows, ad esempio. Posto ovviamente che ci sia almeno una persona competente a spiegare le cose alla classe). E lo stesso ragionamento è fattibile pensando, che so, ad alcuni applicativi di uso comune negli uffici (Word Processor in primis).

Se siete arrivati fino a qui, complimenti. Ho faticato a tenere le fila del discorso perchè è un argomento molto complesso e pieno di collegamenti con altri argomenti ancora più interessanti. In ogni caso, il concetto che volevo far passare è quello di fare attenzione a certe sparate che si sentono in giro in rete. In special modo, fare attenzione quando queste sparate vengono accompagnate da fervore ed indignazione. Io stesso ne cado vittima spesso (specialmente quando parlo di Chiesa smiley ), cerco però sempre di mantenere un punto di vista oggettivo, e spero di riuscirci (almeno in una qualche misura).

Come sempre è gradita la vostra partecipazione. Commenti, chiarimenti, correzioni, delucidazioni. L’argomento è qui per essere sviluppato, se avete voglia di discuterne utilizzando l’apposito form sottostante.