Microsoft recently made the fantastic announcement that ASP.NET MVC, Web Api and ASP.NET Web Pages are now open sourced and will allow the community to push changes. Scott Guthrie made the announcement and you can read all the details here. It is great news that the ASP.NET team have open sourced the projects, however I don't think this is the start of something that Microsoft will follow. Indeed, elsewhere in the business they are shunning the open source community. It seems that there are two sides to Microsoft, the open source and the closed side; I wonder which one will win?
A Brief History of Microsoft and Open Source
Some teams within Microsoft (particularly the ASP.NET team) have embraced the open source community in recent years. It also started with the release of MVC 1.0 that was given an open source licence and was being hosted on CodePlex. I think at the time the Project Manager on the MVC team - Phil Haack, pushed hard for the source code to be released to the community.
From there the ASP.NET team started including open source libraries like jQuery and Modernizr as part of the default project templates. The ASP.NET team also switched development from its own Ajax library to use jQuery as default. Back in 2008 Microsoft even announced that they were going to contribute to jQuery (Scott Guthrie's announcement.
More recently Microsoft have started hosting some libraries on GitHub in particular the SDK's for Windows Azure. A few other packages are hosted on here, not all of them are official Microsoft libraries but come from people working on the ASP.NET team such as SignalR and Knockout.
So Where's the Battle?
From the sounds of things, Microsoft are embracing the open source community with open arms, but in reality Microsoft as a whole are not, it's only the ASP.NET team that is truly embracing it (the Windows Azure team is not part of the ASP.NET team being run by Scott Guthrie). Elsewhere the rest of the company is ignoring the hard work of the community and doesn’t seem to be concerned.
In my modest opinion, this is a huge mistake that Microsoft has made. Personally I think Microsoft should have extended the jQuery library and added the extra functionality they need, rather than recreate jQuery. The community knows jQuery, they know the syntax, they know how to use it, and there are already hundreds of libraries available that the developer can use to improve their application. So why create a new library for the developer to learn when they are already fluent in one?
It should be noted that jQuery can be used in Metro-style apps but this negates all the work the Microsoft team have done in creating their own library. For me, Microsoft have wasted time and money in creating their own specific library rather than extending what the community knows.
This is where the battle in Microsoft is being waged - for Microsoft to expand and attract new developers, and for people to be genuinely interested in developing on their platform, they need to engage the community that is so rich and vibrant. The need to accept open source projects and let them grow naturally rather than trying to force a new library on the community that people don't really want. It's no good just the ASP.NET team embracing open source, the whole of Microsoft needs to as well.