Two years ago we dedicated an entire issue of CODE Magazine to the concept of open source software. In my editorial titled “Open Source Software” http://www.code-magazine.com/Article.aspx?quickid=0906011, I gave an overview of the landscape of Open Source Software (OSS) as it pertained to the .NET developer. I am amazed how much things have changed in such a just a few short years.
Open source has come to the Microsoft ecosystem in full force. For a company that only ten years ago called open source software a cancer (http://en.wikipedia.org/wiki/Steve_Ballmer#Free_and_open_source_software) the sea change is remarkable.
Last month was full of news on the Microsoft open source news front. We learned that Microsoft is one of the top 20 committers to the Linux kernel (http://www.linuxfoundation.org/news-media/announcements/2012/04/linux-foundation-releases-annual-linux-development-report).
Not soon after the news of Microsoft's commitment to the Linux kernel came the bombshell: Microsoft released ASP.NET MVC, Web API and the Razor view engine under an open source license. The Apache 2.0 license to be exact! As Bob Dylan says: "The times they are a-changin'."
But wait, it gets better. Microsoft is also starting a new wholly owned subsidiary called "Microsoft Open Technologies, Inc. (http://blogs.technet.com/b/port25/archive/2012/04/12/announcing-one-more-way-microsoft-will-engage-with-the-open-source-and-standards-communities.aspx) This organization will work with standards initiatives and open source projects. The press release is like a who's who of the open source ecosystem: Linux, Hadoop, MongoDB, PhoneGap, etc. The benefit of Microsoft supporting these projects will be felt around the world. I know a lot of my clients will look more favorably on adopting open source software now that Microsoft has demonstrated their commitment.
Why is Microsoft Making these Open Source Moves?
A number of questions arise from these new developments. I will try and answer a few of them here:
Wasn't MVC already OSS?
Yes and no. ASP.NET MVC was released under the MS-PL license. This license gave you access to the code, permission to fork it and create your own derivative but it was missing a critical characteristic of more permissive licenses. Microsoft didn't allow outsiders to commit patches to the core source code. With Microsoft's announcement in March 2012, this is no longer true
. Microsoft now takes submissions to the core source code. As a matter of fact, they already have and it didn't take long for it to happen.
What does this announcement really mean?
You have access to the code and you can create your own fork of the code and make changes to that. When you make changes you can then submit them to the team for inclusion into the mainline product.
Now that the code is under Apache, what happens next?
I am highly interested to see how this process progresses. I think the development community will collectively turn an important corner when Microsoft adds non-Microsoft employees to the “core” team. What does this mean? Most OSS projects have “core” teams that are the final gatekeepers to accepting changes into the mainline source code tree. Currently there are no non-Microsoft employees with this ability. I don't expect this to happen by fiat. Adoption into the core team will happen organically, but I can see a person that frequently contributes patches will
eventually be added to the team.
How do you participate?
The Microsoft development team that maintains these projects has developed a good set of guidelines for developers to follow when submitting patches. A lot of the ideas for getting started are pretty simple: add a unit test, fix a defect, search for a TODO comment in the source code. Click over to this Web page for guidelines that can help you get started as a contributor: http://aspnetwebstack.codeplex.com/wikipage?title=Contributing&referringTitle=Home.
With Great Power Comes Great Responsibility
I recently had an interesting conversation about feature requests for ASP.NET MVC. This discussion occurred shortly after Microsoft's decision to open source big parts of the ASP.NET stack. The biggest takeaway I had is that software developers and consumers of Microsoft products need to change our world view when it comes to new features. In the case of ASP.NET MVC, Web API and the Razor view engine, the adoption of new features now lies partially in the hands of the community. Want a new template? Just do it! Want a new overload for a function? Just do it! Want to unseal all the classes: Just do it! (Please someone, do it!) The responsibility for adding features no longer rests solely in the hands of Microsoft. It's up to us as a community to make these happen.