Windows developers are a step closer to being able to run their programs on Linux with the 2.0 release of Mono, an open source version of the .NET platform. With the new release, Mono supports C# 3.0, LINQ, Visual Basic 8. Mono 2.0 also features a debugger for managed code -- a new feature for the project -- as well the Mono Migration Analyzer (MoMA), a tool that analyzes .NET assemblies to determine their compatibility with Mono.
With this release, the Mono team added support for many important .NET 3.5 APIs. Some .NET 3.5 APIs, as well as .NET 3.0 APIs, remain unsupported.
MoMA lets users anonymously report its results back to the Mono project; with the 2.0 release, about 45% of programs are compatible without any changes, and 25% need only one to six changes, according Novell Inc., which sponsors Mono. About a fifth of programs call unsupported APIs, including direct calls to win32 libraries, and will not work with Mono, said Joseph Hill, project manager at Novell.
Because the project's goal was originally just to bring C# to Linux, the bulk of Mono development has traditionally been in desktop applications, Hill said. On the other hand, many existing desktop applications have large portions of unmanaged legacy code, which Mono does not support, he said. In contrast, more server applications are fully managed, making them better candidates for Mono.
From its inception as a C# compiler, Mono has grown to include a .NET IDE, MonoDevelop, and a runtime for executing .NET assemblies. The Mono runtime works on Windows, Linux and Mac OS X, meaning that Mono-enabled .NET programs can run on any of those platforms.
The Mono runtime also executes the same bytecode assemblies as Microsoft .NET, so developers can write code using Visual Studio and drop it into Linux, Hill said. MonoDevelop 2.0, which Hill said should be out in a couple months, will include support for Visual Studio file formats so that programmers can use whichever IDE they prefer.
"We're pretty big fans of Visual Studio, so we're happy to tell people who like Visual Studio to keep using it," Hill said.
One of the major projects developed with Mono is Moonlight, the open source version of Microsoft's Silverlight. Although Microsoft isn't involved in Mono, it is working with Novell on Moonlight as part of its effort to include Linux in the Silverlight product push. Mono is also being used by some game developers, especially for plugin scripts, Hill said. Second Life and Unity, a cross-platform programming framework for games, both use Mono. On the server side, Mono projects include MindTouch's DekiWiki and Wikipedia, which uses Mono for its indexing and searching functionality, according to a list of companies using Mono on the project's site.