Mono

Mono is an open source implementation of the Microsoft .NET Framework.

Mono includes: a compiler for the C# language, an ECMA-compatible runtime engine for the Common Language Infrastructure (also referred as the CLR) and class libraries: both Microsoft.NET compatible as well as many more. The runtime can be embedded into your application.

Mono has implementations of both ADO.NET, and ASP.NET> as part of its distribution.

Mono project background

The GNOME project goal was to bring missing technologies to Unix and make it competitive in the current market place for desktop applications. We also realized early on that language independence was important, and that is why GNOME APIs were coded using a standard that allowed the APIs to be easily wrapped for other languages. Our APIs are available to most programming languages on Unix (Perl, Python, Scheme, C++, Objective-C, Ada).

Later on we decided to use better methods for encapsulating our APIs, and we started to use CORBA to define interfaces to components. We complemented it with policy and a set of standard GNOME interfaces for easily creating reusable, language independent components, controls and compound documents. This technology is known as Bonobo. Interfaces to Bonobo exist for C, Perl, Python, and Java.

CORBA is good when you define coarse interfaces, and most Bonobo interfaces are coarse. The only problem is that Bonobo/CORBA interfaces are not good for small interfaces. For example, an XML parsing Bonobo/CORBA component would be inefficient compared to a C API.

The Common Language Infrastructure platform.

Microsoft has created a new development platform. The highlights of this new development platform are:

The Common Language Infrastructure platform is similar to the goals we had in GNOME of giving language independence to programmers. It is more mature, documented, larger in scope, and has a consistent design.

Any API that is written using a CLS provider language can be used by any language that is a CLS consumer. Compilers generate code in a format called Common Intermediate Language (CIL) which is an intermediate representation of a compiled program and is easy to compile to native code or compiled using Just-in-Time (JIT) engines. The restrictions placed by the runtime on the CIL byte codes ensures that it is possible to do a good job at optimizing the code in a JIT compiler.

ECMA standards.

Microsoft has submitted the specifications of C#, the runtime, the metadata and the other various bits of the .NET development platform to the ECMA for standarization.

You can get a copy of the specifications submitted to ECMA from: http://www.dotnetexperts.com/ecma

Mono: an Open Source Common Language Infrastructure implementation.

Ximian has begun work on Mono, a project that aims to bring the Common Language Infrastructure platform to free systems.

The .NET development platform is a very rich, powerful, and well designed platform that would help improve the free software development platform. Just like the GNU project began to clone Unix sixteen years ago, we will be cloning the .NET development platform because it is a great platform to build on.

A. Credits

Authors: Miguel de Icaza (miguel@ximian.com)