De liberis fontibus natura - Considerazioni sull’Open Source
Technorati Tags: beppe, concetti, free, grillo, Informatica, ingegneria, licenze, open, opensource, programmi, software, source, sviluppo
![]()
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):
- Ridistribuzione libera: il software opensource deve avere una licenza tale da permetterne la libera distribuzione (senza royalties)
- 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)
- Lavori derivati: si devono permettere lavori derivati dall’originale, da redistribuire con la stessa licenza dell’originale
- 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
) 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
), 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.





darth said
Dicembre 15 2006 @ 6:13 pm
Che Grillo ormai da tempo le spari veramente grosse o con poca cognizione di causa è un fatto risaputo (anche perché leggo quel blog quotidianamente, per vedere come sono soddisfatti quelli di sx del loro governo ihih).
Per tornare al discorso di fondo, non posso che appoggiare il tuo articolo, tranne l’uso di una lingua morta come titolo…
sinceramente non capisco come mai nel XXI° secolo ci si ostini ad usare una lingua morta e sepolta da secoli!
Io, per restare nel tema, avrei messo un titolo in codice C
Porto anche dei piccoli esempi a supporto di quello che giustamente hai scritto:
i) esistono distro di linux “industriali” (scritte appositamente per aziende o per centri di ricerca, con supporti nel kernel specializzati per particolari periferiche) OpenSource, ma che paghi perché ti assicuro il costante supporto degli sviluppatori (credo, ma non ho testimonianze dirette, che una ditta Y potrebbe prendersi la disto, non pagare una cippa, ma poi farsi lo sviluppo di tasca propria).
ii) esiste l’esempio lampante di codice quasi del tutto non Open, ma che funziona meglio di qualsia altro codice aperto o meno:

Mac OS X + Darwin
Un codice così perfetto che permette di far girare codici inperfetti all’interno del suo ambiente
Bene la mia pubblicità occulta alla Apple l’ho fatta, un po’ di cagate le ho scritte, posso dire che la mia giornata non è andata persa ihihih
ciao
Vortexmind said
Dicembre 15 2006 @ 8:24 pm
… sono mica tutti degli zoticoni come te!

dellefragilicose said
Dicembre 16 2006 @ 7:13 am
senti, ieri ti ho scritto i titoli giusti con tanto di spiegazione e compagnia bella (ci vuole il de ablativo, non il genitivo. Oggi non lo trovo piu’. Che e’, ti sei vergognato dell’errore?
Comunque, grande articolo, ci dovevi essere tu a darmi una mano nella guerra dei pinguini.
Vortexmind said
Dicembre 16 2006 @ 11:24 am
Ma porca miseria. Ecco perchè mi segnava un commento ma io non vedevo niente. Ogni tanto questo blog impazzisce … deve essere finito in mezzo al filtro. Vedo che i problemi con le code di moderazione non sono esclusivi tuoi eheheh. Se hai la pazienza di segnalare anche solo il titolo giusto, lo edito immediatamente!
Ciao e grazie!
dellefragilicose said
Dicembre 16 2006 @ 2:14 pm
azz co ste somme … che una l’ho pure sbagliata
dovrebbe essere de libero fonte (singolare) o de liberis fontibus (plurale)
cia’
Nester said
Dicembre 16 2006 @ 2:54 pm
Nella mia esperienza lavorativa, ho capito che i pacchetti vanilla, soprattutto nelle aziende corporate di dimensioni notevoli, sono solo il 50% delle loro esigenze, e il trucco di business sta proprio nel dare quel 50% di valore aggiunto che spesso si traduce in consulenze, customizzazione anche notevole di un prodotto, supporto 24h di un pacchetto.
Tutto questo permette in molti casi di finanziare anche lo sviluppo opensource di certi software.
Ricordo sempre che la potenza di un software non è solo derivata dalle potenzialità che questo offre agli utilizzatori ma dalla comunità che ci sta dietro.