Microsoft's Midori: The M# connection

There've been a couple of recent developments of note regarding Microsoft's 'Midori' skunkworks operating system project.
Written by Mary Jo Foley, Senior Contributing Editor

Over the past couple of weeks, there were two interesting developments around Microsoft's "Midori" operating system project.

"X" marks the targeted M# spot, according to this illustration by Midori team member Joe Duffy.

First, I heard from two of my contacts that Midori -- Microsoft's non-Windows-based operating-system project -- moved into the Unified Operating System group under Executive Vice President Terry Myerson. (Before that, it was an incubation project, without a potential commercialization home inside the company.)

Secondly, Microsoft officials seemingly gave the green light to some of the Midori team to go public with more details about the project. Specifically, Joe Duffy, one of the Midori team members, blogged on December 27 about the language used to develop Midori, which the Midori team built alongside the OS itself.

That language, codenamed "M#," ("M Sharp")according to several different sources of mine, is an extension of Microsoft's C# language. According to a self-identified former Softie on a Reddit thread discussing Duffy's post, this new language "grew out of Sing#, the system language of Microsoft Research's Singularity OS."

And according to Duffy's post about the new language, which he calls "C# for Systems Programming," this new language may ultimately be open sourced. But before that happens, Duffy and his cohorts plan to reimplement M# on top of Microsoft's still-unfinished "Roslyn" compiler-as-a-service technology.

Midori: What we've gleaned so far

A skunkworks team inside Microsoft has been working on Midori since at least 2008 (which is the first time I blogged about the Midori codename and effort). The Midori team can trace its early roots to "Singularity" the Microsoft Research-developed microkernel-based operating system written as managed code.

Midori originally was championed by Microsoft Chief Technology Officer Eric Rudder. The Midori team consisted of a number of all-star Microsoft veterans (indluding Duffy), plus some additional high-flying developers from outside the company.

Early Midori design documents indicated that the Midori OS would be built with distributed concurrency and cloud computing in mind. Microsoft also supposedly planned to try to provide some kind of compatibility path between Windows and Midori (which isn't based on Windows at all). The early design documents also indicated that Microsoft Research's "Bartok" ahead-of-time compiler work influenced the team.

Duffy made a couple of public presentations and published papers in the ensuing years that indicated he and his colleagues were working on some kind of extensions to Microsoft's C# language. In his new blog post, Duffy elaborated on this, noting that M# (a codename he never uses himself) "should be seen (as) more of a set of extensions to C# — with minimal breaking changes — than a completely new language."

Duffy explained that the team made a conscious decision to work from C# as a base, rather than C++ -- the language a number of developers on the Windows team have favored -- because there's a substantial pool of C# talent. Duffy also said the team's goal of "minimizing complexity" resulted in a preference for C# rather than C++ as a starting point.

"Type-safety is a non-negotiable aspect of our desired language, and C# represents a pretty darn good 'modern type-safe C++' canvas on which to begin painting," Duffy blogged. He added in the comments on his blog post: "A goal was that any C# compiles in this new language, and then there are a bunch of new features that are opt-in."

A number of individuals commenting on Duffy's post (and in the aforementioned Reddit thread) wondered aloud why Microsoft simply didn't use other languages, like Go, Rust or D, rather than inventing a new C# derivative.

Aleks Bromfield, a former member of the Midori language team who joined the Google Developer Infrastructure group in July 2013, explained Microsoft's target with M#.

"We're like Rust in that we want to maximize safety and performance, and we're willing to add fancy type system features to get there," Bromfield said. "We're like Go in that we want to be simple and approachable, in much the same way that .Net attempted to simplify programming. We're like D in that we want the language to feel very familiar to devs using an existing language (C# for us, C++ for them) -- just better."

Developers theoretically could use M# to build any kind of application, including line-of-business ones, Bromfield said.

"The idea is that M# should be the lowest-level language that you'll ever need. It sits at the very bottom of the stack. But it's also safe and productive enough to be appropriate for writing higher-level systems, like Web services," Bromfield added.

What's next for Midori?

Many Microsoft watchers, including yours truly, wondered if Midori would ever exit its incubation phase. But with one-time champion Rudder moving in November to a new advanced strategy post -- plus the move of the Midori team into Myerson's OS group -- something seems to be afoot.

While Midori was in incubation, the Microsoft Research team working on the "Drawbridge" library OS managed to support Midori as a host implementation, alongside a number of other Microsoft operating-system platforms. (A library OS is a form of virtualization that seeks to replace the need for a virtual machine  to run software across disparate platforms.)

One of my contacts said Myerson's OS group is going to be determining which parts of Midori have a place in Microsoft's future operating-systems plans. Based on Duffy's post, it sounds like the M# piece of Midori will evolve throughout 2014, but it's not clear when and if it ultimately will be open-sourced.

Editorial standards