Tuesday, June 24, 2008

Tim Mallalieu Addresses “ADO .NET Entity Framework Vote of No Confidence” Manifesto

In the tradition of Émile Zola’s “J'accuse” and Martin Luther’s The 95 Theses letters, the ADO .NET Entity Framework Vote of No Confidence petition in the form of a WuFoo page with attached Entity Framework Vote of No Confidence Signatories table had gathered more than 150 signatures by mid-afternoon of June 24, 2008.

The petition focuses on these five theses:

  1. Inordinate focus [on] the data aspect of entities leads to degraded entity architectures
  2. Excess code [is] needed to deal with lack of lazy loading
  3. [A] shared, canonical model contradicts software best practices
  4. Lack of persistence ignorance causes business logic to be harder to read, write and modify, causing development and maintenance costs to increase at an exaggerated rate
  5. Excessive merge conflicts [occur] with source control in team environments

Three of the signatories, Jeremy D. Miller, Scott Bellware, James Kovacs, and Dave Laribee are among the seven Microsoft MVPs who “took apartDanny Simmons and others on the ADO.NET team at the MVP Global Summit in Seattle on March 14, 2007 and taught them NHibernate. Ayende Rahien, a.k.a. Oren Eini, a primary contributor to NHibernate, the best-known EF competitor, is another MVP involved in last year’s controversy who signed the petition.

The primary complaint at that time was lack of persistence ignorance, which I covered in detail by my Persistence Ignorance Is Bliss, but Is It Missing from the Entity Framework? post of March 17, 2008. Data-centric design was also a topic of contention.

I’m surprised to find lack of an “out-of-the-box n-tier story” missing from the list. Most developers consider lack of SOA-friendly features is more significant than data-first design, which is necessary when connecting to legacy databases.

On the whole I consider the “No Confidence Manifesto” to be doctrinaire and an example of attempts to enforce “political correctness” in software architecture. I’d wager that EF would perform more than adequately in 80% or more of the applications that require O/RM tools. It appears to be adequate for the Astoria team (It’s required to create updatable entities.) It works fine for me with the EntityDataSource and ASP.NET Dynamic Data.

A Serious Case of Hubris

Update 6/24/2008 1730 PDT re "doctrinaire” and “political correctness”

In a comment to Tim Lee’s detailed Thoughts on the Entity Framework Vote of No Confidence of 6/23/2008 an anonymous commenter says:

The perspectives in the letter are fed by many years of experience in building entity-based applications using the various techniques and frameworks that our evolving awareness of issues led us to along the way.

It's great that you're questioning the validity of the claims of the letter and expressing your perspective.  I don't think that we can possibly have the same perspective because of the different experiences between us.

Frankly, we can't really argue this issue on a peer level.  You'll have to practice entity-based designs within the context of practices that support reversability and the levels of productivity we get from choices of tooling and approach that have been honed by quite a bit of time invested in trial and error over the years.

And yes, I know that you can take this comment as pomp and arrogance.  That always seems to be the risk in the .NET developer community when we tell someone that there's much more experience to be gained and much more learning to do. [Emphasis added.]

Sounds like serious hubris to me. I wonder who was the author. (The comment form doesn’t have provision for entering a name or URL, but the author could easily have done so in the comment’s body.)

Update 6/25/2008: The author of the comment to Tim Lee’s post was Scott Bellware. See his comment to this post.

Fear and Loathing

That’s the coincidentally appropriate name of Bil Simser’s blog that contains his ADO.NET Enity Framework Vote of No Confidence post of June 23, 2008. (He’s one of the Manifesto’s MVP signatories.) If you really want to stick the knife in, accuse users of being “VB6 drag-n-drop programmers,” as in this excerpt:

Over the past year or two, I've been a casual observer into the Entity Framework coming out of Microsoft. Being an ALT.NET guy, the world tends to revolve around NHibernate for me so I've already got an excellent OR/M tool in my toolset. One of the big issues with EF that we've recognized is the general direction Microsoft has taken with it, following a data centric model rather than an object one. …

What we see on the horizon is a new breed of VB6 drag-n-drop programmers embracing EF as the next Messiah. We see a new generation of developers focused on mapping their data models and missing the target of architecting and constructing well designed systems.

It appears to me that the “NHibernate Mafia” are becoming the “ALT.NET Third Reich.” I’m surprised Bil didn’t sign his post “Elvis” or “Einstein.”

My conclusion is that the NHibernate Mafia is attempting to protect a vested interest in NHibernate as a result of the investment in time and effort to needed to become an apprentice NHibernate plumber, let alone a journeyman. You need to bill a large number of client-hours to recoup the learning curve. An O/RM tool that can handle, say 80%, of the bread-and-butter applications that keep most developers mortgage paid with RAD design tools must truly be a chimera.

Tim Mallalieu Responds to the Petitioners

Unlike Zola, the petition signatories weren’t prosecuted for libel, nor were they requested to recant their theses, as Pope Leo X insisted of Luther. Instead, Tim Mallalieu quickly addressed the issues raised in the manifesto by his Vote of No Confidence post of June 24, 2008. Entity Framework v2 will deal with theses 1, 2 and 4. I’m not convinced that thesis 3 is well taken. Issue 5 appears to be up in the air at the moment.

Mary Jo Foley’s Testers give Microsoft’s Entity Framework a no-confidence vote post of the same date puts the manifesto in perspective. Scott Bellware, who said in this comment that he was “the principal author” of the petition, requested that Mary Jo recant her classification of the signatories as “testers.” Scott’s comment to my persistence ignorance post, my reply, and Danny Simmons’ response start here. Scott’s primary concern at the time was availability of the EDM Designer in v1, not data-centricity.

Update 6/25/2008: Mary Jo’s column hit Techmeme on 6/24/2008 at 4:45 PM. My favorite comment to her column: “I'm not a tester: I've never installed nor tested an Entity Framework beta, but I signed the vote of no confidence” by odenni.

The manifesto had 226 signatories by 6/25/2008 at 8:30 AM.

Rebuttals to the Manifesto

Julie Lerman’s Oh that no-confidence vote on E.F. post of June 24, 2008 is a reasoned objection to the purpose, and therefore much of the substance, of the petition.

Update 6/24/2008 1815 PDT Added below:

But the most detailed, measured and even-handed response to the manifesto comes from Ward Bell, VP of Product Management of IdeaBlade, Inc. who posted Rejoinder #1 to "Vote of No Confidence in Entity Framework" late Wednesday. IdeaBlade produces the DevForce .NET enterprise application development framework. Its DevForce EF integrates EF with the DevForce framework to add advanced mapping and LINQ features.Dev Force contributes n-tier capabilities with its Business Object Server (BOS) and a full object graph caching on the client. DevForce EF is in the release candidate stage, which qualifies IdeaBlade in my view as an enterprise class user. A beta of a Silverlight 2 DevForce EF client is due in four to six weeks.

His post covers too much territory to summarize here. Just read it.

Update 6/25/2008: Dinesh Kulkarni’s Design of LINQ to SQL - What was I thinking or was I? post of 6/24/2008 is a parody of the manifesto’s author(s) position.

New Zealand (Kiwi) Australian developer Keith Patton’s A vote of confidence for the Entity Framework post of 6/24/2008 begins:

I've been working solidly with EF since the SP1 beta came out and can honestly say it's holding up very well across a large, enterprise data model structure, and alongside usage of a repository pattern and dependency injection to factor out most of the direct dependencies on the EF ObjectContext, we have a system that can move towards POCO over time with relatively little refactoring.

And continues with a detailed refutation of the manifesto’s theses.

Update 6/25/2008: Corrected Keith’s locale (see comments).

14 comments:

Jeremy D. Miller said...

Give me a break Roger. We didn't "take the EF team apart" at the MVP Summit in 2007. We didn't teach them NHibernate. We spent a lot of time trying to explain how we built systems, and why EF as it was then and today, would present a lot of extra friction when it came to TDD, DDD, and incremental design. Calling us the NHibernate Mafia is irresponsible rhetoric on your part. This isn't about NHibernate, this is about getting the Entity Framework to a point where it is usable because sooner or later I'm going to be forced to use it just because it's from Microsoft and people like you are hyping it up. I'm not trying to force *you* to do my form of PC architecture, I'm trying to stop Microsoft from forcing me to build my application with an outdated data centric philosophy.

I'm not concerned about EF's feature set, or its performance. As an ORM it seems to more or less have all the mapping options that I would ever use. It's the usability that we're complaining about here.

For the record, both meetings, including the extra session we had with the EF team after the official summit, were perfectly polite and productive. We've stated a point of view, and you've stooped to name-calling rather than actual engagement.

Out of curiosity, why would EF have any impact on SOA usage anyway? It's not particularly a good practice to bind a service to your own domain model anyway, and there's nothing stopping you from writing a web service on top of EF as is.

Scott Bellware said...

Roger,

I don't remember you at that meeting in March of 2007.

Sam's portrayal of that session doesn't represent the tone of the meeting, and it certainly doesn't do justice to the joint design session that followed on the day after, or the community engagement with the EF team that I organized in Montreal a month later as part of the DevTeach conference.

I appreciate your casting of our concerns as an example of attempts to enforce political correctness in software architecture. However, the same messaging can be applied to the software architectures that are implied by the Entity Framework.

I am the commenter on Tim Lee's post that you quoted. If I didn't leave my name because of an absence of a name field, it was probably a result of habituation to a common user interaction that was implemented in an uncommon way on his blog. I wouldn't have commented anonymously on purpose.

I hope the EF team opens up the advisory council to a broader audience and that we get to talk over a number of the issues with entity architecture in person in the future.

--rj said...

@Jeremy,

The quote about "take the EF team apart" and "teach them NHibernate" is from Sam Gentile's contemperaneous post of 3/14/2007 (http://samgentile.com/blogs/samgentile/archive/2007/03/14/ado-net-3-entity-framework-without-persistance-ignorance.aspx), which I linked to "took apart".

"NHibernate Mafia" is not my rhetoric. See James Kovacs' http://www.jameskovacs.com/blog/TheNHibernateMafiaAndThePersistenceIgnorantDomainModelEdmontonWrapUp.aspx and other references to the term in 2007. NHibernate Mafia gets 262 Google hits.

--rj said...

@Scott,

I wasn't at the March 2007 MVP Global Summit. I was following events via blog posts, such as Sam's.

Cheers,

--rj said...

@Jeremy,

See also references to the "NHibernate Mafia" and the description of the meeting by Richard Campbell and Danny Simmons in my "Danny Simmons Featured on .NET Rocks" post (http://oakleafblog.blogspot.com/2007/04/danny-simmons-featured-on-dotnetrocks.html) of April 7, 2007.

The post has a link to the transcript of the podcast.

Jeremy D. Miller said...

@Roger,

Yeah, I stopped being irritated at you when I remembered that post from Sam you're alluding to. Other than shock over "you didn't really do it that way did you?," that session was perfectly cordial.

The NHibernate Mafia tag is mostly to irritate Scott.

It's still a mistake to make this be about EF vs. NH. All I really want is EF to clean up some flaws before I have to use it or take over a system that uses it.

Remember, even if you don't care about the lack of POCO in EF, there's LBLLGen Pro, SubSonic, and other more mature choices.

Jimmy Bogard said...

Ian Cooper makes a great summarization as well:

http://codebetter.com/blogs/ian_cooper/archive/2008/06/26/the-criticism-of-the-entity-framework-is-not-just-around-domain-driven-design.aspx

FYI.

--rj said...

@Jimmy,

Agreed. I posted a review of his analysis earlier this morning at http://oakleafblog.blogspot.com/2008/06/ian-cooper-rings-in-with-level-headed.html.

--rj

Jimmy Bogard said...

@rj

Ha! It appears that I'm an idiot.

Thanks

--rj said...

@Jimmy,

Not in the least. See the "Jimmie Bogard Refactors a Layered LINQ to SQL Project to Achieve Separation of Concerns, Testability, and Dependency Inversion" topic of LINQ and Entity Framework Posts for 6/25/2008+.

--rj

June

Ted said...

Roger, thanks for chronicling this discussion and providing a very useful collection of links.

Of the points made by the "no confidence" authors, I found the statement that a "shared, canonical model contradicts software best practices" to be especially disconcerting. The authors don't explain why they believe this, other than to say, essentially, that the idea of a shared canonical model doesn't work, that it has bad side effects, and that these problems cannot be explained, only experienced.

I've done some digging, and I really cannot find any foundation or justification for this point of view. Scott Belware seems to have taken down his blog (or had it taken down). Tim Mallalieu's response for Microsoft tries to address this, but starts out by saying that there's been a lot of confusion around this, which I read as a polite way of saying that he's equally bemused and mystefied by this statement.

Any comments?

Thanks,

- Ted Epstein

Anonymous said...

just to clarify, i'm an irishman living in new zealand, fortunately i wouldn't take it as badly as a native kiwi for being called an 'australian developer';) Keith Patton, http://blog.keithpatton.com/2008/06/24/A+Vote+Of+Confidence+For+The+Entity+Framework.aspx

--rj said...

@Keith,

Sorry about that. Fixed 7/1/2008.

--rj said...

@Ted,

I think Scott B is talking about a single, enterprise-wide model that all applications/services/etc. are forced to use, regardless of their specific needs.

However, I don't understand how Scott comes to the conclusion that EF imposes that requirement.

The term "shared canonical model" gets only 51 google hits, so it doesn't appear to be a issue for a large number of folks.