Articolo per ``il giornale dell'ingegnere'', di Alessandro Rubini
In questo articolo viene messo in luce come l'adozione di una politica di sviluppo software a sorgente aperto possa aprire nuovi spazi lavorativi per il professionista, in un campo che appare ora dominato dalle grosse ditte.
L'uso sempre più massiccio del calcolatore sta portando le persone a reendersi conto che il computer non è solo una macchina da scrivere, così che sempre più spesso emerge la richiesta di programmi che risolvano specifiche esigenze dell'utente.
La modalità di sviluppo e distribuzione del software comunemente usata non è in grado di sopperire a queste necessità ``individuali'' in quanto teso alla produzione di programmi di uso generale, come il programma per scrivere a macchina e quello per facilitare la progettazione edile. La creazione di questi prodotti ``per tutti'' è certamente impegnativa e per ripagare il grosso investimento di risorse umane le società di progettazione trattano i programmi come segreti industriali. In questo contesto, chi necessita di prodotti ``simili ma diversi'' dai programmi esistenti non potrà ricevere supporto dal produttore del programma originale. Nemmeno il libero professionista informatico sarà in grado soddisfare le esigenze dei suoi clienti perché dovrebbe reinventare tutto il programma prima di poterlo adattare alle esigenze del cliente.
Quando il committente di un programma è una grossa azienda si segue solitamente una strada diversa: il committente si rivolge a piccole società o liberi professionisti perché scrivano il software, ma il programmatore dovrà per contratto cedere tutti i diritti sul codice scritto, che diventa proprietà del cliente. La cessione dei diritti, che serve a tutelare il cliente nei confronti della sua concorrenza, contrasta decisamente con la professionalità del programmatore, che si trova depauperato della sua stessa creazione.
Si noti che nonostante molti algoritmi e molte problematiche si ripresentino immutate in situazioni molto diverse, la natura chiusa dei programmi esistenti obbliga ogni programmatore a ricostruire tutto il patrimonio di conoscenze pregresse prima di poter entrare efficaciemente nel mercato informatico. Questo sforzo spesso non è sostenibile dal professionista, che non potrà esprimere la propria creatività se non all'interno di una grossa struttura, nella quale però perderebbe la sua individualità professionale.
Fortunatamente i modelli operativi fin qui descritti non rappresentano gli unici modi di affrontare la creazione di programmi. Un'alternativa che si sta affacciando sul mercato specialmente all'estero, è lo sviluppo ``a sorgente aperto'', che lascia molto più spazio operativo al singolo professionista e porta globalmente a soluzioni più efficaci con minor spreco di risorse umane. Chi programma a sorgente aperto offre al suo acquirente il programma in formato sorgente (cioè nella forma in cui può essere modificato ed ampliato), oltre che nella forma direttamente eseguibile dal calcolatore; il progettista detiene i diritti sul programma creato e lo cede al suo cliente secondo una licenza d'uso che permette di usare e modificare il software. Grazie a questa formula l'autore è autorizzato a sfruttare nei suoi prodotti un enorme patrimonio di conoscenze e soluzioni già sviluppate, in quanto ogni programma può riutilizzare codice a sorgente aperto scritto da altri autori, purchè il lavoro derivato sia distribuito nella stessa forma. Si veda a questo proposito il testo di una tipica licenza d'uso a sorgente aperto, la ``GPL'' (General Public License), disponibile in italiano come http://www.pluto.linux.it/pluto/GPL.txt
Ma Quali sono i vantaggi per il programmatore che lavora a sorgente aperto? Chi lavora a sorgente aperto è autonomo e non dipende da altri per la sua crescita professionale, in quanto interi sistemi operativi sono disponibili in formato sorgente per poter essere studiati ed ampliati. Chi produce e vende software a sorgente aperto può utilizzare all'interno dei suoi prodotti programmi esistenti o parti di essi, purchè all'acquirente vengano assicurati sul programma gli stessi diritti (la copia e la modifica). Il professionista informatico che adotti lo sviluppo a sorgente aperto viene quindi pagato per il proprio lavoro senza per questo cedere l'esclusiva su ciò che ha creato, proprio come i professionisti che operano in altri campi.
Il libero accesso al codice sorgente da parte degli utenti del software non è un danno per il programmatore ma un valore aggiunto, in quanto spesso l'utente richiede una garanzia riguardo alla manutenzione del software che ha comprato. Avere accesso al codice sorgente garantisce il cliente, che sa di potersi rivolgere ad un altro tecnico informatico in caso l'autore originale del programma non possa o non voglia fare assistenza. Un programmatore può quindi vendere programmi anche se non può offrire assistenza continuativa sugli stessi. Vedo molto realistica al proposito una realtà in cui alcuni professionisti investono sulla propria creatività nella scrittura di programmi nuovi, mentre altri sfruttano la loro costanza nel seguire gli utenti nel tempo.
Una delle obiezioni più forti che vengono poste contro lo sviluppo a sorgente aperto sottolinea come non sia giusto che il primo cliente paghi per un programma che poi è gratuitamente disponibile per tutti. Nonostante molti programmi siano disponibili gratuitamente sulla rete nulla impedisce che il cliente chieda al programmatore di non ridistribuire il codice prodotto, per essere tutelato nei confronti della concorrenza. Una licenza d'uso ``a sorgente aperto'' impedisce di distribuire il programma senza il suo codice sorgente completo, ma non per questo obbliga a distribuire il programma sulla rete o con altri mezzi.
In pratica questo contratto a latere è raramente necessario: la libera disponibilità delle soluzioni realizzate è positiva perché ne facilita l'adozione e il miglioramento da parte di altri programmatori.; in effetti, in tutti i miei programmi è presente il contributo di altri progettisti, in varie forme.
Dal punto di vista qualitativo, il risultato di un'impostazione a sorgente aperto risulta solitamente migliore di prodotti creati con altre metodologie. Un programmatore che non cede i diritti sul frutto del proprio ingegno è incentivato a fare i lavori nel modo migliore possibile, investendo sulla chiarezza e sulla generalità delle soluzioni. Un autore che legga opere altrui, d'altra parte, non potrà che imparare da esse: anche nella programmazione è solo leggendo che si impara a scrivere bene.
Un altro vantaggio non trascurabile di questo modo alternativo di sviluppare i programmi è la loro notevole efficienza rispetto ai prodotti proprietari. Il lavoro congiunto di migliaia di programmatori in tutto il mondo ha portato all'elaborazione di programmi e linguaggi di programmazione molto più efficaci di ciò che solitamente viene venduto come ``tecnologia attuale''. Per esempio, i programmi aperti non si prestano al gioco al rialzo (l'aggiornamento obbigatorio di hardware e software ogni paio d'anni). Le prestazioni offerte dai sistemi operativi e dai programmi aperti, decisamente migliori rispetto ad equivalenti prodotti proprietari, permettono notevoli risparmi sulle infrastrutture hardware ed eliminano quasi definitivamente il noto problema dell'obsolescenza delle macchine. Conosco persone che garantiscono software e hardware ai propri clienti per 25 anni di funzionamento; questo non sarebbe possibile con sistemi operativi e programmi proprietari.
Nonostante i tempi non siano ancora maturi perché la programmazione ``open-source'' possa essere attività primaria dei professionisti del settore, ritengo che questa sia la direzione in cui si sta indirizzando l'informatica, grazie alla diffusione dei sistemi operativi a sorgente aperto (Linux, FreeBSD e altri). Chi volesse contattarmi per avere ulteriori informazioni al proposito mi può contattare all'indirizzo rubini@linux.it