Hot skills: Mono

What is it? Linux may be making rapid inroads into the server market, but development tools haven't kept up. Microsoft development skills are also...

What is it?

Linux may be making rapid inroads into the server market, but development tools haven't kept up. Microsoft development skills are also not easily transferrable to Linux and Unix environments. Mono - now backed by Novell - is an implementation of Microsoft's .net platform for developing applications for Linux and other non-Windows operating systems.

Mono makes use of ECMA (European Computer Manufacturers Association) standards such as C# and the Common Language Infrastructure. (ECMA also maintains the standards for JavaScript and Jscript.)

In the past year or so, some aspects of the Mono project have also received support from an unexpected source. Microsoft is working with Novell to put Microsoft's Flash-equivalent Silverlight on Linux, a project that began as Mono's Moonlight. Microsoft has also agreed with Novell not to pursue Mono users for patent infringements however, this may only apply to customers for Novell's SUSE Linux and other Novell products, and has consequently divided the open source community.

Where did it originate?

The Mono project began at Ximian, which provided desktop products for Linux based on the Gnome platform. Novell took Ximian over in 2004. Other Ximian products, such as the Red Carpet Linux software management tool, were absorbed into Novell's product families.

What's it for?

Mono provides compilers for C#, Visual Basic and Jscript, and supports many other languages, provided they compile to .net's Common Intermediate Language. Mono can run binaries produced using Visual Studio without recompiling. There's a Mono migration analysis tool to check that applications have ported successfully.

Java applications can also run alongside .net using the free Java Virtual Machine.

The core components of Mono, such as the Common Language Runtime, are ECMA-based, ensuring that the environment is both standards-compliant and free of proprietary patent issues. Many of the components of the development stack come from the Gnome project and other open source libraries. They include GTK# , a set of .net bindings for the GTK Gui toolkit. The Microsoft compatibility libraries include, WinForms and There's support for the Ajax APIs and controls, Mono, HTTP for creating HTTP handlers, and extended XML support.

MonoDevelop is a Gnome-based IDE for C# and other .net languages, and there's a Mono debugger. Mono's runtime can be embedded into applications.

How difficult is it to master?

Mono should make it possible for developers trained in C#, Visual Basic and other .net languages to transfer their skills to Linux and other cross-platform work without extensive retraining.

Where is it used?

Novell uses Mono for applications such as Zenworks and iFolder. Mono is also used in Web 2.0 applications such as Wikipedia, Twitter and Second Life.

What systems does it run on?

.net applications can be developed and run on Linux, Windows, Solaris and other Unixes, and Mac OS X. Languages directly supported include C#, Java, Boo, Nemerle, Visual, Python, JavaScript, Oberon, PHP and Object Pascal. Mono also supports PostgreSQL, MySQL, Firebird, Sybase ASE, IBM DB2, SQLite, SQL Server and Oracle.

What's coming up?

Mono 2.0, due for release in September, will have complete 2.0 and 2.0 support, and the Visual Basic compiler.

Rates of pay

Developers with both .net and Linux skills and experience from £35k.


See the Mono project website. Novell's Linux University offers courses on getting started with Mono and on Mono. There are books from O'Reilly and Apress.

Read more on Operating systems software