Mono & .Net: The odd couple

As Microsoft becomes more open to open source, it isn't necessarily opening itself up to competition. The Mono project works with, as well as against, the software titan, says John McGrath.

In the Brazilian martial art capoeira, it can be hard to tell if the participants are fighting or dancing. Players cooperate and compete, and spend as much energy trying to impress the crowd and one-up each other as they do in combat.

Microsoft's earlier response to open source was less subtle and more combative. But lately it looks like the relationship is evolving into a productive balance, more dance than fight.

Just last week Mono launched a new version of its software, based on the C# and CLI portions of .Net standard Microsoft submitted to ECMA and ISO. Microsoft published and opened just the APIs for .Net--what the software is supposed to do, not how it does it. Because .Net is a standard, both sides are able to avoid some of the pitfalls of arguing about source visibility. It is a major step forward from Microsoft's earlier stance, and it opens the door for others to build competing yet compatible implementations of the .Net API.

And people are coming through that open door. The Mono project, lead by Miguel de Icaza, is one of two groups building an open source implementation of the .Net development platform. Both .Net and Mono provide the same APIs, which can be called from multiple languages. They also provide simplified cross-language integration, and a Common Language Runtime, or CLR, which is similar to Java's JVM. Just last week Mono launched a new version of its software, which for the first time is being incorporated into other commercial products.

And de Icaza says he has unofficial word that in the coming weeks Microsoft plans to share .Net-related intellectual property. Pending review by Microsoft lawyers, he says, "Microsoft patents on technology developed specifically for .Net will be granted royalty-free to those trying to implement the spec."

This is big news, since there has been discussion on Slashdot and other open source Web sites that patent and intellectual property issues might be used by Microsoft to stymie any non-Microsoft .Net implementation, despite its submittal of .Net as a standard.

Microsoft is more circumspect about this. John Montgomery, the director of Microsoft's Product Management, Developer Platform and Evangelism Division, says Microsoft will "follow all ECMA and ISO standardized patent policies." These specify a "reasonable and non-discriminatory," though not necessarily free, patent policy. Microsoft has not made an official announcement regarding this, and it will be interesting to see which way it goes. RAND (reasonable and non-discriminitory) wouldn't kill Mono, but it would have a dampening affect on .Net adoption outside the Windows world.

The Mono project originated during de Icaza's search for better development tools for the other large-scale open source project he leads, the Gnome desktop environment. .Net solved many of the problems faced by his development team, but had two major drawbacks: it wasn't free, and it didn't work on Linux. So de Icaza and others started building their own version.

That they were following Microsoft's lead doesn't matter at all to de Icaza. "Lots of people interested in .Net as technology don't care that it was invented by Microsoft. All kinds of problems are directly resolved by .Net," he says. "People not into .Net or Mono perhaps haven't experienced problems which would be helped by it, or are happy with the current Linux development tools. But Gnome is a perfect match for what .Net is trying to solve. We were looking for a solution, and it really touched a nerve--we were really interested."

On an engineering level, the relationship between Mono and Microsoft has been friendly. "We have a good relationship with engineers involved with .Net, many of whom we met at ECMA and other events," says de Icaza. "There's of course a natural sympathy, since we're working on the same or similar things, the same tools, and since we're both interested in .Net succeeding."

Montgomery offers similar sentiments. "The fact that Ximian is doing this work is great. It's a validation of the work we've done, and it validates our standards activities. Also, it has caused a lot of eyeballs in the open source community to be directed to .Net, which we appreciate."

One effect of this cross-pollination is that developers who might not have considered .Net may be tempted to try it, knowing their products have the potential to be deployed on more than one platform. This doesn't necessarily mean a loss of sales for Microsoft. In fact, it may expand Microsoft's opportunity to sell Visual Studio .Net to a new group of developers, since it will be possible to do development work in Visual Studio.Net, and then deploy to either .Net Server or Mono on Linux, as the client or situation demands.

For people who want to stay entirely within the open source realm, another project, SharpDevelop, is creating a GPL IDE, which will be an open source competitor to Visual Studio .Net. Mono is not feature complete, or ready for beta, though that hasn't stopped companies from announcing products based on it. Openlink says it will use Mono technology in its upcoming Virtuoso 3.0 Universal Server product. Also, Tipic and Winfessor have both recently announced new .Net messaging tools that will incorporate Mono. The final version of Mono--minus the Windows Forms component, which will be added later--should be available by May or June of 2003, according to de Icaza.

As Mono takes parts of the .Net toolkit into the Linux/open source world, it is unclear who is co-opting whom--whether the two sides are fighting or dancing. More importantly, it's beside the point. Both sides--as well as developers and companies interested in .Net--stand to gain.

Has Microsoft changed its stripes about open source? TalkBack below or e-mail us.