Mono Project aims to bring .Net apps to Linux

Spearheaded by Linux developer Ximian, the Mono Project is working to develop .Net applications that can run on Linux and other non-Windows OSes. Can it do so without infringing on Microsoft's intellectual property?

The open-source community, through Linux software development company Ximian, has embarked on a development effort to bring Microsoft's .Net platform to Linux. Called the Mono Project, this effort encompasses creating a development environment that will allow applications developed for .Net to run on Linux-based as well as Windows-based systems.

Mono originated out of a need for improved development tools for the GNOME community and for Ximian specifically, according to Miguel de Icaza, Ximian's chief technical officer.

The implications of Mono, however, are further reaching because the tools are based on the CLI (Common Language Infrastructure) and C# implementations that Microsoft submitted to the European Computer Manufacturers Association (ECMA) standards body. If Mono can achieve the goal of creating a set of Linux development tools based on those standards, developers will be able to write .Net applications that can run on Linux, Windows, and possibly other non-Windows operating systems, such as Unix.

Aside from the actual development effort, the Mono Project tools must be built in the open-source community without infringing on Microsoft's intellectual property--which essentially means that developers must re-engineer the tools based on the standards without looking at any of Microsoft's source code.

The Mono Project consists of three critical elements: a compiler for the C# programming language, a CLI, and a class library.

The CLI is a virtual machine that contains a class loader, a just-in-time compiler, and a garbage collection run-time environment. The CLI is the component that will allow programs written in C# to run on non-Windows operating systems such as Linux. This is similar to how the Java Virtual Machine allows an application to run on a variety of operating systems in the Java world.

The class library is the component that allows applications to perform critical functions such as XML processing, file I/O, and connecting to the network. It will be compatible with the Microsoft CLI (closely matching what Microsoft has released in the .Net framework), and the expectation is that additional class libraries that will be written by the open-source community will also be compatible with the CLI.

Ximian's de Icaza expects to reach the development milestone where the compiler can compile the class libraries by the end of the year. The graphical user interface components--the class libraries for building GUI applications--will be available by the middle of next year.

"The reason we are working on this is to … upgrade … our development platform to build our [Evolution] desktop application," de Icaza says. Evolution is Ximian's e-mail client and personal and workgroup information management application. "When we saw the .Net framework, we said these are the tools we would like to use to build our next generation of products," he says.

Ximian does not see Mono in and of itself as a means of giving Linux developers a way to catch up to the state of development tools available for Windows. Rather, Linux developers will likely use many of the same tools they currently use to write and compile applications. Ximian sees another open-source project, SharpDevelop, as a way to get the same integrated development environment that Microsoft provides with Visual Studio .Net.

By developing Mono through open source, the project involves people who bring a wide range of interests into the development effort. While Ximian may want to have an improved set of development tools to speed development of its applications, other developers may be looking for tools that allow them to write applications on Windows and run them on Linux systems.

One of the big questions is how to avoid infringing on Microsoft's intellectual property. "Our approach to avoiding infringing [on] patents is to stick to non-research topics and implement features using existing technology," de Icaza says. For example, the Mono JIT compiler is not using any advanced JIT-compiler technology. Instead, Mono's version is based on older JIT technology.

De Icaza also stated that Mono has to be "focused on the big picture" and not just on what the ECMA has standardized in the last year. To that end, Ximian is planning to participate in the standards process to create class libraries that improve on areas where the .Net framework is particularly weak, such as e-mail management.

According to Stacey Quandt, associate analyst at Giga Information Group, it is unlikely Microsoft will support Mono because of the licensing associated with the GNU General Public License for the C# compiler and the GNU Lesser Public License for the class and run-time libraries.

But even if Microsoft doesn't support Mono, Mono's very existence lends credibility to Microsoft's claim that .Net is portable to other platforms.

Quandt says reaching a broader developer community is another challenge facing Mono. Both IBM and Sun, for example, have made considerable investments in Java and will be difficult to enlist in what will be a competing effort.

Michael Caton is a freelance writer and technology consultant.