Rob Conery has an interesting piece about adopting an open source project to encourage more OSS development in the .NET space. It is something we need. But I have one slight issue to pick with Rob’s comments. The .NET community didn’t wait 7 years for MS to implement it for us. Seb went out there and wrote OpenWrap. What happened? Well it looks like outside the London .NET community folks were pretty much unaware of it it. Seb tried hard to publicize it, there is an interview about it on InfoQ back in May. We hosted a session on it at LDNUG, and JetBrains sponsored an evening with a presentation at DevCon London. But it just never seemed to get the wider-audience it needed to break out of those closed circles. Many people looked at NuProj as well. But even that project never seem to cross out of a small circle. (EDIT: And before that was Horn – thanks Paul – and even CoApp)
But MS entering the fray with nupack has practically obliterated a ‘from the community’ solution and created the 300ibs gorilla of an MS sponsored one. That may not be the ‘fault’ of MS, their intent may be entirely good, but the road to hell is often paved with good intentions. By stepping in MS may have felt it was helping the community to resolve the issue. All it did was simply remove the ability of the community to solve the issue. I understand that nupack is set up as an OSS project, but by ‘doing it for us’ they removed the community’s responsibility to solve the problem. So they have not aided the growth of community that addresses these issues. One of the hardest lessons to learn when leading or mentoring is to let others ‘do it for themselves’ even if you could do it faster and sooner. Unless you give others the chance to try (and fail) you won’t get growth and you will always be doing it yourself.
The stark reality is this – the package management issue could have been resolved without MS help through OpenWrap (or NuProj). I don’t see significant technical advantage from NuPack over OpenWrap (it might win some adoption through a UI). I don’t know NuProj well enough to comment.
That would have given the opportunity for the community to understand it could solve its problems. If MS had publicized those OSS solutions with ASP.NET MVC 3 then it would have also given enormous publicity to community efforts to solve its own problems.
I don’t, before anyone suggests that, want to denigrate the effort put in by the team working on NuPack. I just wish that it did not come with the wieght of being the MS solution to this issue.
What MS could have done was to call for folks to tell them about OSS package managers, worked with those projects to define some kind of open package standard, and then communicated to the wider development community what the standard was and who implemented it. For sure, if the community failed it might have helped to kickstart some projects with sample code, but by creating an MS solution, they pushed aside existing community efforts. I would like to think that the community gets behind the best package manager and that we chose between OpenWrap, NuPack or whatever based on what works
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. A monoculture is no more positive for MS than others in this regard. I also think that the problem is sufficient that it does not only impact MS, but a lot of commercial outfits in the .NET space. I am sure there are shops that don’t use R# or CodeRush, because its not MS. There are plenty of commercial frameworks and libraries that would benefit from a widening of people’s purchasing choices. (And sure I would like a lot of tools and frameworks that are commercial to go open source and free for private use like RavenDB or NServiceBUS and licensed for commercial, because I believe it is easier to make choices around something that you can try before buying and support if the vendor fails, but diversity is diversity regardless of the model).
Somehow we need to encourage more diversity in the .NET space, in tools, languages, people. I understand that it’s a big challenge. We need IronRuby and IronPython on the platform for that diversity. We need folks to understand that they could look Boo too. We need folks to understand there is not just ASP.NET MVC but OpenRasta, Monorail, and FubuMVC. We need folks to know not just about Entity Framework and LINQ-To-SQL, but also NHibernate, Subsonic, or even XPO. It’s not about favoritism but creating an ecosystem in which different solutions can compete.
If Alt.Net was yesterday’s war cry maybe Diverse.NET is tomorrow’s.
The tragedy is that only MS probably has the reach to the .NET community to encourage engagement with an ecosystem over a monoculture. And as MS own the monoculture, can they be convinced it lies in their best interest to support it?