Reviews

Review: Mono 1.0

Mono 1.0
Free
www.mon-project.com

Just in case you missed the memo, Mono is a cross-platform (Windows/Linux/Sparc/Mac/etc) implementation of some of the core parts of .NET, released under open-source licenses (GPL, LGPL, and MIT, depending on which piece). Originally launched by independent developer Ximian, the project is now under the auspices of Novell, which purchased Ximian last year. Recently, they reached a major milestone with the release of version 1.0, including source and binary downloads for all major platforms.

Being a Windows developer, I grabbed the Windows version and gave it a spin. The installation (using the Nullsoft installer) was straightforward, though it did require running a batch file manually at the end to update the path on my development computer. After that, compiling and running .NET code is something of an anticlimax. Grab your C# source, and instead of using the Microsoft csc compiler, use the Mono mcs compiler instead. Then use the mono runtime library to launch it, and voila. I used some of the code from MASTERING VISUAL C# .NET as test cases, and it worked fine - except in the cases when namespaces (notably Windows Forms) aren't yet implemented by Mono. The goal here was to implement all the ECMA standard parts of .NET, and that doesn't include the Windows-specific portions.

But even without Windows Forms, plenty of .NET applications will make the transition smoothly. There's full support for ASP.NET, for example, complete with a dedicated Web server; they say they can run an unmodified IBuySpy site, though I didn't test that claim. And Mono goes beyond Microsoft's implementation in some ways as well. For instance, they provide namespaces to work with the Gtk+ GUI toolkit, native Zip file support, LDAP access, and a Mono.Data namespace that can talk to Postgres, MySql, Sybase, DB2, SqlLite, Tds (SQL server protocol) and Oracle databases.

Is Mono more than just a clever parlor trick? Yes, I think it is. Part of the promise of having chunks of .NET as a recognized standard was that they would be available beyond places where Microsoft would put them. Mono delivers on that promise, and makes some things - like migrating console and Web applications from Windows to Linux - not only possible, but simple. That's a good thing for developers.