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
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?
.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 Basic.net, 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
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.
Training
See the Mono project
website. Novell's Linux University offers courses on getting
started with
Mono and ASP.net on Mono. There are books from O'Reilly and
Apress.