Mono Project Offers .NET Compatibility for Linux

Ximian Inc. has publicly released a preview of its Mono project to bring features of Microsoft Corp’s .NET initative to Linux. Ximian is bringing C# compilers and the .NET Common Language Runtime to the operating system.

One of the key components of Microsoft’s .NET initiative is the new C# (pronounced “C Sharp”) language. C# is a C derivative that allows cross-platform compatibility using a run-time interpreter called the Common Language Runtime.

Ximian is working to create both compilers and a runtime to enable Linux users to create and run C# applications on Linux. “We see this as an upgrade in the development platform for Linux users,” says Miguel de Icaza, CTO of Ximian. De Icaza believes that users will benefit from being able to use C# to create new applications and to run existing C# applications.

Unlike some attempts at bringing Microsoft technology to Linux, Ximian is not reverse-engineering a C# compiler and runtime. Microsoft published the C# specification and submitted it to ECMA, a industry standards body. Ximian is working from the published specification. “We’re just working from the standard,” de Icaza says.

When C# was introduced some observers derided it as Microsoft’s attempt at a Java clone. Like Java, it allows developers to compile code into binaries, but offers a runtime environment that allows binaries to many different platforms. “It is basically a Java clone,” de Icaza says, noting “It has a bit more control over the runtime.”

Although there are similarities with Java, de Icaza believes that bringing C# to Linux is valuable work. He says that Java support in Linux is still rudimentary and binary compatibility with Windows-based C# programs will be desirable if C# gains traction in the computer world.

Microsoft announced last week that it and Corel Corp. were working to bring C# to the FreeBSD Unix variant. Although BSD and Linux both operate on Intel machines and can perform similar functions, de Icaza believes that this project is of limited value. “It’s basically a proof-of-concept that [C#] can run on other platform.” In addition, although Microsoft invested in Corel with the condition that it would bring the .NET framework or C# runtime to Linux, Microsoft’s recent PR war against Linux makes it unlikely it would push Corel to bring C# to the operating system.

Another facet of the .NET initiative, Web Services, should be fully supported when C# tools are mature. The class libraries for C# contain all of the tools users need to implement web services, according to de Icaza. Ximian has also worked to bring the Simple Object Access Protocol (SOAP) standard to Linux with its SOUP project. Some Linux applications, such as the spreadsheet Gnumeric already use XML as the basis of the file systems and can invoke SOAP calls natively.

Another Linux organization announced it would tackle another .NET compatibility issue. The Free Software Foundation announced the DotGNU initiative which would allow Linux servers to act as repositories for XML data, similar to Microsoft’s Hailstorm project. Ximian is not involved with this project.

While some Linux enthusiasts might object to a Linux company bringing a Microsoft language to Linux, de Icaza said there was a fair amount of support for Mono. “People who understand the development platform were really excited,” he says.

Ximian is also the primary developer of the Gnome desktop interface. While some members of the Linux community believe Ximian is too eager to imitate Microsoft, but de Icaza says, “We see ourselves as providing the technology to make Linux successful on the desktop,” adding, if it requires following Microsoft’s lead, Ximian is not above creating equivalents to Microsoft technology.

The Mono code released yesterday is in a very early state. “We don’t even have a number – it’s a technology preview,” de Icaza says. He hopes Ximian will release a production version sometime next year. He has taken developers off of the Gnome project to speed Mono development.

About the Author

Chris McConnell is Product and Technology Editor for Enterprise Systems.