Ximian's Mono project: .NET for monkeys, penguins, and gnomes

Learn about the Mono project, an attempt to create an open source, portable implementation of .NET.

Whatever your opinion on the origin of the technology, you have to admit that Microsoft's .NET platform is a very big deal. With it, Windows developers finally have access to a robust class library similar to the ones Java and Delphi developers have enjoyed for years, as well as the potential to support multiple operating systems with the same code base. So far, though, we still have only the potential. Microsoft has made noises about porting .NET to other platforms, but the realities of the marketplace mean that you shouldn't hold your breath waiting for this to happen.

However, Ximian is currently working on a project to offer up a portable, open source implementation of .NET. This project is known as Mono. Why Mono? Well, it seems that Ximian (famous for the high-quality Ximian GNOME desktop for Linux) is rather fond of monkeys, and "mono" is Spanish for monkey.

Monkey see, monkey do
The self-stated goal of the Mono project is to create a full, open source implementation of the .NET development platform. This means Mono will come complete with a CLI run time, VB.NET compiler, C# compiler, and a full set of class libraries. The other, rather obvious, goal is for Mono to be available on multiple non-Windows platforms.

What Mono will not be is a complete copy of Microsoft's .NET Initiative, which has become a confused mess of new products, renamed new products, and newly renamed old products. Mono will not include .NET-branded components such as Passport or BizTalk, although it will certainly be possible to use either from a Mono application.

Although no one at Ximian will speculate on a completion date, the project is moving along nicely. The actual run-time engine is nearing completion, with current efforts focused on getting the JIT IL compiler working. The class libraries are in various states of completion, while MCS, the C# compiler, is close to an important milestone: its first non-Windows version. The lack of a non-Windows compiler has meant that, oddly enough, most of the current Mono development is taking place on Windows.

The tools make the monkey
A platform is only as good as the tools it supports, and Ximian has plans to include support for a variety of popular toolkits. A C# interface library for the gtk+ GUI toolkit, called gtk#, is in the works. Support for working with Bonobo and CORBA components is planned as well. Ximian also plans to expose some of Mono's CLI functionality as independent shared libraries, much as Microsoft has done with its Managed C++ Extensions. This should allow C developers to make use of Mono's garbage collection engine or JIT compiler for their own projects.

One of the project's goals is cross-platform compatibility, but we've all heard that before. Just how portable will Mono really be? According to Ximian, the plan is to be 100-percent compatible with the .NET System namespace, with the exception of PInvoke (Platform Invocation Services), which is the way .NET handles calls to native code—for example, Win32 API calls. Assuming, then, that your .NET code remains, uses the APIs found under the System namespace, and doesn't make use of PInvoke, your code should port to a Mono platform running on any operating system.

There's a 900-pound gorilla behind the Windows
So what does Microsoft think about all this? There were rumors at one time about a potential patent problem, but nothing concrete has materialized yet. According to Ximian cofounder Miguel de Icaza, there hasn't been any official response from Microsoft at all about Mono—"although," he said, "they know we are working on it."

Unofficially, however, the .NET developers from Microsoft he has spoken with have been very supportive. "I got to meet many of the .NET developers and people involved in the ECMA standardization process at the Microsoft PDC in October,” de Icaza said, “and all the developers have been really helpful and are great people. I guess it is a normal connection between programmers. The people involved in C#, the CLS, and the run time are passionate about this new technology, and so are we [at Ximian]."

Once completed, Mono should make an interesting alternative to .NET, providing a way for Windows developers to move their code and themselves easily onto other platforms. With Mono, Ximian has a chance to excite a lot more people about this newest big thing in software development.

Is Mono for the birds?
Are you excited about the idea of a platform-independent .NET implementation? Would Mono make you or your organization consider moving development from Windows? Send the editors an e-mail.


Editor's Picks