ObjectSpaces early days


Matt has a very good post on the his­tory of ob­ject re­la­tional frame­work in­side Microsoft. He and I started the whole ObjectSpaces thing to­gether very many years ago (about six and a half). I thought I should add my two cents.


You might be won­der­ing how a pro­ject starts in­side Microsoft (or you might not). In this case, I was hired in the ADO.NET team to build an ob­ject re­la­tional frame­work. That was my as­sign­ment. The prob­lem was that I had no dev or tester to work with. I also had just ar­rived in the US from Italy and my English was ter­ri­ble (that has­n’t changed much). My only qual­i­fi­ca­tions for the job were that I was in­cred­i­bly pas­sion­ate about the topic; I had built a cou­ple of small ones in my spare time and have used many more in var­i­ous pro­jects. But still I had no idea on how to make things hap­pen in this big com­pany. Hell, I could barely un­der­stand what peo­ple were talk­ing about at lunch.


Anyhow, my boss told me that there was a guy who was rel­a­tively free, but I had to come up with an idea, con­vince him that the idea was a good one and that he should go ahead and pro­to­type it. That guy was Matt Warren, al­ready one of the best de­vel­op­ers in the SQL team and the dev lead of plenty of our .NET stack.


The first time I en­tered his of­fice and started talk­ing, he im­me­di­ately told me: Not now, I’m de­bug­ging”. A good start … But af­ter that, we hit it off im­me­di­ately. We talked about what an OR frame­work is, what it should be, how we could in­no­vate in the space and so on. After a while, Matt started work­ing on the very first ObjectSpaces pro­to­type. Our modus operandi was pe­cu­liar. I would go to Matt’s of­fice and we would dis­cuss a par­tic­u­lar fea­ture or sce­nario. He would tell me: Ok, we are on the same page, I’ll see you to­mor­row”. The next day the fea­ture would be im­ple­mented. If he told me: It is go­ing to take me 5 days to code it” I knew he did­n’t like the fea­ture and I had some more con­vinc­ing to do. Sometime we would agree, some­time we would­n’t. Sometime I came up with staff to im­ple­ment, some­times Matt did. We fig­ured out a lot of stuff in those days.


Also I learned how to work with dif­fer­ent cat­e­gories of pro­gram­mers. If you work with a bad pro­gram­mer you have to tell him how to im­ple­ment some­thing. If you work with a good pro­gram­mer you have to tell him what you want the fea­ture to look like. If you work with an ex­cel­lent pro­gram­mer, you just have to tell him what your fi­nal goal is. I quickly re­al­ized that the lat­ter was the most pro­duc­tive strat­egy with Matt. I had just to con­vince him of the busi­ness need for some­thing. Implementing it ended up to be a de­tail.


That ini­tial pro­to­type grew to be­come ObjectSpaces (it was called Cheops ini­tially). The team grew to be about 25 peo­ple, grow­ing and stretch­ing me per­son­ally. We went through two painful rounds of uni­fi­ca­tions with big­ger prod­ucts. In the end ObjectSpaces was cut. Matt moved to the C# team to work on LINQ. Dinesh and I fol­lowed af­ter a short while. The whole ObjectSpaces team scat­tered in var­i­ous places around the com­pany. The ob­ject re­la­tional thing started again in the C# team as part of the LINQ pro­ject. This time around we also had a com­piler to play with. Plus Anders was on board to sprin­kle his de­sign magic over the whole thing.


As Roland would say, the world has moved on. Matt is now a big shot ar­chi­tect and I lead a team of amaz­ingly smart in­di­vid­u­als (they are forced to act as if my words make sense, imag­ine that …). We are ship­ping a game chang­ing prod­uct in LINQ and a won­der­ful ob­ject re­la­tional frame­work in LINQ to SQL. Things turned out for the best (even if five years too late).


Still it is a plea­sure to think back at those early days (and nights) of figuring out stuff’ six years ago. A lot of that stuff’ is in­side our prod­ucts to­day, and that is some­thing to be proud of.




Philip Coupar


I re­mem­ber see­ing Object Spaces at PDC in 2001 ,I think.  It is great to see that good ideas even­tu­ally make it into the main­stream prod­ucts.

stefan demetz


fi­nal­mente c’e’ linq …
cmq, c’e’ una so­ci­eta’ ital­iana (di un mio am­ico) che ha un’ ORM da una dozzina d’anni ….
con ver­sioni in SmallTalk, Java e .NET
il tutto an­tecedente/​de­rivante da tec­nolo­gia TopLink (che Oracle ha com­prato qualche anno fa)
fun­ziona una mer­av­iglia al­tro che Hibernate, e’ in pro­duzione da anni in grosse banche ed as­si­cu­razioni a Milano
cmq, state facendo un’ ot­timo la­voro su .NET, e’ fenom­e­nale rispetto a Java

The Wayward WebLog


Luca has a blog post that says some kind words about me in re­gards to our work to­gether on ObjectSpaces.

Paolo Pialorsi


Segnalo un post di Luca Bolognese, nos­tro con­nazionale e Lead PM di LINQ, che riper­corre gli ul­timi 6

Luca Quintarelli


E’ da un p&#242 che leggo il tuo blog, fare l’ar­chi­tect in Microsoft penso sia il sogno di  molti, an­che il mio quando avevo 20 anni, cos’&#236 ora ti leggo cer­cando di im­mag­inare l’at­mos­fera :)
Ho ap­prez­zato molto la frase sui bad,good and ex­cel­lent pro­gram­mer con­di­vido al 110%

Roger Jennings


You men­tion that ObjectSpaces was code-named Cheops”, but I re­call the first pre­view from PDC was called Orca.” If so, did Orca stand for Object Relational Component Architecture?“
Just check­ing facts.
http://​oak­leaf­blog.blogspot.com/​2005/​09/​lan­guage-in­te­grated-query-linq-pro­ject.html and

Orcas was the co­de­name for the whole Visual Studio re­lease. The code name for the ob­ject­spaces pro­ject was Cheops (I know be­cause I came up with it :-) )