“Pushing that button was one of the more impactful clicks of my career,” says Microsoft’s C# lead architect Anders Hejlsberg. The click in question was made on stage at Microsoft’s Build conference in April, and its effect was to publish the .NET Compiler platform, codenamed Roslyn, as open source under the Apache 2.0 licence.
Roslyn is both the next generation compiler for C# and Visual Basic, and a set of APIs which enable deep integration with developer tools (like Visual Studio) for more powerful code recognition and refactoring.
Since Roslyn is the compiler for the forthcoming C# 6.0, does that mean C# itself is now an open source language? “Yes, absolutely,” says Hejlsberg.
C# 6.0 is expected in Visual Studio 2015, just released to the community as a technology preview.
This is sorta-open-source, of course. The language is open, but the Common Language Runtime (CLR) – the engine that runs the output – is not. An open-source C# 6.0 does not mean that Microsoft will be ceding control, since Microsoft approves everything that is committed, but anyone could fork the project and run it on Mono CLR (which is open source and works across platforms).
The C# chief insists that public contributions will be considered.
“We will apply the same metrics to the community that we apply to ourselves as we check in. We will treat community members like team members. People may create other forks, who knows what they will do? This is an Apache 2.0 licence so it allows you to do whatever you will, as long as you give attribution," he said.
“We feel that ultimately [outside contributions] will lead to a better outcome for C# and .NET, which in turn is a better outcome for Microsoft. I expect we’ll see a lot more community engagement, I think this will remove a lot of the FUD [Fear, Uncertainty and Doubt] that has been around over intellectual property rights or patents or whatever. It’s very clear what kind of licence this is, it’s a very permissive licence.”
Why the change of heart?
These statements will be seen by many as being rich coming from a Microsoftie. It is Redmond that is held responsible by many as being the originator of FUD on open source and Linux – particularly on licensing, patents, intellectual property and cost of ownership.
In the past, while Microsoft has formed partnerships with its one hand it has rattled the sabre with its other.
What is the reason for Microsoft’s new-found love for open source in its languages and frameworks? It may be a reaction to the decline of the Windows client, along with the “any device” strategy embraced by chief executive Satya Nadella. If there is no hope of keeping developers tied to Windows, the next best thing is to keep them hooked to C# and to frameworks that steer you toward Microsoft servers and cloud services. Open source C# makes it easier for companies like cross-platform specialist Xamarin to implement versions that run on other platforms.
Mono to adopt Microsoft's baby Roslyn
One of the consequences is that implementations of .NET and C# on other platforms will be more closely aligned with Microsoft’s release. GNOME co-founder Miguel de Icaza started the Mono project for C# on Linux and the Mac, and is now at Xamarin, which creates tools for compiling C# apps for iOS and Android. He appeared on stage with Hejlsberg at Build and will be adopting "Roslyn".
De Icaza and Xamarin are building a huge following, a fact evidenced by their upgrading to main-stage presenter at Microsoft's Build.
“They have already got it running, and it is my understanding that they will switch and make Roslyn their IDE engine, the thing that powers IntelliSense, refactoring and so forth,” says Hejlsberg.
Will C# now be identical on all these platforms? “The compiled result you are going to get will be identical. Mono is a different VM than the .NET VM, and Linux is a different operating system than Windows, and ultimately there will be differences, but they’re going to be minute,” Hejlsberg says.
Microsoft has not open-sourced the Common Language Runtime on which .NET code depends. However: “Mono’s VM, or Mono’s CLR, is open source, so there is a pure open-source stack now for the whole thing,” Hejlsberg says.
What is in C# 6.0? “I wouldn’t say that there are any huge features in C# 6.0. The team’s primary focus has been Roslyn,” says Hejlsberg.
The Roslyn compiler replaces the old compiler that was written in C++. “There is likely more than a billion lines of C# code out there; we want to be able to compile all of it,” he says.
However, there are new features, and you can find what is proposed on the Roslyn site. “One of the things we are considering for C# 6.0 is called primary constructors, the ability to parameterise your classes, and those become your constructor arguments, that allows you to write more succinct code,” says the Microsoft man.