ObjectSpaces early days
Luca Bolognese -
Matt has a very good post on the history of object relational framework inside Microsoft. He and I started the whole ObjectSpaces thing together very many years ago (about six and a half). I thought I should add my two cents.
You might be wondering how a project starts inside Microsoft (or you might not). In this case, I was hired in the ADO.NET team to build an object relational framework. That was my assignment. The problem was that I had no dev or tester to work with. I also had just arrived in the US from Italy and my English was terrible (that hasn’t changed much). My only qualifications for the job were that I was incredibly passionate about the topic; I had built a couple of small ones in my spare time and have used many more in various projects. But still I had no idea on how to make things happen in this big company. Hell, I could barely understand what people were talking about at lunch.
Anyhow, my boss told me that there was a guy who was relatively free, but I had to come up with an idea, convince him that the idea was a good one and that he should go ahead and prototype it. That guy was Matt Warren, already one of the best developers in the SQL team and the dev lead of plenty of our .NET stack.
The first time I entered his office and started talking, he immediately told me: “Not now, I’m debugging”. A good start … But after that, we hit it off immediately. We talked about what an OR framework is, what it should be, how we could innovate in the space and so on. After a while, Matt started working on the very first ObjectSpaces prototype. Our modus operandi was peculiar. I would go to Matt’s office and we would discuss a particular feature or scenario. He would tell me: “Ok, we are on the same page, I’ll see you tomorrow”. The next day the feature would be implemented. If he told me: “It is going to take me 5 days to code it” I knew he didn’t like the feature and I had some more convincing to do. Sometime we would agree, sometime we wouldn’t. Sometime I came up with staff to implement, sometimes Matt did. We figured out a lot of stuff in those days.
Also I learned how to work with different categories of programmers. If you work with a bad programmer you have to tell him how to implement something. If you work with a good programmer you have to tell him what you want the feature to look like. If you work with an excellent programmer, you just have to tell him what your final goal is. I quickly realized that the latter was the most productive strategy with Matt. I had just to convince him of the business need for something. Implementing it ended up to be a detail.
That initial prototype grew to become ObjectSpaces (it was called Cheops initially). The team grew to be about 25 people, growing and stretching me personally. We went through two painful rounds of unifications with bigger products. In the end ObjectSpaces was cut. Matt moved to the C# team to work on LINQ. Dinesh and I followed after a short while. The whole ObjectSpaces team scattered in various places around the company. The object relational thing started again in the C# team as part of the LINQ project. This time around we also had a compiler to play with. Plus Anders was on board to sprinkle his design magic over the whole thing.
As Roland would say, the world has moved on. Matt is now a big shot architect and I lead a team of amazingly smart individuals (they are forced to act as if my words make sense, imagine that …). We are shipping a game changing product in LINQ and a wonderful object relational framework in LINQ to SQL. Things turned out for the best (even if five years too late).
Still it is a pleasure to think back at those early days (and nights) of ‘figuring out stuff’ six years ago. A lot of that ‘stuff’ is inside our products today, and that is something to be proud of.
Tags
- CSHARP
7 Comments
Comments
Philip Coupar
2007-06-07T11:10:09ZI remember seeing Object Spaces at PDC in 2001 ,I think. It is great to see that good ideas eventually make it into the mainstream products.
stefan demetz
2007-06-07T12:19:46ZCiao,
finalmente c’e’ linq …
cmq, c’e’ una societa’ italiana (di un mio amico) che ha un’ ORM da una dozzina d’anni ….
con versioni in SmallTalk, Java e .NET
il tutto antecedente/derivante da tecnologia TopLink (che Oracle ha comprato qualche anno fa)
funziona una meraviglia altro che Hibernate, e’ in produzione da anni in grosse banche ed assicurazioni a Milano
cmq, state facendo un’ ottimo lavoro su .NET, e’ fenomenale rispetto a Java
The Wayward WebLog
2007-06-07T12:30:34ZLuca has a blog post that says some kind words about me in regards to our work together on ObjectSpaces.
Paolo Pialorsi
2007-06-07T13:06:12ZSegnalo un post di Luca Bolognese, nostro connazionale e Lead PM di LINQ, che ripercorre gli ultimi 6
Luca Quintarelli
2007-06-09T10:13:39ZE’ da un pò che leggo il tuo blog, fare l’architect in Microsoft penso sia il sogno di molti, anche il mio quando avevo 20 anni, cos’ì ora ti leggo cercando di immaginare l’atmosfera :)
Ho apprezzato molto la frase sui bad,good and excellent programmer condivido al 110%
Roger Jennings
2007-06-15T11:24:53ZLuca,
You mention that ObjectSpaces was code-named “Cheops”, but I recall the first preview from PDC was called “Orca.” If so, did Orca stand for “Object Relational Component Architecture?“
Just checking facts.
Ciao,
–rj
http://oakleafblog.blogspot.com/2005/09/language-integrated-query-linq-project.html and
http://oakleafblog.blogspot.com/2007/03/entity-framework-updates.html
lucabol
2007-06-15T13:30:20ZOrcas was the codename for the whole Visual Studio release. The code name for the objectspaces project was Cheops (I know because I came up with it :-) )