The Cathedral, the Bazaar, and Microsoft’s presence on both sides of the Vietnam War of Computer Science
Let's start this post with a couple of warnings / disclaimers:
- Be advised that this post mixes metaphors all over the place! J
- Regardless of the fact that I am a Microsoft employee, this post represents my opinions only, and should not be mistaken as representing Microsoft's position on the matter discussed, or the opinion of any other Microsoft employee.
The Cathedral's Bazaar
One of the most interesting and influential papers I ever read about practicing software development is Eric Raymond's "The Cathedral and the Bazaar". Very readable, entertaining, illuminating, and most importantly – extremely influential! I have yet to see a sociological study of the subject, but it is said that this paper was one of the most influential in popularizing the Open Source movement.
The idea of developers offering they're open-sourced and frequently freeware products in an open market (i.e. Bazaar) as opposed to platform vendors creating strictly commercial, shrink-wrapped software (i.e. Cathedral) has indeed gained a lot of ground since 1997 (the year "The Cathedral and the Bazaar" was first published). So much so, that even one of the most well-known examples of a cathedral oriented company – Microsoft – has adopted an Open Source strategy and is actively encouraging an Open Source community.
This is similar to the concept of a bazaar (IMHO) but not quite, since it is, after all, a cathedral-sponsored initiative.
A real bazaar community is currently in the process of coalescing in the form of ALT.NET. These guys have been around for quite a long time, coding vigorously. See NHibernate, RhinoMocks, SharpDevelop and more. The all-encompassing umbrella nickname "ALT.NET" was originally proposed by David Laribee and was adopted as its official name. Since then, quite a few of the best-and-brightest of .NET open source developers joined ALT.NET (or more correctly, since it is a very loosely-coupled group, chose to associate themselves with the group. I don't think they became "fully-indoctrinated card-carrying members of the ALT.NET Party"... J)
However, not everything is milk-and-honey in the land of ALT.NET. There are "some" aspects of "some" self-described members of ALT.NET that may be described as "problematic".
Allow me to quote one of my favorite bloggers – Sam Gentile – on the subject:
"ALT.NET is a divisive thing. No matter what they tell you, they are full of negative energy, they sneer at others that don't buy into their view and sneer at the "enterprisey" folks." (October 6th, 2007)
And another one, since it is very relevant to the discussion (I'm getting there… please bare with me J)
"For a one sentence statement of my position… "ALT.NET is perceived as being anti-Microsoft because of a few bloggers' overzealous nature in describing their disdain for Microsoft products and all things anti-Agile." (October 7th 2007)
Aside from that, I must express my admiration for ALT.NET as an idea, and for many of its members' activity as expressed in invaluable software products, intellectual content and in their passion for writing software at the highest level.
The War
Here's a small insiders' secret: During the past couple of TechEd events in Israel, the Architects Panel session (hosted by MCS Israel's Guy Ron) was repeatedly asked about its opinions regarding the Relational vs. ORM debate. Although repetitive and somewhat cliche, this question always aroused the most interest among the audience, and the most heated debate among the panel's participants.
Ted Neward described the topic as "The Vietnam War of Computer Science". He certainly has a flair for the dramatic, but he has a point. This war is especially visible in the .NET world since, as Martin Fowler says in PoEEA, the tools support for the Relational approach in .NET is much more advanced, available and novice-friendly than the ORM tools.
For a long time, the "war" was fought with Microsoft exclusively on the Relational side, and open sourced community efforts on the ORM side (the most visible - and IMHO mature - opponent being NHibernate).
Enter ADO.NET Entity Framework.
It isn't the first attempt by Microsoft to enter the ORM space (did I hear somebody say "ObjectSpaces"???!!!) but it is the strongest effort yet. And it has some very impressive features.
However, It does have its limitations, as does every piece of software written by mere-mortals.
It is also a piece of software that is located in a virtual war-zone, and as such it should (and perhaps ought to) draw fire.
And fire it has drawn. The passion I so admire can be somewhat painful (see Ayende Rahien's apology which was elaborated on in .NetRocks' panel on "The Future of .NET") but I still think it is an invaluable tool on the way for better software.
On another level altogether, is the issue of the "ADO .NET Entity Framework Vote of No Confidence". The concerns raised in the letter are legitimate, and are discussed in length by Tim Mallalieu from the EF development team.
In a nutshell:
The letter's signatories express "concern for the welfare of software projects… that will make use of the forthcoming ADO .NET Entity Framework" due to "technical misgivings with the Entity Framework's current design and implementation". They go on and enumerate a number of architectural and technical issues, but the heart of the matter, IMO, is written between the lines of the starting paragraphs: The fact that "Microsoft and the Entity Framework team have received a tremendous amount of feedback from experts in entity-based applications and software architectures on the .NET platform" did not lead to Microsoft (and the EF Team's) accepting and implementing that feedback. The Machiavellian essence of the letter (as opposed to its technological essence) is a failure to influence the current direction EF is taking.
On the other corner we find Tim Mallalieu, a Program Manager from the EF team. His response points to some basic facts in software development: "The unfortunate reality is that these are scenarios [i.e. the scenarios outlined as problematic in the letter] that we care deeply about but do not fully support in V1.0... the choices on these features were heavily considered, but we had to deal with the tension between trying to add more features vs. trying to stay true to our initial goal which was to lay the core foundation for a multiple-release strategy for building out a broader data platform offering". He goes on to respond in detail to every item raised in the letter, but the point is that they are planning on an evolving product, using prioritized backlog, in which some of the items raised by the letters' signatories did not make it to release 1.0… Every Agile developer should feel at home with this approach.
I would encourage you to read both the "No Confidence" letter and Tim's blog post response before reading the following InfoQ commentary on the subject, especially the "Conclusions" section.
My 2 cents worth on the subject
Having surveyed the battle zone (quite shallowly, since an in-depth survey will consume the length of a career or two…) I would like to share some thoughts:
I would argue that the "No Confidence" letter marks a potential watershed in the relationship between the open source .NET community and Microsoft's development teams.
I am not saying that there will be a strain on future relationships – far from it!
I do believe, however, that this letter marks the community's most vehement (so far…) will and demand for a much more effective involvement in the decision making process (or backlog prioritization process) of select Microsoft development teams.
In hindsight, it should have been predictable that such a controversial subject would cause such an uproar in the community, especially since the topic of ORM best practices has been consuming so much time and intellectual effort from so many of .NET's best and brightest (the Vietnam War indeed…).
How will Microsoft teams react to such criticism? I believe that favorably and with an open mind. In my experience, both as an MS employee and as a Microsoft-oriented-developer before that, Microsoft is very open to criticism, and it encourages critical thinking from both inside and outside the company. There's no way the company could have reached its current market position without this feature built into its DNA, and I do not believe this will change anytime soon (and hopefully - ever).
This openness to criticism and community influence I am counting on and hoping for will also benefit ALT.NET and the open source community. A more influential community will create a partnership between equals in the development of the developer platform, and will create a true bazaar both inside and outside the cathedral.
It will of course create some very interesting (J) management challenges to Microsoft program managers, but hey… that's what they get paid for!!!