“ho visto troppe aziende, dove tutti sviluppano nelle loro piccole isole e nessuno ha un quadro completo dello stato del progetto” 

Cosa succede al di là dell’oceano nel mondo dello sviluppo software open source? Di questo e degli scenari futuri dell’IT abbiamo discusso con Daniel Savarese fondatore di Savarese Software Research Corporation.

Quali sono le caratteristiche del tuo sito Savarese.org?
Il sito ospita una miscellanea molto assortita di codici sorgente, per la maggior parte scritti in Java ed alcune  patch per i bug del software open source, per la maggior parte scritte in C. Attualmente, tra i software il più ricercato è RockSaw, una libreria multipiattaforma di accesso ai raw socket per Java. Verrà utilizzata in molti prodotti commerciali, in particolare i programmatori la usano per realizzare soluzioni custom all’interno di applicazioni enterprise, come ad esempio strumenti di monitoraggio della Rete.


Quando è nata e  con quali finalità  l’idea di Savarese.org?

Nel 1997 ho fondato una società denominata ORO Inc che ha sviluppato librerie software per  fornire funzionalità non disponibili nel core di Java. ORO è stata la prima azienda a cui ho dato vita, il suo scopo originale era quello di sviluppare intelligent search agent per Internet;  ho scelto di Java come piattaforma di sviluppo, e  mi sono reso conto che Java non supportava  un sacco di funzioni di base. Pertanto, ho dovuto scrivere un sacco di librerie di base iniziando  la concessione di licenze software. Ad esempio, nel 1997, non vi era alcuna standard Java regular expression API.
 Le librerie OROMatcher e PerlTools di la mia società hanno riempito il vuoto e divenne molto popolare. Purtroppo, non ho avuto il buon senso commerciale e ho  reso  disponibili le librerie, facendo pagare solo licenze per il codice sorgente. Ho venduto le licenze a molte grandi imprese (Hewlett-Packard è stata il mio primo cliente), come ad esempio IBM e Oracle, ma i guadagni non erano alti  e ho chiuso la società dopo un anno. Se avessi saputo di più circa il business, avrei registrato il codice sorgente sotto una licenza restrittiva come la GPL  usando per la vendita un'alternativa licenza senza le restrizioni della GPL. In questo modo chiunque avrebbe potuto utilizzare i codici sorgente nei loro prodotti senza restrizioni, evitando di acquistare una licenza del codice sorgente.
Quando sono andato a lavorare al Caltech e le librerie di ORO non erano più disponibili, un sacco di programmatori si sono lamentati. Non avevo realizzato quanto fosse popolare il software da me realizzato, così ho aperto Savarese.Org un modo per  mantenere le vecchie librerie di ORO disponibili per i programmatori che ne avevano bisogno. Alla fine ho donato tutte le librerie ad Apache Software Foundation (ASF), dove divennero Jakarta ORO.

In seguito vi è stata la messa in rete delle librerie, prima come Jakarta Commons Net, ed ora  come Apache Commons Net.

Nonostante l'aspetto di java.util.regex in JDK 1,4, Jakarta ORO continua ad essere utilizzato in una serie di importanti prodotti commerciali per sostenere le versioni Java più anziane. Prima quasi  ogni  application server  Java aveva la libreria, ma credo  che il software sia  alla fine della sua vita. Tuttavia 10 anni, è una buona durata per un software che ha visto pochissimi cambiamenti  nel corso del tempo. Ho paura che la progettazione di Apache Commons Net sia superata e richieda una riscrittura completa, ma continua ad essere molto popolare ed altri programmatori hanno ripreso il suo sviluppo. Questo è uno dei benefici dell’ open source, un programmatore può fermare lo sviluppo di un software ed un altro è in grado di prenderlo in carico senza perdita di continuità. Nel mondo del software proprietario, se una società fallisce, il software spesso scompare con esso.

 

Secondo te l’Open Source è in grado di supportare applicazioni mission-critical?
Penso che questa questione sia stata risolta da tempo. Appena laureato, nel 1994, ho partecipato alla costruzione del primo cluster Beowulf Linux alla NASA; Beowulf è stato il primo supercomputer costruito interamente utilizzando software open source. Se  si poteva costruire un supercomputer utilizzando software open source nel 1994, lascio immaginare che cosa si può fare ora.
 Google gestisce la maggior parte delle sue infrastrutture utilizzando software open source,inoltre Apache Tomcat, JBoss, MySQL sono solo alcuni esempi di software open source che vengono utilizzati per sostenere applicazioni mission-critical . Tuttavia ancora non tutti i software open source sono adatti per l'uso in applicazioni mission-critical, il software deve dimostrare di essere stabile e soddisfare elevati requisiti di prestazione. Inoltre vi è il problema relativo alla disponibilità di assistenza ai clienti. Se un progetto  realizzato con software open source risponde alle segnalazioni di bug  lentamente e non offre supporto, le aziende non lo useranno, non importa quanto è bello. Pagare per l’assistenza è una priorità assoluta per le imprese, spesso ha più senso pagare per un pacchetto software con compreso un servizio di supporto piuttosto che avere software free e dover risolvere da soli i bugs quando ci sono anomalie.
In ultima analisi, c'è molto di più la concorrenza tra progetti open source di software che tra i software commerciali, ciò implica  tassi di innovazione e di miglioramento molto più rapidi. Il risultato di questa  concorrenza è che i migliori progetti open source tendono sempre di più ad essere adatti per applicazioni mission-critical, Httpd Apache, che è il più usato Internet Web Server, è un grande esempio di tale fenomeno. 
 

Cosa pensi in merito allo sviluppo del  software Open Source nel mondo?
I modelli di sviluppo Open Source  variano notevolmente, basta dare un'occhiata alle differenze tra il modo in cui gli sviluppatori di ASF e del kernel di Linux gestiscono i loro progetti. La ASF si basa su un sistema di peer code review e  su un processo decisionale basato sul consenso (di solito tramite voto), invece  il kernel di Linux ha una serie di dittatori  autorizzati da  Linus a prendere decisioni quale codice accettare o non accettare. La ASF utilizza un codice sorgente residente su un repositorio centralizzato per evitare di creare Isole di sviluppo indipendenti. Linux utilizza un sistema di gestione del codice completamente distribuito in cui i team di sviluppo sono completamente all’oscuro di ciò che altri team di sviluppo stanno facendo.
In ogni caso  sia gli  sviluppatori di ASF che del kernel di Linux sono in grado di produrre software di alta qualità.

Il mondo dello sviluppo di software commerciale ha molto da imparare dal mondo dello  sviluppo open source. Quando ho lavorato per le imprese, ho sempre sviluppato i miei progetti in modo simile ai progetti dell’ASF. Il principale vantaggio è che tutti gli sviluppatori hanno coscienza di ciò che gli altri stanno facendo, ciò facilita la collaborazione e migliora la produttività. In qualità di consulente, ho visto troppe aziende
dove tutti sviluppano nelle loro piccole isole e nessuno ha un quadro completo dello stato del progetto. Peggio ancora, ho visto troppe società che gestiscono progetti, senza un controllo di versione o sistemi di monitoraggio dei rilasci Tali pratiche non hanno nulla a che fare con open source, sono solo fondamentali per lo sviluppo del software.

Otto anni fa era molto più difficile convincere i programmatori ad utilizzare pratiche di sviluppo open source, oggi invece i programmatori hanno familiarità con i software open source e la maggior parte di essi si basano su di esso.
Inoltre molte pratiche usate dai progetti open source sono semplicemente la base di ingegneria del software (ad esempio, controllo di versione, il rilascio di monitoraggio, unit test). Probabilmente sta insegnando, di  più agli studenti universitari, l'aumento dello sviluppo open source che le lezioni dei  loro professori. I corsi di Programmazione purtroppo non spendono molto tempo per l'insegnamento dell’ ingegneria del software come dovrebbero. 

Quale sarà il  business model per il software Open Source? È la consulenza il  futuro? 

Ancora non so quale sia il modo migliore per costruire un business attorno all’open source. Certo, la consulenza e i sistemi di supporto  hanno avuto un grande successo; Red Hat, JBoss, MySQL  hanno tutti goduto del grande successo di questo approccio. Grandi aziende come IBM hanno utilizzato il software open source per incrementare le vendite di  hardware e  la consulenza dei  servizi. Tuttavia per avere successo  non credo che sia fondamentale  la costruzione di una società attorno a un prodotto open source,  sono le società che utilizzano l'open source giorno dopo giorno o come parte dei loro prodotti che ne stanno traendo il massimo beneficio. Ad esempio, il mio Linksys (home router wireless), ora di proprietà di Cisco, viene eseguito su  Linux ma Cisco ancora non vende Linux come un prodotto.
Pertanto, il modello di business da realizzare è probabilmente quello di costruire prodotti e servizi che utilizzano software open source, per esempio, Yahoo, MySpace, Facebook, e Google non avrebbero potuto costruire le loro imprese senza il software open source.
 Il sistema operativo Mac OS X  della Apple utilizza molti parti di FreeBSD e il  browser Web Safari è derivato dal progetto. open source Web Kit. Nella maggior parte dei casi, le società che utilizzano  software aperto come un componente fondamentale dei loro prodotti e servizi  hanno un interesse nel contribuire ai progetti. Ciò vuol dire che i progetti open source di maggior successo hanno un sacco di sviluppatori corporate  che  contribuiscono al codice.
Rimane una questione aperta,  aprire il codice sorgente dei prodotti è buono per le imprese? Sun ad esempio infine è stato costretto ad aprire il  codice a Java e Solaris. Ciò aiuterà ad aumentare il loro business? Io davvero non lo so, ma so che costa meno che mai avviare una società che si basa sul software in quanto il costo del software è pari a zero quando si utilizza l'open source.
 

Dal tuo punto di vista qual è il futuro dell’IT?
L’IT è inerente ad un vasto campo di applicazioni proverò ad evidenziare alcuni aspetti. Un cambiamento che è stato previsto negli anni 90 in moti circoli scientifici è che la programmazione parallela diventerà più importante. Ciò non  è mai stato più vero di oggi, con l'onnipresenza dei processori multi-core.
 I programmatori dovranno imparare a sfruttare non solo  il parallelismo all'interno di programmi, ma anche il parallelismo tra programmi distribuiti. L'importanza del parallelismo distribuito è evidenziato ad esempio dalla pesante dipendenza di Google da  MapReduce  e dal loro file system distribuito GFS.  Gli IT manager dovranno imparare a ottimizzare l'uso di risorse di calcolo, d’altronde già noi vediamo il crescente impiego di  prodotti di virtualizzazione come VMware o di  grid computing.  Di pari passo con la distribuzione ci saranno la fault tolerance e l’alta affidabilità. Oggi nel mondo Web-oriented, dove il software espresso come servizio sta diventando la norma, i sistemi devono essere più ridondanti ed avere insiti meccanismi di tolleranza ai guasti; se una applicazione desktop si blocca, l'utente può riavviare il programma o riavviare il computer mentre invece se un'applicazione Web-based va in crash, perderesti molti euro al secondo se non ci fosse un sistema di failover. Immaginate se Google o Amazon avessero avuto un interruzione simile ai recenti guasti di rete del RIM Blackberry. Inoltre aumentano sempre di più i dati personali ed aziendali memorizzati in applicazioni Web based, pertanto la protezione dal furto di dati diventerà ancora più importante di quanto lo sia oggi.
L’utility-based computing, noto anche come cloud computing, probabilmente diventerà sempre  più comune, la gestione delle risorse di calcolo oggi è diventata più complessa che mai. L’outsourcing della gestione delle risorse di calcolo consentirà di concentrarsi sulla costruzione e la distribuzione delle  applicazioni, piuttosto che sulla gestione informatica delle  infrastrutture.

È possibile che sistemi di gestione distribuiti di codice sorgente come Mercurial e GIT saranno soppiantati da  sistemi centralizzati come CVS e Subversion come principali strumenti di sviluppo di software open source. Questa modifica renderà più facile che mai a avviare un progetto open source, e collaborare con altri sviluppatori.

 

Qual è il tuo prossimo progetto?
Sto lavorando su un certo numero di progetti, ma la maggior parte del mio tempo è speso per un progetto denominato Web Interactive Bus (WIB). È un nuovo framework per lo sviluppo di applicazioni Web che caratterizzato da fault tolerance, alta affidabilità, e le altre qualità che sono difficili da raggiungere con application server monolitici come ad esempio Ruby on Rails o contenitori di servlet J2EE.
 Uno dei problemi che la WIB risolve è come comunicare eventi in tempo reale tra due browser web attraverso Internet, senza utilizzare plug-in. Inoltre, usa molto meno memoria ed è molto più veloce degli application server Java. Un'altra  caratteristica fondamentale è la possibilità di distribuire gli elementi di  un'applicazione Web su più nodi di calcolo senza modificare il codice; questa capacità rende possibile scalare un applicazione molto più facilmente che prima. Al momento, la WIB costituisce la base per un'applicazione Web-based , un gioco di strategia che la mia azienda ha costruito chiamato Igfip (www.igfip.com). Il software rende possibile giocare con qualcun altro  (o guardare gli altri giocare) e chattare  in tempo reale tramite un browser Web, senza utilizzare le applet Java o plugin Flash. Il sito del gioco dimostra che il WIB è realtà e spero di applicarlo presto anche alle applicazioni aziendali.
Dato il mio lavoro sulla WIB, vorrei aggiungere alla tua domanda precedente  che in futuro, vedremo più applicazioni Web che forniscono  in tempo reale interattività. La condivisione  di fogli di calcolo  delle Google Apps  è solo un esempio di questa tendenza emergente.

Antonio Savarese

 —————-

Daniel Savarese è il fondatore di Savarese Software Research Corporation. Daniel ha contribuito a sviluppare il primo cluster Beowulf Linux alla NASA's Goddard Space Flight Center. Più tardi, ha fondato ORO, Inc, una società di sviluppo software object-oriented i cui prodotti sono stati concessi in licenza a IBM, Hewlett-Packard, Sun Microsystems, Oracle, Compaq, ed ad altre aziende Fortune 500.
Ha lavorato anche come Senior Scientist al Caltech. Ha pubblicato oltre 125 articoli e documenti di ricerca in materia di informatica e ingegneria del software. È stato il  editor tecnico per la rivista Java Pro. È un membro di le comitati di gestione degli progetti Apache Jakarta e Apache Commons.

Pin It on Pinterest