One of Innova’s stock monologues to deliver to clients is “PHP is an excellent development language.” It’s true: PHP with the Zend Framework is the most flexible and reliable way of creating sites that I’ve ever seen. It’s a win. The reason we have to keep delivering the monologue is because clients – or people who advise clients, such as corporate IT drones – often have an unhealthy respect for Microsoft-based solutions, specifically .NET. At some point in the last ten years Microsoft replaced IBM in the lexicon of corporate uniformity, with obvious consequences for anyone not toeing the line.
For developers, .NET comes with some pretty heavy strings attached. It involves committing to a Microsoft stack, using IIS instead of Apache, Windows Server instead of Linux, a whole bunch of odd Microsoftian applications, wizards, talking paperclips, brown shoes with a black suit, all things that good developers hate. The upside is C#, good library support and excellent performance.
On balance, if we were forced to use .NET we would probably give up and move to New Mexico and raise organic chickens or something; it just wouldn’t be fun.
Enter Mono, stage left.
Novell’s .NET-compatible open source stack, Mono offers an open source .NET-compatible solution for both desktop and web development, with code running on either Mono or .NET runtimes. It can run in an Apache module, meaning no need for lame old IIS, or on its own development server, XSP. For desktop application development, applications writted for Mono can be compiled for Windows, Linux and OS/X. Monodevelop, the supplied IDE is really quite a sweet development environment, redolent of Apple’s XCode. It runs best on Linux, but there is a Windows equivalent, SharpDevelop. The runtimes and libraries are licensed either as MIT or LGPL.
Developers have been suspicious of Mono since its inception. How can anything good come of a project that the beast of Redmond could crush at any moment? Is Novell involved in another SCO-style licensing saga? Why do dogs have black lips?
Richard Stallman spoke against using C# because Microsoft was patenting features in the language. In 2006 Microsoft agreed not to sue Novell’s users, with the consequence of Novell being held in high dudgeon by the Free Software Foundation, even though the FSF is promoting it’s own C#-oriented .NET-compatible stack, dotGNU. For proponents of other languages, it’s a FUD-fest.
This is a shame, as Mono offers a fairly unique proposition; a reliable, scalable, free-as-in-beer, free-as-in-speech, open-source cross-platform .NET-compatible solution. I’m going to be increasingly looking towards Mono as a solution for desktop applications and web projects; the next step is finding a good Mono-compatible ASP router, then porting phpSprockets to C#.

Leave your mark