Diverse.NET–This is good why exactly?

So, as I mentioned, Microsoft released NuPack, which lead Rob to write a post, which lead Ian to write a post, which various people have commented on one way or another.

This is another one.  Read stuff in order to make some/most sense of this.

I’m actually surprised it took as long as it did for one of the usual suspects to take the stand that Ian took.

Grossly paraphrasing, some of the themes include:

  • By introducing NuPack, Microsoft has unnecessarily harmed the OSS ecosystem around .NET package managers, including Horn, Nu, and OpenWrap.
  • In general, Microsoft does not do enough to promote “from the community” solutions to things, preferring to NIH their own instead.
  • When Microsoft does this, it hinders the growth of the community.
  • In general, the .NET community doesn’t really like to “engage with a diverse ecosystem over a monoculture.”
  • This is a bad thing, and (probably) only Microsoft has the ability to promote a diverse ecosystem.

There’s more (and less), of course, but that’s enough for now.

I’m going to go ahead and ask the obvious question (which Ian tries to answer, but not satisfactorily in my mind).  Why is having a diverse ecosystem so important?  Why is it a good thing in itself?  Given the sort of bland (and largely mindless) promotion of diversity (in the school, in the workplace, etc.), it might seem odd, even controversial, to question the value of diversity.  But, let’s leave the large philosophical and political questions aside.

Ian’s answer is this:

There does seem a lack of willingness within the .NET community to engage with a diverse ecosystem over a monoculture.In the long term this is not good for us. It does not drive the kind of innovation a successful development platform needs.

The first point (“lack of willingness”) is largely, I guess, true.  The second point (“this is not good”) is highly debatable.  The third point (“does not drive…innovation”) is demonstrably false.  The implied fourth point (that .NET is not a successful development platform) is utter nonsense.

A huge part of all of this has to do with OSS itself.  Just as diversity is supposedly a good thing in and of itself, so is OSS (which is what drives people like Rob to suggest adopting an Open Source program, which is a fine suggestion for people who are interested in that sort of thing).  The problem is that there really isn’t any reason in the abstract to believe it, not necessarily anyway.  Simply looking at the practical results, having open source alternatives has sometimes been a major positive, sometimes not so much (contrast the existence of Linux and what it has done to push not only Microsoft but other companies as well with the existence of Star/Open Office and what is has meant to spreadsheets, namely nothing).

.NET is absolutely a successful development platform.  There is simply no believable response otherwise,  and since Ian has never, in my readings of his blog posts,  been one to utter unbelievable responses, I have to believe he meant to say something slightly different.  Maybe that there are aspects of Ruby (everybody’s current love) and Java and their communities that he thinks would make .NET more successful.  Even that is questionable.

But the larger question is why having a diverse ecosystem is so important that Microsoft itself should (in some vague sense of ‘should’) promote it.  I think how one feels about this depends largely on how one defines “the community” and, ultimately, how one feels about OSS in general, in a couple of different ways.

If you come from a perspective that OSS efforts that are not lead/driven by Microsoft have an intrinsic value, then, obviously this diversity is important.  This is why I don’t think there has been much complaint about Microsoft’s involvement with JQuery, because Microsoft is just one contributor (albeit a large one).  With NuPack, at least initially, I think the suspicion is that Microsoft, to all intent and purposes, is and will be the only main contributor, and this suspicion is, I think, largely based on Microsoft’s historical attitude towards OSS.  Surely(don’t call me “Shirley”), they simply want to crowd out other alternatives.  Why can’t they, for instance (as one commenter on some blog somewhere suggested) promote NHibernate instead of funneling all those resources into EF, or why couldn’t they have promoted Monorail instead of creating ASP.NET MVC, etc. etc. etc.

One can see a wish/hope in this perspective that Microsoft “pull an IBM.”  Though it is hardly the only reason, or perhaps not even the main reason, why Linux took off in the corporate environment, IBM’s embrace of Linux certainly didn’t hurt, to put it mildly. 

And if one thinks of “the community” from this perspective, then NuPack can look like a step back.

But that isn’t really the .NET community.  The actual .NET community includes the vast majority of people who are fine with the monoculture, for one reason or another.  The innovation that is occurring throughout .NET in non-Microsoft lead projects either isn’t relevant or off-limits for a variety of reasons.  Having worked at two of the “too big to fail” financial institutions named in a patent lawsuit recently, I understand that in a least one of them, the legal fallout was that the use of OSS has to be justified and officially approved.  I strongly dislike not being able to use NHibernate, as it isn’t approved.  Everybody knows that Enterprise Library sucks as an alternative (and while EFv4 actually isn’t all that bad, .NET 4.0 is still in various stages of corporate adoption).  But, guess what?  Microsoft can provide patent indemnification if you use their tools.  And, guess what?  Large corporations, especially of the “too big to fail” financial variety, are the defendants in these lawsuits.  From a business perspective, they (rightfully) don’t give a rat’s ass as to the technical merits of NHibernate vs Enterprise Library vs. EF or of Monorail vs. ASP.NET MVC or even of Nu vs. Nupack.  


So, to reformulate my original question, should we promote a diverse ecosystem within .NET?  It depends.  There are those who have accepted the idea that OSS is intrinsically valuable, and so will always find Microsoft’s efforts lacking.  There are those who have accepted the idea that OSS is intrinsically bad.  One can make a reasonable argument that this was Microsoft’s position (or at least Ballmer’s position) up until a few years ago.  I think that people like Scott Guthrie, Phil Haack, and Scott Hanselman live in a space where they can promote OSS within Microsoft, but that space has its limits.

I think that IBM was more easily able to embrace Linux because they are, not only but in large part, a hardware company.   Microsoft (besides their keyboard and mouse stuff) is a software company.  Unless and until they decide to open source Windows and/or Office itself (which I think we can agree will be never), there will always be limitations to their embrace of OSS.  This means that the dream/ideal that Microsoft will take an active role in promoting alternative ‘community’ solutions will probably always fall short in the eyes of those who view OSS as intrinsically valuable.  I don’t see how that will change.

From an individual perspective, I think that if you feel OSS is intrinsically valuable, taking Rob’s advice concerning adopting a particular OSS project is probably something you should consider.   There is always the risk that Microsoft will enter the space of that project, but there are risks in everything.

Diverse.NET?  Sure.  Within limits.

posted on Monday, October 18, 2010 6:12 PM Print
No comments posted yet.

Post Comment

Title *
Name *
Comment *  
Please add 8 and 4 and type the answer here: