by Ashic Mahtab

Microsoft and Open Source Software (OSS) have not always seen eye to eye. They have even been portrayed as foes – adversaries on two sides of an intellectual war. However, things have been changing in recent years. Groups in Microsoft have been gradually embracing – even championing OSS. I have noticed significant shifts in some of the technologies I follow.

In April, 2009 - just a month after ASP.NET MVC 1.0 went RTW - the source code for it was released under the Microsoft Public License (Ms-PL). This meant developers gained access to the source code of the framework. Microsoft also shifted focus from its client side ASP.NET AJAX library to the more popular open source library jQuery. It dedicated developers to create templating features for jQuery as well as adding globalization support. ASP.NET MVC started shipping with OSS libraries like jQuery, jQuery UI, jQuery Mobile, jQuery Validation, Modernizr.js, etc. Microsoft’s package management system NuGet is also open source. Last year, the Azure SDK was released under the Apache 2.0 open source license. The Patterns and Practices team are preparing guidance on CQRS – which is also open source. Microsoft has also set up Codeplex, added Mercurial and Git support to it, and established the Outercurve Foundation through which it supports many open source initiatives.

Keeping in line with these changes, Scott Guthrie recently announced the release of ASP.NET MVC, Web API and Razor under the Apache 2.0 license. This means you can now browse, sync and build the source tree of ASP.NET MVC, Web API, and Razor on the http://aspnetwebstack.codeplex.com website.

The Git repository on the site is the live RC milestone development tree that the team has been working on the last several weeks, and the tree contains both the runtime sources + tests, and is buildable and testable by anyone. Because the binaries produced are bin-deployable, this allows you to compile your own builds and try product updates out as soon as they are checked-in.

You can also now contribute directly to the development of the products by reviewing and sending feedback on code checkins, submitting bugs and helping us verify fixes as they are checked in, suggesting and giving feedback on new features as they are implemented, as well as by submitting code fixes or code contributions of your own. Note that all code submissions will be rigorously reviewed and tested by the ASP.NET MVC Team, and only those that meet an extremely high bar for both quality and design/roadmap appropriateness will be merged into the source.

The big change here is the Apache 2.0 license, and the hosting of the project in Git. Developers can now fork, modify and even send pull requests to the same projects that the official team develops on. There is no other hidden, Microsoft only TFS repository somewhere – this is what drives the next release. You can actually see the issues in the backlog; you can vote on them, you can submit code to fix them. If there is a certain feature you or your company needs that is not on the roadmap, you can easily create a fork, modify, build and use those binaries instead. And all of this is hosted on arguably the most collaborative version control system in existence today.

There may be concerns that this could be a sign that Microsoft is abandoning these projects and leaving it up to the community to maintain them. After all, this has been known to happen. This concern is quite misplaced – the ASP.NET team is not being dismantled – rather there are currently more Microsoft developers on the ASP.NET team than ever before. The products will continue to be supported and go through the same rigorous quality control. They will ship just as they do today – both as a standalone package as well as part of Visual Studio. The official Microsoft ASP.NET team will continue working on them. The only differences are that they will do this development in a publicly visible Codeplex repository and that they will accept code contributions from the community. Yes, you can actually submit code to be included in the next versions of these products and you can start today. This is not an attempt to reduce resources allocated to ASP.NET – rather a way of enabling more community feedback, flexibility, transparency, and collaboration to make ASP.NET better, quicker.

Microsoft’s journey towards OSS is still in its early days. And there are grounds to be sceptical. If you are, then consider this: in 2001, Steve Ballmer famously said the words “Linux is a cancer”. Just over a decade later, Microsoft is the 17th ranked contributor to Linux. Yes, there may be bumps along the way but The Gu’s announcement can only bring good things – both for ASP.NET and the .NET community.

ashicAshic Mahtab
Moderator and "All Star" of the official ASP.NET community