There is a lot of comment around recent pronouncements from the ADO.NET team that their future strategy for ORM will be Entity Framework and not LINQ to SQL. Having posted a fair amount on LINQ To SQL, trying to highlight its strengths as an ORM solution, I wanted to comment on how I see this development. This will not be a knee jerk ‘They killed Kenny…’ reaction, so I hope it will add to discussion rather than be just one more voice of dissent.
Do you hear that, Mr. Anderson? That is the sound of inevitability.
The rationalization of MS’s ORM strategy has been inevitable since L2S and EF appeared on the scene. Questions were asked about it before VS2008 even shipped. So MS was always likelty to try and rationalize the two approaches into one. Having two ORMs would end up being confusing to many customers, unless they could be clearly distinguished.Having worked for ISVs that had competing products customers only
end up confused by you competing with yourself, and that leads
customers to look elsewhere. So ratiuonalization was always the likely end of this story.
In one sense this is a positive step. Product confusion is removed from customers as to which platform is MSs strategic offering. Resources are focused on providing one good solution over two mediocre ones. So I think it is important to see how this news could have a positive outcome.
LINQ TO SQL has great design but lacks some functional richness. Entity Framework has a poor design but is functionally richer. The two products have complimentary strengths and weaknesses. Fixing them both would only further confuse the picture of which one to choose.
So I think that many of us have been expecting some sort of announcement that clarified where these two products were going.
Two men enter, one man leaves
My problem with the proposed direction though is that the Thunderdome approach seems to have been taken. Two products enter, one product leaves. With both products coming under the ADO.NET team, the home product, Entity Framework was always the favorite, playing in front of its home crowd. Some of us tried to yell our support for LINQ To SQL from the sidelines. But ultimately a Thunderdome contest was only going to have one outcome:
Not Invented Here.
Our lack of confidence issue in EF will not be solved by simply removing its competitors. What we need to see is increased understanding of the criticism. But the announcements still fail to point out the areas where LINQ To SQL is a better solution than EF. L2S has many features that EF badly needs such as domain-first support, POCO, performance of generated SQL, lazy loading, etc. Without public acknowledgement of those strengths doubt must remain as to whether or not the ADO.NET understand why LINQ To SQL has such positive support.
Thunderdome was the wrong approach here.
LINQ to Relations – a Reimagining
A better outcome would have seen MS announce a successor to both LINQ To SQL and Entity Framework. Take the feedback from both productsand build something new. Let’s call it ‘LINQ to Relations’ or ‘LINQ to RDBMS’. For sure re-use where you can to save cost if you need to, but re-imagine. I do not imagine that the API changes would be any more significant than those that L2S and EF developers will face in the next iteration of your ORM anyway.
To do it you would need to take a hard and dispassionate look at what works with L2S and EF and build a new product that has the successful features of both, and none of the weaknesses. Bring members of the L2S team on board is positions of authority so that the team that produced the better design can get their voices heard. If they are willing. Get external review of what was right and wrong with both products. Trawl a wider range of opinions. We do not know who you are listening too, but on the evidence of EF, it is not a broad enough audience.
Most of all take Faulkner’s advice and be prepared to kill your darlings. Sometimes the features that you have most invested in, are not ones that should make the final cut of the re-imagining.
Then release early, and release often.
Some might ask if this is not what MS are really saying? Not from the annoucements I have read. The annoucements talk to an investing in EF not a re-imagining of the LINQ to RDBMS options. If it is re-imagining be honest about it, rather than trying to bounce customers into EF through Fear, Uncertainty and Doubt over LINQ To SQL’s future.