CORBA era un importante ed ambizioso progetto per lo sviluppo di componenti distribuiti, e per molto tempo è stato il Sacro Graal dell'informatica: non so quanti di voi siano abbastanza
vecchi da ricordare quando ai colloqui di assunzione cominciavano un ansioso tormentone alla Nanni Moretti, del tipo:
"Ma CORBA lo conosci? Ci hai lavorato? Almeno con Visibroker, ti prego dimmi di sì!"
Pochi anni dopo, CORBA è una tecnologia ampiamente superata in favore dei Web Services, che vive di un mercato di
maintainance dei faraonici progetti degli anni '90.
Un
articolo sulla rivista della prestigiosa ACM, che di sicuro non ha bisogno di presentazione alcuna, cerca di comprendere i motivi di questa rovinosa caduta. In primo luogo, per CORBA era stata scelta la strada più sicura per il baratro: affidarne la standardizzazione ad un organismo burocratico, farraginoso, in grado di produrre uno standard complicato che nella sua [url=http://www.omg.org/technology/documents/corba_spec_catalog.htm
t=_blank]ultima versione[/url], vecchia ormai come il cucco (risale al 2001, anche se per mantenere una parvenza di
freschezza è stato fatto un
aggiornamento, puramente cosmetico nel 2004),
vanta 1154 pagine per la sola parte
core: viene da chiedersi se qualcuno le ha mai lette, compreso chi le ha scritte.
Il lungo e ponderoso articolo della ACM riassume l'intera ascesa e caduta di CORBA, dal primo tonfo con la versione 1.0, per la quale qualche ignoto genio partorì che dovesse avere il solo mapping in C, alla versione 2.0 del 1997, in cui fu introdotto il mapping in C++, mentre l'anno dopo arrivò quello per Java. Fu il periodo del trionfo di CORBA: il neonato dell'OMG cavalcava la tigre di quella che era la Sun negli anni Novanta, gli anni in cui il successo si misurava dalla presenza sul Web, se volevi andare sul Web ci dovevi andare con Java, e tutti chiudevano un occhio sulle magagne.
Al tempo stesso però CORBA non abbracciò proprio lo sviluppo per il Web: tutti scrivevano JSP ed EJB, e poi si ricordavano di CORBA quando occorreva implementare il middleware, a volte perché comunque c'era RMI e su Windows aveva fatto la sua comparsa DCOM, anche quello a dire il vero troppo complicato per essere usabile. Certo, all'inizio questo non fu immediatamente evidente, ma era stata una scelta suicida. Una scelta che doveva ancora esplodere in tutto il suo dramma, quando gli sviluppatori scoprirono l'uovo di Colombo: i commerciali facevano vedere come far comparire un
Hello World! su venti piattaforme contemporaneamente, ma scrivere qualsiasi applicazione non banale in CORBA è difficile, difficilissimo. Cito letteralmente dall'articolo ACM:
"Molte delle API erano complesse, inconsistenti e completamente arcane, costringendo lo sviluppatore a tener conto di un mucchio di dettagli". CORBA è l'apoteosi della cultura veterouniversitaria:
"E' migliore, perché è tanto difficile che lo comprendiamo solo noi".
Gli standardizzatori si resero conto che il giocattolino stava per essere messo in soffitta e cercarono di correre frettolosamente ai ripari, facendo partire i lavori nel 1996 per una
CBOF (Common Business Object Facility). E qui fallirono, perché un elefante burocratico non è in grado di rispondere in maniera adeguata nemmeno all'imminenza della morte. Il mondo dell'informatica vera in quegli anni conosceva la fibra ottica, le community, il
pervasive computing, ed intanto il gruppone di CORBA sfangava in interminabili discussioni di stampo
politico (non lo dico io, lo dice ACM), finché non si trovò col coltello alla gola e nel 1999 dovette far uscire il
CCM (CORBA Component Model). Fatica sprecata.
Anche qui è inutile commentare, basta tradurre letteralmente il parere di ACM, una delle associazioni più autorevoli al mondo:
"La specifica era vasta e complessa, e la maggior parte non era mai stata implementata, nemmeno come proof of concept. La lettura del documento fa capire chiaramente che CCM era tecnicamente immatura; intere sezioni erano essenzialmente non implementabili o, qualora lo fossero, non garantivano la portabilità. Nessuno dei vendor di CORBA rilasciò un'implementazione commerciale di CCM, rendendolo un aborto. Ed anche se poi qualche implementazione è stata rilasciata, era troppo tardi. Il cavallo era già in fuga: altre tecnologie a componenti avevano messo piede nelle industrie, al punto che un'altra tecnologia a componenti non aveva alcuna possibilità di successo". Piuttosto impietoso, ma chi può contrastare le tesi di ACM?
Ancora,
le implementazioni commerciali di CORBA costano tipicamente molte migliaia di dollari per lo sviluppatore, più le licenze di runtime per ogni copia installata di un'applicazione. Per molti potenziali clienti, CORBA era semplicemente troppo costoso. La curva di apprendimento era troppo ripida e la piattaforma era troppo complessa, difficile da usare correttamente, il che porta a lunghi tempi di sviluppo ed alte percentuali di difetti. Le prime implementazioni erano piene di bug, e mancavano di documentazione. E le aziende avevano difficoltà a trovare programmatori esperti di CORBA. CORBA contribuì, così, ai tragici fallimenti dei progetti software degli anni Novanta.
Un'altra palata di terra sulla bara di CORBA è stata sicuramente l'ascesa di XML: nonostante le sue pecche tecniche (come la lentezza del parsing), dopo la standardizzazione di SOAP, cominciata da Microsoft e DevelopMentor, tutte le aziende hanno abbandonato la nave che affondava, e CORBA è diventato una cattedrale nel deserto. Sarebbe morto lo stesso, se anche nel 2002 lo scoppio della bolla speculativa di Internet non avesse costretto molte società a ridimensionare i propri piani. La prima conseguenza fu la drastica riduzione del numero di prodotti CORBA commerciali, iniziata però molto prima del
flop. Non potendo più giocare con i numeretti in Borsa, le aziende cominciarono a chiedere perché dovessero pagare migliaia di dollari a licenza qualcosa che semplicemente non funzionava, e ciò che doveva finire, finì.
L'articolo prosegue elencando più in dettaglio le ragioni del fallimento: la complessità, le carenze in termini di sicurezza (!) e versioning, le debolezze architetturali, il mancato supporto per i linguaggi .NET, la farraginosità del processo di standardizzazione, ed è consigliabile leggere per intero le ragionate, limpide argomentazioni, ognuna delle quali suona come un colpo d'accetta sulla testa dell'ingombrante mostro. Ma il discorso sul grande
silver bullet degli anni Novanta si chiude già nella prima pagina:
"CORBA è in declino ed al giorno d'oggi non può essere definito in altro modo, se non come una tecnologia di nicchia".