Novell's Mono to benefit from Microsoft accord

Free of patent worries, Novell launched version 1.2 of its Mono tool for porting Windows apps to Linux

De Icaza: Mono can save years of rewriting

At Microsoft’s Tech-Ed event in Barcelona last week, Novell released version 1.2 of Mono, its open-source, cross-platform implementation of Microsoft’s .Net Framework. Miguel de Icaza, vice president of product technology at Novell and Mono’s prime mover, spoke to around 100 developers in an after-hours meeting. He demonstrated how a Windows application can be created in Microsoft’s Visual Studio, and then copied and run on Linux, with binary as well as source code compatibility. Several other platforms including Mac OS X are also supported.

The purpose of Mono is to enable developers to migrate Windows applications. “It may be for business needs, it may be for scalability needs, it may be for security,” said de Icaza. “For example, [online game provider] Second Life has 3000 servers, and they use a scripting engine that is very slow. They are migrating to Mono, and it gives them between 50 percent and 150 percent performance increase, which means they can dramatically cut their hardware costs.” Another beneficiary is the City of Munich, whose suppliers have in some cases used Mono to assist in its migration from Windows.

New in Mono 1.2 is support for System.Windows.Forms, the standard graphical user interface library for Microsoft.Net. The change was welcomed by Mono user Eric Sink, founder of software firm SourceGear, who has successfully used Mono to create a command-line client for his company’s source code management system. He said that although Mono has proved reliable, the absence of Windows Forms classes had limited its usefulness. Another problem is the complication of deploying the Mono runtime, which lacks the ubiquity of Java’s virtual machine.

Other snags also remain. Many Windows applications invoke native APIs or COM components, though de Icaza claims that while “platform invokes are fairly common, COM usage is rare”. In either case, the calls have to be ported. Another issue is that there are gaps in Mono’s implementation of the .Net libraries, and performance is not always as good. Still, as de Icaza observes, “If you can move three million lines of code from one system to another, and you spend a month fixing it, it’s a lot better than spending three years rewriting it.”

De Icaza also argues that Mono can beats the platform-neutral Java language in other areas: “I think Java hasn’t caught up to a lot of things. For example, the generics implementation in Java is not really generics, it is syntactic sugar. C# has nicer features as a language. I also think that C# 3.0 is ahead of anything that Java has.”

Most of what Microsoft calls .Net Framework 3.0 is due to be implemented in Mono, with the exception of the Windows Presentation Foundation, which de Icaza says is “over-engineered, over-architected, and too large” . Even that may come if market forces require it.

Mono is impressive, but from its beginning there has been speculation over possible litigation from Microsoft. Although the C# language and the core .Net runtime are ECMA standards that anyone can implement, Mono includes non-ECMA libraries such as ASP.Net, Microsoft’s popular web framework. If Mono proves popular, might Microsoft’s lawyers try to squash it? On 2 November, Novell and Microsoft announced what they called a “patent cooperation agreement.” Among other things, Novell's customers receive from Microsoft a covenant not to sue, for a range of technologies including Mono.

However, it is hard to discern whether Microsoft agreement with Novell is a signal of universal good intentions, or a prelude to litigating more aggressively against others. De Icaza maintains that Mono does not, in any case, breach any patents, but welcomes the agreement. “For Novell customers this is good”, he says, adding, “I know it is not great, we would like a blanket statement for everyone in the world.”