I’m a bit confused about the future of mono, now that .NET Core exists. Are both projects going to continue separately? I heard the .NET runtime was better than mono…
Okay, so basically everything is a mess from a naming perspective (which I’ll explain in a second), but the quick version is we still care about Mono.
Mono used to be two things: a VM and an implementation of the .NET Standard. .NET Core is also a VM and an implementation of .NET Standard.
Recently, Mono has begun ditching their libraries and instead using Microsoft’s directly. This actually began before .NET Core/.NET Standard was a thing, as Microsoft began open-sourcing more and more central .NET libraries, and it’s nowhere near done (Mono still has many of its own libraries that don’t exist for Microsoft VMs/has its own implementations of some libraries), but it seems clear that Mono is skating towards using Microsoft’s assemblies wherever possible.
Despite that work, Mono still has its own (very different) VM, and shows no sign of merging with .NET Core’s. This specifically means Mono can do three things that .NET Core cannot (yet): it can do ahead-of-time compilation so no JIT is required; it can target ARM; and, largely as a result of those two facts, it can run on Android and iOS. This means that, at least for now, Mono is still super-relevant due to its VM, if nothing else–and especially since having a concurrent GC is incredibly helpful to making a consumer application feel responsive, and because Mono is heavily used on mobile, I think this improvement will be incredibly welcome.
Long-term, I don’t see a huge future for Mono. .NET Core is playing with statically compiled executables (called .NET Native), and while it’s absolutely not ready for real use yet, I expect it to get there eventually. It’s only a matter of time before it works, they add ARM support, and they turn on the ability to target iOS and Android. But I still suspect Mono will be the go-to CLR on mobile for awhile.
This made even more confusing by the fact that the mono team adopted several libraries that were open sourced by MS. The line between MS’s and mono are pretty blurry these days.