Microsoft, .NET and Open Source

I recently returned from my first MVP summit and there was one somewhat surprising theme that was repeated in a number of the sessions I attended.

This was one big take away for me. The folks at Microsoft really are committed to open source. I’m not talking about the old MSPL type of open source you might have expected from Microsoft a few years ago. I’m talking about full on open source. Here are a few notable projects that Microsoft has open sourced under the Apache 2.0 license:

What does this mean?

It means you can (and should) contribute. These projects are fully open source and are actively accepting pull requests. Yes…YOU can contribute to the next release of Entity Framework or ASP.NET MVC. I look at Entity Framework as a great example of openness coming from the developer tools group at Microsoft. Meeting notes, design notes, thoughts on future direction, open issues, and discussion points are all posed on the Entity Framework CodePlex site. They even have a list of issues tagged as ‘UpForGrabs’, making it very easy for community members (that’s us!) to contribute.

Microsoft is also shipping its products using existing open source software. One great example that was referenced more than a few times at the summit is JSON.NET (by James Newton-King). Microsoft had their own JSON library, but JSON.NET was better. The either had to put resources towards improving their own JSON library, or make use of the existing framework. They chose wisely and went with the open source JSON.NET. ASP.NET MVC 4 now ships with JSON.NET, and that is awesome. It’s awesome for everyone using MVC and it’s awesome for everyone involved in the open source community.

It gets even better. If Microsoft ships a product that includes an open source library, Microsoft is committed to supporting that open source library. That means if you are using MVC 4 and you have having trouble with jQuery or JSON.NET, you can call Microsoft support for help! There is an important distinction to make here though. For each of the open source project at Microsoft, there is an open source version and there is an officially packaged and shipped Microsoft version that is built from the open source version. Only the Microsoft version is supported (and signed and all that other stuff).

What should you do?

You should contribute! Either start your own project, contribute to an existing community project, or contribute to a Microsoft project. The support that Microsoft is giving the open source community is very encouraging and it makes me want to be a bigger part of that community. I am now actively browsing through the Entity Framework site to see if there is any way I can contribute. It’s a great time to get involved in the .NET open source community! I have also started contributing to a small open source project called AngelaSmith.

What to expect from Microsoft

Don’t expect to see an open source version of Visual Studio or Windows or Office, but I think we will continue to see more openness from the developer groups at Microsoft (I’m talking about frameworks and libraries, not products like Visual Studio). This openness will come in the form of making more Microsoft libraries open source, as well is a continuing to support community driven open source projects.