Interview Today Microsoft announced that the .NET core framework, which powers web applications using the ASP.NET libraries, will be open source on Windows, Linux and Mac OS X. But what are the implications for Mono, the existing open source project which already provides .NET support on Linux and the Mac?
The Reg spoke to Miguel de Icaza, creator of Mono and co-founder of Xamarin, which provides tools for coding iOS and Android applications with C#, building on Mono technology.
Xamarin is a close partner of Microsoft, and De Icaza is one of three directors of the .NET Foundation, and the only director that does not work for Microsoft. The .NET Foundation was announced by Microsoft at its Build conference earlier this year, to host and support open source .NET projects.
“They are open sourcing .NET in a couple of stages,” says De Icaza. “There is full .NET, and the .NET Core, which is this new rethought and more nimble version.
“The full .NET Framework is bundled with Windows so it has a fairly high set of requirements for backwards compatibility. So they’re not going to be taking patches or engaging the community on that one. We will use this to improve Mono, but it’s a read-only approach. There’s a lot of code, features like WCF (Windows Communication Foundation) that we never implemented, so there’s going to be things that Mono can take.
“The second thing is .NET Core. This is where their focus is. In Core, .NET is no longer going to be a system service. Instead it’s going to be a piece of technology that is bundled with your application in the form of Nugets [packages installed by developers]. When you deploy an app with .NET core, the web site will contain a copy of the virtual machine and a copy of every library that it needs.
“The idea behind this is that they can make sweeping changes to the technology, fix issues or change behaviours, without breaking other applications that are running on the system.
“This is the version where they will engage in a full community effort. They will actually have public discussions about it, they’ll design it in public, they’ll take patches form the public and so on. The whole thing is going to be hosted by the .NET Foundation, and we’ve agreed that all of the technical discussions will be in the .NET Foundation Forum.”
“Mono will implement the equivalent system, we are going to call that Mono Core, so you get to choose whether you use the Mono VM or the upcoming Microsoft VM that they will also open source.”
They seem to understand what the objective is: get .NET on the Mac, get more users of .NET, release .NET from the Windows chains...
Why is Microsoft doing its own CLR for Linux and Mac rather than adopting the existing Mono runtime? “There are pieces of their VM that are a little bit more advanced than ours, and there are pieces where Mono is more advanced than theirs,” says De Icaza. “It certainly does the same things that Mono has historically done, and our intention is to contribute to that VM, change it so that it runs better on Linux than it does on Windows," laughs De Icaza.
“I do not know yet whether we will take chunks of the Microsoft VM for Mono – that is still up in the air. We can’t do that for iOS because iOS is a very different compilation technology and we don’t know yet what the memory profile of this VM is. But we’ll see, when the VM is ready. They’re not ready to share that code yet.”
Microsoft's relationship with open-sourcers
Your correspondent asked De Icaza whether Microsoft is really able to engage with the open source community.
"For example, Roslyn [the codename for the next generation C# compiler] – I don’t think the Roslyn team has been as active at working with the community. It seems though that everyone I talk to in the .NET group is very committed to do doing the right thing from an open source perspective. They seem to understand what the objective is: get .NET on the Mac, get more users of .NET, release .NET from the Windows chains. I think this team is ready to do open source the right way.”
Now that Microsoft is doing its own cross-platform VM, and introducing cross-platform C++ compilation for iOS and Android, is he worried that the company is encroaching on Xamarin’s territory?
“I am not too worried right now,” he says. “Maybe I’ll be more worried in a couple of years, but the value that we give our developers today is not only the .NET piece. The .NET Runtime plays a role, but it’s a little like all those other languages. There is a Java thing that runs on iOS, there’s Python Android and iOS, there’s Ruby on both platforms, there’s Lisp, there’s Closure. What makes our approach successful is that we provide entire tooling, a single experience for building, deploying, and design.”
Microsoft is emphasising cooperating with Mono and Xamarin, despite introducing its own runtimes for Linux and Mac.
Xamarin also has its own C# IDE for the Mac and Linux, called Xamarin Studio, whereas Microsoft’s tools run only on Windows. The Windows-only approach is a disadvantage now that so many developers use Macs.
“I’m telling everybody at Microsoft: 'Hey guys, you should support Xamarin Studio with ASP.NET',” says De Icaza. “We have some ASP.NET support in Xamarin Studio but it has not been the focus for us. Our focus is mobile.