Dopo alcuni … anni… ho riaperto il mio blog per una riflessione riguardo ad un tema che da un po rappresenta anche la mia principale occupazione.
Faccio una premessa. La mia prima connessione Internet risale, credo, al 1992, quando McLink la offrì ai suoi abbonati. All’epoca, almeno in italia, ancora non si parlava apertamente e diffusamente di Software Libero (tanto meno di Open Source, definizione che verrà alla fine degli anni 90), sebbene la Free Software Foundation fosse stata fondata nel 1985 da Richard Stallman.
Tutti i contributi software, a mia memoria, erano pressocché confinati all’utilizzo individuale, spesso all’interno di una community più o meno competente e guidati dalla passione per la tecnologia e l’informatica.
Non mi dilungherò molto, ma la diffusione in ambito universitario e, poi, individuale di Linux ha trasportato quello che era un ambito di nicchia e relegato ad una community, ad un livello di interesse anche per le grandi aziende (principalente per la possibilità di riduzione di costi legati all’adozione di sistemi UNIX proprietari presenti in quel periodo: HP-UX, Xenix, SCO, AIX, Solaris, ecc…).
Richard Stallman, dal canto suo, ebbe la grande intuizione di trasformare il modello di business dalla “licenza di utilizzo del software” verso un modello che remìunera i servizi accessori all’adozione di software libero (Cygnus, una società di consulenza fondata da Stallman, utilizzava proprio questo modello di business).
A supporto di ciò, sviluppò un modello di licenza del software che tutelasse l’utilizzatore finale (GNU GPL) pur garantendo la possibilità di richiedere compensi legati ai costi di distribuzione del software libero.
Come molto meglio indicato qui, infatti, il software libero è caratterizzato da 4 principi “etici” tutti legati al concetto di libertà per l’utente finale:
- Libertà di usare il programma senza impedimenti;
- Libertà di aiutare sé stesso studiando il codice disponibile e modificandolo in base alle proprie esigenze;
- Libertà di aiutare il tuo vicino, cioè la possibilità di distribuire copie del software rielaborato, rendendolo così accessibile a tutti;
- Libertà di pubblicare una versione modificata del software;
Le libertà sono spesso trasformate in “gratuità” del software, in una semplificazione che porta anche gli addetti ai lavori a tenere posizioni a volte poco conciliabili. Ed è proprio da una discussione che ho avuto su twitter qualche giorno fa con L’AssessorA Flavia Marzano ed altri addetti ai lavori che nasce questo post.
Secondo il mio (ma non solo mio) pensiero, infatti, queste 4 libertà implicano alcune conseguenze (solo parzialmente rese esplicite dal modello di Stallman) che rappresentano anche i limiti del Software Libero:
- Non vi è un “diritto” o riconoscimento nei riguardi di chi ha prodotto il software. Il software è un artefatto “corale” in cui pregi e responsabilità sono diffuse. Nessuno, quindi potrà mai porsi a garanzia verso l’utilizzatore finale se non l’utilizzatore stesso. Anzi, chiunque contribuisca o utilizzi il software libero deve garantire le medesime libertà.
- Obbligo, non dichiarato, di adottare un modello che impone la gratuità del software in quanto ogni altra forma ridurrebbe/eliminerebbe una o più delle 4 libertà suddette (situazione mitigata dalla possibilità di chiedere compensi per la disribuzione del software, anche modificato).
- Tutela dell’utilizzatore. Nulla viene detto nei confronti dei rischi che l’end user corre nell’adozione del software libero (e questo punto diventa cruciale nell’adozione all’interno di organizzazioni Enterprise in cui, invece, le responsabilità sono ben individuabili), soprattutto nei confronti dello stesso software libero che si adotta.
Nei riguardi del punto 2, ad oggi, non ho avuto alcuna indicazione di software libero NON gratuito. Tutti coloro che mi hanno contestato questo fanno riferimento alla possibilità di chiedere compensi per la distribuzione del software. Lo stesso Stallman non parla di gratuità ma di problema nella interpretazione del termine inglese “free software” come “possibilità di disporre del codice a costo 0”. Se rimaniamo in questi termini allora è vero, il software libero non necessariamente è disponibile a costo 0 ma il costo non è legato in alcun modo al software ma alla mia individuale possibilità di accedere allo stesso (distribuzione), ma è come dire che una automobile è a pagamento solo perché faccio pagare la spedizione della stessa al concessionario.
Se poi vogliamo fare un minimo di filosofia, il software in se rappresenta il risultato di competenze umane (esperienza, intuizione, innovazione, conoscenza del problema, dell’ambito tecnologico, ecc..) che sono il vero valore e, quindi, sono quelle che andrebbero riconosciute e remunerate (una parafrasi scherzosa è raccontata qui). Ma la posizione di principio del Software Libero non tiene conto di tutto ciò in quanto il suo unico obiettivo è l’utente finale e le sue 4 libertà (ma aprendo vorgini pratiche in termini di responsabilità oggettive legate all’adozione del software).
Faccio un esempio che forse caratterizzerà il nostro prossimo futuro. Le auto a guida autonoma. Nel caso di incidente che coinvolga una automobile a guida autonoma, quanti sono i soggetti responsabili? il proprietario dell’auto? il costruttore dell’auto? l’azienda che produce il software di guida? il pedone che è finito sotto l’auto?
Il software libero non da risposte a queste domande e non consente a nessuno dei soggetti indicati di definire un perimetro di proprie responsabilità.
Per colmare questo gap, non solo formale ma anche sostanziale (si pensi ad esempio alla continua necessità di aggiornamenti per la sicurezza che in una Enterprise debbono essere necessariamente regolati da SLA ben precisi), verso la fine degli anni 90, si afferma un modello diverso, pur sempre fondato sulla componente essenziale del software libero: la partecipazione diffusa alla scrittura e alla evoluzione del software: il concetto di Open Source.
A differenza del Software Libero, l’open source ha un approccio più utilitarista ma molto più efficace nei confronti dell’adozione da parte di organizzazioni di tipo Enterprise (una etica corretta può e deve svilupparsi all’interno di un contesto di profitto, andando incontro ad esigenze di mercato), pur mantenendo i principi del software libero ma tutelando maggiormente l’utente finale e chi si occupa di garantire questi nei confronti del software adottato.
Il decalogo su cui si basa il modello Open Source è il seguente:
- Libertà di redistribuzione;
- Libertà di consultare il codice sorgente;
- Necessità di approvazione per i prodotti derivati;
- Integrità del codice sorgente dell’autore;
- Nessuna discriminazione verso singoli o gruppi di persone;
- Nessuna discriminazione verso i settori di applicazione
- La licenza deve essere distribuibile;
- La licenza non può essere specifica per un prodotto;
- La licenza non può contaminare altri software;
- La licenza deve essere tecnologicamente neutrale;
I primi 2 punti sono molto simili ai principi del Software Libero mentre gli ultimi 4 si contrappongono in modo abbastanza netto a quanto, invece, indicato dalle varie versioni della licenza GPL (e, in parte mitigate dalla LGPL).
Non essendo io un legale e non volendo dilungarmi molto nel merito, non mi soffermerò su questi aspetti se non per quanto concerne gli aspetti di “contagiosità” che, per molto tempo, avevano frenato grandi organizzazioni ad aderire al modello di condivisione del codice.
Tale approccio, infatti, non tutelava in alcun modo gli autori e, indirettamente, non garantiva l’utente finale.
Una delle differenze sostanziali rispetto alla filosofia del Software Libero è data dai punti 3 e 4. Grazie alla loro presenza, infatti, è possibile definire un modello di business in cui un soggetto si pone come garante nei confronti del software che va a garantire verso gli utenti finali. Attenzione, tali punti non sono solo una tutela dei soggetti terzi, ma permettono agli utenti finali di avere ben definito il perimetro delle responsabilità e dei ruoli (e quindi il rischio e i costi).
Grazie a questo modello, alla fine degli anni 90 sono nate aziende (Suse, Canonical, Red Hat, solo per fare alcuni esempi) che hanno permesso da un lato l’adozione di software Open Source anche alle organizzazioni di livello Enterprise.
A differenza del software libero, però, il modello Open Source ha garantito che alle competenze e l’approccio enterprise alla distribuzione del software, fosse possibile affiancare quello delle responsabilità e il supporto in tempi certi e contrattualmente sostenibili.
In altre parole ha permesso di definire un perimetro di responsabilità intorno al software entro cui qualcuno (l’utente finale? il dipartimento IT? un soggetto esterno?) ha potuto inserirsi, farsi carico di responsabilità e, grazie alle proprie competenze, supportare il cliente finale ottenendo un profitto da queste sue attività. Con il software libero solo l’utente finale può farsi carico di tutto questo onere.
Ma dirò di più, il modello open source, a differenza di quello del Software Libero, premette di rimanere all’interno delle “libertà essenziali” dell’utente finale, senza danneggire quelle del contributore (cosa completamente assente nella filosofia Free Software) permettendo anche situazioni in cui il software sia a pagamento pur rilasciandone tutti i sorgenti sotto licenza open source.
In definitiva, pur semplificando, è vero che Free Sfotware implica gratuità dello stesso. E’ altrettanto vero che gran parte del software rilasciato con il modello Open Source risulta gratutio ma, rispetto al primo, è molto più netto il confine tra ciò che è a disposizione di tutti e ciò che può esserlo (le competenze, la garanzia, gli sla legati al software) remunerando correttamente le competenze e la struttura (tecnica, legale, ecc..) che permette tutto ciò.
Confondere i due concetti è deleterio perché il primo (basato più su temi etici che pratici) si impone su tutto e rende di fatto impossibile un modello di software trasparente (intendendo con questo la possibilità per chiunque di verificare effettivamente come funziona) ma non gratuito e con responsabilità individuabili con chiarezza e contrattualizzabili.
In pratica Free Software deve necessariamente essere gratis per non andare contro i suoi principi, mentre l’Open Source supera questo limite.
E’ pur vero che senza il primo l’altro probabilmente non ci sarebbe. E’ anche innegabile come entrambi, se confrontati con i modelli proprietari, garantiscono che il software prodotto si comporti secondo quanto dichiarato e permettano lo sviluppo di business all’interno dei servizi accessori e l’utilizzo di competenze diffuse (community) che incrementano enormemente il valore ntrinseco delle soluzioni software sviluppate con uno dei due modelli.
Deve essere però molto attento chi, nella valutazione dei costi complessivi, dovrà definire cosa sia preferibile internalizzare (in termini di competenze e responsabilità) piuttosto che affidare ad un soggetto terzo e regolato da ambiti contrattuali.
In altre parole la filosofia Free Software impone il solo paradigma “BUILD”, il modello Open Source permette anche quello “BUY”.
Una organizzazione di tipo Enterprise, nel decidere verso quale modello tendere, non si fermi a questioni di principio (etiche), ma rimanga all’interno di un perimetro di concretezza: ho le competenze tecniche per diventare “owner” della soluzione? posso disegnarla e evolverla autonomamente? posso rispondere in modo efficace nei riguardi di un rischio collegato all’adozione di software libero (ad esempio nella produzione di patches di sicurezza)? posso garantire gli stessi SLA che mi garantirebbe un soggetto terzo?
In un IT moderno non tutte queste domande possono avere una risposta affermativa, soprattutto in quelle in cui l’IT è una funzione strumentale e non un valore di business.
In ultimo, e magari sarà oggetto di un mio futuro post, chi guida e chi è capace di influenzare gli sviluppi software in un modello di Software Proprietario è abbasatanza chiaro: l’opportunità di business dell’azienda che produce il software. Ma chi, invece, guida nel modello Software Libero e Open Source? E, soprattutto, secondo quali regole?