Tonight I went to hear Miguel de Icaza speak about the Mono project to the Boston .Net user group. It was held at the somewhat swanky Microsoft office in Waltham (several Xboxes on display, very modern looking etc.) The audience was mostly .NET developers which was interesting to see how the other half lives. And maybe I was being hyper-sensitive, but they seemed about 5% different than Java folks - about the same difference between
System.Console.WriteLine. Not much, just a little.
Miguel is a very engaging speaker with heaps of energy and infectious enthusiasm. The crowd was definitely interested in learning more about Mono, and several had tried it out with their existing C# apps. Lots of questions from the crowd and Miguel is full of thoughtful answers. And he had help from his 2 mates, including a 17-year old who’s been hacking Mono for 2 years. The progress that the Mono team have made is very impressive, and something the Apache Harmony folks should study closely. Miguel described ~30 developers from Novell and 300 (I think) overall with commit access - so lots of outside help.
The Mono technology is very cool in several boat-loads of ways. The number of languages that can work in the runtime is impressive (Java included). And, I know this antithetical to the Java credo, but I think being able to compile natively without requiring shipping a separate runtime is a good thing. Now there are plenty of cases where having a runtime is not a big deal, and that’s splendid. But there are other cases where deployment is greatly complicated. Too bad Java has pretty much elected not to support this (aside from GCJ). Perhaps this one reason we haven’t seen much Java on the desktop? (I think another has to do with fidelity to the OS L&F, and Mono has a good story there with Gtk#, Cocoa# and WinForms.)
Still, it is a little strange to see Miguel speaking to a group of .NET folks. I thought the original mission of Linux and Linux on the desktop was to get people to leave MS platforms? While you can argue that having technologies familar to MS developers will make it easier for them to switch, they aren’t the real target audience. While it’s very nice that Mono is giving companies like SourceGear ways to make their .NET apps run on Linux, that seems like a side effect, at best. And I think the jury is still out on whether the linux desktop community will write much code in C# (MonoDevelop, Beagle, FSpot are nice starts, but let’s see how it spreads outside of Novell). They stayed away from Java and used C/Python/whatever in large part because it came from Sun and wasn’t free, or free enough anyway. (I don’t think you can credibly argue against Java on technical grounds and think that C#/Mono is a win - the two platforms are too similar.) And with the reluctance of players like Red Hat to adopt Mono it might be an uphill battle. But even if it doesn’t have it’s intended goal of helping OSS/Linux desktop developers to be more productive, I think there will be a lot of positives for the broader development community. Plus, it’s just cool.