Era giugno 2002, e partecipavo ad un private meeting con alcuni PM di Microsoft Corporation ed alcuni soliti noti: ad un certo punto, Ingo chiese lumi sullo stato di avanzamento della implementazione un “certo” ObjectSpaces. ObjectSpaces, per la cronaca, era l’O/RM che avrebbe dovuto fare la comparsa all’interno del framework 2.0: alla facciazza di quelli che pensano che MS sia sempre indietro nell’adottare pratiche e soluzioni, a Redmond stavano lavorando per fornirci un O/RM “out of the box” nel 2004 (prima del famoso/famigerato “Longhorn Reset” che portò sia Vista sia il FX 2.0 ad essere rilasciati in ritardo).
Il problema, durante quel meeting, era che io non avevo *mai* sentito parlare di O/RM: ergo, non sapevo proprio di cosa si stesse parlando e mi sentivo un (bel) po’ come Mimì (non “metallurgico” bensì “ferito nell’onore” <g>). Tornato in Italia (il meeting si svolse a Barcellona), cercai di documentarmi e, a partire dal “mitico” studio di Fussell, mi si aprì un mondo davanti.
Fu così che gli O/RM fecero irruzione nella mia vita professionale: più approfondivo la “questione”, più mi convincevo che la soluzione rappresentata da questi framework sarebbe stata rivoluzionaria, e non esitai a cercare di comunicarne il valore. Coloro che parteciparono al workshop UGIdotNET svoltosi il 19 settembre *2002* (!) ricorderanno che Giuseppe terminò la propria sessione su ADO.NET proprio con una breve “ObjectSpaces” preview. Dopo tante peripezie, però, il progetto ObjectSpaces naufragò e i vari “gusti” di LINQ non erano ancora nemmeno un puntino lontano all’orizzonte…
Sogno infranto? Macchè! Nel 2003, la folgorazione: “scopro” le prime build di NHibernate. Incompleto, poco stabile, praticamente privo di documentazione eppure… Sexy. Irresistibile. Inizia quella “corsa” che mi portò, nel corso del workshop UGIdotNET “Architecture and Management” (dicembre 2004) a parlarne nel corso della sessione “Design patterns applied” (era la demo relativa al pattern Adapter) e ad adottarlo per un progetto (in tutta sincerità, poi fallito) della “neonata” Managed Designs.
Da allora, NHibernate è costantemente cresciuto e migliorato: grazie alla disponibilità del sorgente, ho potuto imparare molte cose che mi hanno letteralmente salvato quando mi trovai a dover implementare un O/RM (con supporto per i “soli” SQL Server ed Oracle, per fortuna) per un cliente poco propenso ad adottare soluzioni di terze parti. Dover implementare un O/RM mi costrinse a comprendere *davvero* cosa sia un Query Object o una Unit of Work, e quindi quando arrivarono L2S/EF si trattò “solo” di capire dove in questi O/RM fossero stati implementati tali pattern o gli idiomi equivalenti. Questo permise ad MD di essere tra le prime (se non addirittura la prima) azienda in Italia a realizzare un progetto importante su EF, per giunta su DBMS Oracle (sia EF sia il provider per Oracle erano in beta… Tempi eroici! <g>)
Oggi per me EF ed NH sono “semplicemente” strumenti con le proprie caratteristiche: a volte meglio l’uno, altre volte meglio l’altro (e proprio in queste ultime settimane abbiamo avviato un nuovo progetto basato su NH). Ma, in assoluto, NH rimane *inarrivabile*: se non è un gioiello, poco ci manca e la sua “inarrivabilità” è un benchmark che “obbliga” anche gli “altri” (qualcuno ha detto EF? <g>) a crescere.
Se non fosse stato per quella domanda di Ingo, il mio percorso forse non sarebbe iniziato. Se non fosse stato per NH, se avessi dovuto attendere MS… Probabilmente sarei saltato sul “carrozzone O/RM” in ritardo come tutti coloro che hanno atteso che MS “shippasse” perchè prima era roba “esoterica per pazzi scatenati” (e <ironia mode=”on”>oltretutto</ironia> a pagamento, vedi gli *ottimi* ma pressoché sconosciuti Genome o LLBenPro). E non ci sarebbe stato nemmeno un UGIdotNET a mostrarne ruolo e valore sin dal 2004 (o 2002, fate voi), contribuendo alla realizzazione di un “substrato culturale” che oggi è finalmente emerso, con vantaggio di tutti. Sono solo dei “forse”, ma quel che è certo è che è grazie ad NH che posso affermare: “scampato pericolo” :-)
Grazie NH, mi hai dato tanto ed è tempo di iniziare a “restituire”.