Open source .NET: A progress report

DevToolsGuy / Tuesday, February 24, 2015

Microsoft surprised both their friends and rivals when they announced they would open source .NET Core in November 2014. Although now widely available on GitHub, it’s worth noting that not everything is open source just yet and is still work in progress.

However, before we get ahead of ourselves, we should ask the question, just what is .NET Core? To be clear, it is not the entire .NET Framework. Microsoft decided to rebuild their .NET Framework gradually as an open source project and has named that .NET Core. The probable reason is that the code for their .NET Framework is not suitable to release as open source at this stage.

.NET Core is a modular development stack that is the foundation of all future .NET platforms. However, it’s not a replacement for the .NET Framework; it offers only a subset of functionality currently available in the .NET Framework. Developers should therefore bear in mind that when building large enterprise applications for example, the .NET Framework is still the way to go.

A follow up blog post here explains in detail .NET Core and its relationship with the .NET Framework. In Visual Studio 2015, .NET Core will be a pure subset of the .NET Framework. Anything available in .NET Core is therefore also available in the .NET Framework. However, as .NET Core is open source, it will most likely evolve quicker than the .NET Framework. It might happen that .NET Core will have features that are not available in the .NET Framework.

How to contribute to .NET Core?

You may well be thinking about contributing to .NET Core, indeed Microsoft is actively encouraging users to do so; one reason for making .NET Core open source was to benefit from the contribution of the community. However, just as with any major open source project, not all contributions can be accepted. There is still a road map and not every contribution will fit in this road map.

This post in the Visual Studio magazine outlines five excellent tips for those planning on contributing to .NET Core. It includes important links to external websites, for example to Microsoft’s GitHub repository and the .NET contribution guidelines.

The first and most important rule for contributions is: "unless it is a trivial change, make sure that there is a corresponding issue for your change first. If there is none, create one”. An issue is very important, so the reason behind a change can be recorded and, more importantly, it gives an insight as to how popular an issue is - it doesn’t make sense to introduce a breaking change to fix an issue nobody cares about.

The .NET Foundation - some background

As there are many open source .NET projects on the web, the .NET Foundation organization was created. It provides a developer forum, a test bed, and a practice ground for the very rapidly growing community that contributes to open source .NET projects like .NET Core. Another great benefit is that it allows for direct access to .NET project teams at Microsoft and across the community.

Overall the idea of the .NET Foundation is to streamline the contribution to open source .NET projects and to improve the quality of the processes and developed products. Read this “Get involved” page for more information or jump straight to the forums.

Roslyn: the next compiler

As part of the introduction of open source .NET Core, a new compiler was presented: The Roslyn compiler, which is also available on GitHub. The idea of making the compiler open source is to allow contributions from non-Windows compilers. Creating and running .NET projects always previously required a Windows based operating system. With the compiler becoming open source, this is no longer a limitation. It is now even possible to create a .NET application in Linux, written in vi, and compiled from the Linux terminal!

Another great benefit is the option for developers to create custom components for the compiler. It’s easier to investigate the compiler and create custom components when it’s open source. Take a look at some of the samples and walkthroughs.

What’s next?

Microsoft has clearly changed their strategy and one of the results of this shift is the open sourcing of .NET Core and the Roslyn compiler. This is quite different from a couple of years ago, where everything was “Microsoft only” and closed source. For developers this is particularly interesting, as it’s now possible to contribute to the very popular .NET Core.

And, what’s next? Will Microsoft release more (or even all) of their code as open source project? Will Windows be made open source? Many voices have been saying for some time that Internet Explorer should be made open source and it’s interesting to see if there will be an open source element to the new Spartan browser too. We wait and see.