Microsoft Open Sources .NET?
Written by Mike James   
Thursday, 13 November 2014

It looks as if Microsoft just unexpectedly gave away the farm. Of course, this being Microsoft it did no such thing. What has Microsoft just done?

Microsoft has recently seen the sense of open source, but mainly where there is a big payoff to it. You can't blame it for this attitude, after all it isn't a charity.

The recently formed .NET foundation currently looks after the C# and Visual Basic ("Roslyn") compilers, Visual F# tools, ASP.NET 5 and Entity Framework. Now you can add the .NET Core Framework to the list. 

This effectively means that what looks like a very large chunk of .NET is now open source. 

In theory you now have all the open source code you need to run a .NET program. 

Of course the big problem with most Microsoft announcements is working out what isn't included and exactly what the deal is.

It seems that we are getting the CLR, JIT, Framework, Garbage Collector and the core .NET base class libraries. At the moment, the CLR and JIT code isn't actually available so we will have to wait and see how useful it is. 

It all sounds great, but it is slightly more complicated.

A large chunk, but not all, of the original .NET  framework is available, but as "read-only". As Miguel de Icaza comments:

"Microsoft has stated that they do not currently plan on taking patches back or engaging into a full open source community style development of this code base, as the requirements for backwards compatibility on Windows are very high."

So not really open source as we know it. 

True you can still create a fork and develop it further but it is clear that as far as Microsoft is concerned this is where it all stops.

Currently there isn't that much and there certainly isn't WinForms, although this seems to be promised for the future. What we have is a small subset of the .NET Reference Source, which is provided to help debug programs.

Confusingly something called .NET Core is also being open sourced. Miguel de Icaza explains:

"The .NET Core is a redesigned version of .NET that is based on the simplified version of the class libraries as well as a design that allows for .NET to be incorporated into applications."

At the moment all there is of the core are a few of the newer libraries: 

  • Immutable Collections. A set of collection types that make it easy to keep mutable state under control without sacrificing performance or memory footprint. 

  • ECMA-335 Metadata Reader. This is a highly tuned low-level metadata reader that allows Roslyn to parse assemblies.

  • SIMD enabled vector types. A set of basic vector types that leverage single instruction, multiple data (SIMD) CPU instructions. 

  • XML. This includes the DOM APIs such as the XDocument and XmlDocument types, XLinq as well the corresponding XPath extension methods.

So not really a lot at the moment, virtually nothing in fact, but more is promised. 

It seems that for this version of the framework Microsoft is letting us do the work. Again according to Miguel de Icaza it is:

"... an effort where Microsoft will fully engage with the community to evolve, develop and improve the class libraries."

It seems that this new framework will be cross platform and the targets are Linux, MacOS, iOs and Android. 

This diagram is supposed to help you understand what .NET Core is but there are aspects of it that are simply confusing:



The original framework is being used as a reference for the new cross platform one and Microsoft expects help in creating it. No doubt Microsoft will also put some effort in and to encourage the open source community it has promised not to use any of its patents to stop the use of the new framework. 

In particular, Microsoft would like the Mono community to join in.

Of course, Mono is already an open source .NET that runs under Linux and other operating systems created with no help from Microsoft at all. Miguel de Icaza's Xamarin has taken it to iOS and Android - again with little help from Microsoft.

So where does all of this leave Mono and Xamarin?

This is difficult to say. Miguel de Icaza is claiming that the new code will be incorporated into Mono and some Mono will find its way into .NET Core - why? Surely the market will support only a single .NET implementation?

If I were Miguel de Icaza, or the Mono community, I think I would be very angry at what Microsoft has just done. 

Then there are the parts of .NET that are not being open sourced. 

The two most prominent omissions are Silverlight and WPF. 

Yes, no WPF. 

The reason is that Microsoft considers WPF to be part of the operating system. There is more to say about WPF - WPF Lives! -  but the key fact is that it is still closed source.

The fact that Silverlight wasn't even mentioned is really no surprise. Microsoft still wants Silverlight dead for reasons that have to do with protecting its own alternative systems. 

The bottom line is that Microsoft has open sourced code that was already available as open source as Mono. The only difference is that this is the real original Microsoft code. 

The new .NET Core is to be a cross platform open source project and will eventually represent the future of .NET - if we all get behind it and pull that is. 

This is open source as only Microsoft can do it. 


Google Releases Home APIs

Google has announced a set of Home APIs and a Home runtime that can be used to access over 600M devices, Google's hubs and Matter infrastructure, along with an automation engine.

GitHub Actions Adds Arm-Hosted Runners

GitHub has added Arm-based Linux and Windows runners for GitHub Actions. The developers say the addition provides power, performance and sustainability improvements for all your GitHub Actions jobs.

More News


C book



or email your comment to:

Last Updated ( Wednesday, 06 October 2021 )