Microsoft's .NET framework on Linux is getting a big boost today with the official release of Novell's Mono 2.0.
The Mono 2.0 release is Novell's open source implementation of Microsoft's .NET platform. With the latest version, the gap between the two is getting smaller.
Even though Mono 2.0 is compatible with Microsoft's .NET 2.0, it's not in full compliance with the latest .NET releases from Microsoft (NASDAQ: MSFT). The Mono effort is important as it is intended to enable .NET (define) applications to run on Linux.
"We're certainly doing catch up in some areas," Mono project leader Miguel de Icaza told InternetNews.com.
De Icaza noted that what the Mono project has been doing is to actually identify what parts of .NET developers are using. Since the Mono 1.2.3 release the MoMA (Mono Migration Analyzer) tool has been available to examine existing .NET executables and determine all of the items that are necessary from .net in order to run.
"Thanks to statistical data from MoMA, we're able to prioritize what people are actually using," De Icaza said. "What is important about this is there are some API's that we've definitely postponed. For example, [Windows Presentation Foundation] is not something that we're working on right now."
WPF is part of Microsoft .NET 3.0 specifications. At one time, it was best known by its code name, "Avalon." WPF is included in Windows Vista and Windows Server 2008 and provides a graphical subsystem for developers. De Icaza claimed that WPF is not yet widely used by developers at this point.
"The IT developer cycles are not in lockstep with vendor release dates," he added. "There are definitely the early adopters and they'll be using the latest APIs and those users won't be served by Mono. But anyone else on the tech adoption curve should be fine with Mono."
There are other issues with Mono 2.0 beyond the fact that it doesn't currently have support for WPF. Novell Product Manager, Joseph Hill noted that only 50 percent of applications run through the MoMA analysis tool come back without errors for being fully .NET capable. The 50 percent figure for Mono 2.0 does show progress though. Hill commented that previous versions of Mono had figures as low as 10 percent for errors.
".NET has the ability to call into unmanaged code and legacy libraries," Hill explained. The downside for portability is that if you're calling into legacy code that is not available on the target platform then that application isn't going to be ported until the legacy code is ported as well. "
Hill added that there are also some libraries in .NET that are just very Windows specific that the Mono project is not likely to port either.
The key part of the Mono 2.0 release from a technical perspective is that it provides full support for Windows Forms which is something that the Mono project has been working on for several years.
"Mono 2.0 is a big deal for us and it means that we've got complete support for .NET 2.0, Hill said. "We've had pieces of 2.0 coming for a while now that we have complete support for desktop components, Windows Forms specifically we know have what we consider to be complete support."
Windows Forms is a graphical API for Microsoft Windows desktop interface components. Hill admitted that the effort to get full Windows Forms integration into Mono 2.0 ended up being a bigger task then first though for a number of reasons.
"Probably the biggest component was the embedding of browser control," Hill explained. "It depends on Internet Explorer on Windows and we wrote against Mozilla Firefox but we had to be able to invoke same behaviors and control."
Novell has been working on the Mono project since 2001 and began to pick up momentum when the first beta of the Mono 1.0 was released in 2004. While the Mono 2.0 release marks a significant milestone for Mono, work is still ongoing and a Mono 2.2 release is scheduled for November.
"What we are updating in 2.2 is a new code generation engine that just generates better code and will improve not only Windows Forms but other computational aspects as well."