I can’t understand why Microsoft persists with the EntityFramework development. Don’t get me wrong, the project isn’t necessarily terminally flawed or anything, but what is their corporate motivation?
Can they go their shareholders and demonstrably show that development of the EntityFramework will increase the companies bottom line?
I don’t think so.
The decision on what data access strategy to use does not drive the choice of server platform or development language. Generally enterprise organisations will have an overall strategy or theme to their suite of applications, with an intention to reduce the technology footprint to maximise the opportunities for re-use both in terms of components and physical resources, including developers.
It is very unlikely, IMHO, that a project in a predominantly unix/java environment would suggest creating a Win2008 stack so that their project can use EntityFramework 4.1.
If you programming web sites hosted in a windows enterprise environment, then you’re going to use .Net (especially if you reading this). You’re not using .Net because of the EntityFramework. If the EntityFramework did not exist then you would still use .Net and host in windows servers. In fact, only a year ago when EntityFramework really, really, was the pits that was exactly what we all did.
Can you seriously imagine in the pre-EntityFramework a developer saying, “hey guys, lets do this in java and hibernate, because, you know, .Net data access is just too hard….”. But that seems like the business problem Microsoft is trying to solve, and I for one just can’t see it.
So, that brings me back to the thrust of my discussion. Microsoft are not going to sell any more licenced products because of the EntityFramework. That means they will not make a cent from it.
How big is the EntityFramework team? I’m not sure, but whatever millions of dollars a year Microsoft is spending on the development I doubt they will ever see a red cent in return.
Microsoft is not a charity. If there aren’t making a dollar from a business activity, how loyal are they going to be to it?
But it’s worse than that. Microsoft haven’t developed a great product, and by freezing development on Linq-2-Sql they’ve burnt social capital. They’ve lumbered themselves with a product that they’ve asked enterprises to trust but knowing that it doesn’t scale up to the needs of enterprises.
There’s a marketing blitz to manage. Books to write, blogs and tweets and whatever people do on Facebook. A new fleet MVP’s spruiking the latest and greatest and demonstrating, once again, how EntityFramework works if you’re designing the worlds simplest blog or dinner invite management program.
So, projects will take on EntityFramework. They might have been directed to by their bosses, or perhaps they themselves feel cosier in the warm embracing bosom of the Microsoft mother ship. They’ll send of queries to the “support” line at Microsoft wondering about specific features to be told that those features are not supported, and may never be supported, and if we did support them then it would be a scheduled release sometime in the first quarter of the next millennium. You are not going to get a special build, just for you. Are you certainly are not going to be able to compile your own version.
And when it all goes horribly wrong, when entities and contexts and states are sprinkled from the the browser to the database and all the tiers in between (oh, yes – whose ever seen a demo on n-tier implementations of the EntityFramework, and aren’t self tracking POCO objects a contradiction?) and it performs like a dog then the blame will laid at Microsoft’s feet.
I think there is every likelihood that Microsoft will stop development of EntityFramework. Just. Like. That. Wouldn’t that be a pain. Projects already coupled to EF would have a just get by. Perversely, Microsoft are not likely to loose any revenue from this decision.
Consider NHibernate as an alternative. It hasn’t got a profit motive – it is driven by the passion of those core developers and the community that picks up builds and provides feedback. No corporate backer demanding profits and revenue streams, source code free to download and wade through. By any comparison NHibernate is more feature rich than EntityFramework (a direct result of it’s maturity and pedigree). The main complaint with NHibernate is the lack of coherent documentation on all the knobs, levers and other points of extensibility that can be made use of.
I think EntityFramework is a case of corporate “Not Written Here Syndrome”, where software is written in the firm but predominantly mistaken belief that you can write something better than that other, mature product, because you’re a genius and you’re starting from scratch. We’ve all done it. But hopefully at some point we mature out of it.
I want to reflect on the fact that Microsoft supports jQuery, to the benefit of both – it certainly adds keyboard-cred to the ASP.Net MVC platform. In my opinion, Microsoft would have done everyone a favour by getting behind the NHibernate project while enhancing Linq-2-Sql for the small data access tasks.