Microsoft and Ruby

In comments, Daniel Crenna asked “What do you think of the Garden Point Ruby.NET compiler? If Microsoft supported this project financially, why do you think they didn’t put together an in-house project similar to Jim’s IronPython for the Ruby equivalent?”

I’ve swapped a couple emails with the GP guys (including confirming that MS was supporting the project), but honestly I haven’t yet looked at their compiler. I have been tracking John Lam’s RubyCLR; my impression is that John is a little further along.

A few months ago, Microsoft posted a job listing for someone to work with Jim Hugunin’s team and the posting explicitly mentioned Ruby on the CLR as the type of project on which the person might be working. It’s unlikely though that MS is on the cusp of announcing any Microsoft-branded Ruby projects. It’s one thing for MS to support an external project or an MSR project with limited goals and deliverables, but when a project is publicly visible and is being developed in Redmond, it instantly acquires baggage — a wave of attention, an expectation of support, people using betas in production systems, integration with Visual Studio, etc.

At this point, my guess is that Microsoft doesn’t feel that they can gain anything from a publicly-visible Ruby. They’ve got IronPython: a good, fast example of a dynamic language running on the CLR. My guess is that they feel that they’ve proved their point to the public, and I think they feel they’ve flushed out a lot of the issues involved in evolving the CLR to better support “dynamism,” which is a very active interest of some very smart people.

The odds that MS will ever produce a Ruby is, I think, less than 50-50. Microsoft was terribly burned by Java: they were skewered for acting on the indisputable observation that Java Native Interfacing was a pain. Ruby has quirks in its syntax and some type system decisions that the language, as it stands, is not a hand-in-glove fit with the CLR: to say that changes are “needed” is not strictly correct, but to say that changes could improve the programming experience is, I think, fair. Subsequent to their Java experience, Microsoft has had the C# experience: a fairly-unqualified success. My guess is that “one of these days” (I’m thinking a backroom at PDC ’07), we’ll see a language that is to Ruby what C# is to Java: similar enough to attract immediate comparison / crossover but with semantic differences fitting Microsoft’s overall language strategy.