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.
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 IKVM.net 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 ADO.net, WinForms and ASP.net. There's support for the ASP.net 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?
What's coming up?
Mono 2.0, due for release in September, will have complete ASP.net 2.0 and ADO.net 2.0 support, and the Visual Basic compiler.
Rates of pay
Developers with both .net and Linux skills and experience from £35k.
This was first published in June 2008