When you think mono, you think tired. You think sleepy. You think shut-yourself-up-in-your-bedroom-for-two-weeks-and-snooze-like-Rip-Van-Winkle. You get the idea.
But that is not how it should be. Mono isn’t boring. Mono should excite people! I am speaking, of course, of the open source implementation of the Microsoft .NET Framework. It should make them stand up and say, “Wow! Here is one of the most interesting projects I’ve seen in a long time in the wonderful world of Linux.” And yet, this is not the case. People are taking their prescription sleep aids, turning off their cell-phones and settling down for a long winter’s nap. So why is it that one of the most ambitious projects that I have ever laid eyes on is not garnering more enthusiasm?
Misconceptions about Mono
No matter what you know or how smart you are (or think you are), it can be near impossible to change people’s perceptions. This is especially true in the software world (see Apple). And unfortunately for Mono, there are a couple misconceptions that keep it from gaining ground.
1. People think Mono is simply a derivative of the Microsoft .NET Framework.
Even though the Mono FAQ (http://www.mono-project.com/FAQ:_General) points out that this is not the case, the common perception keeps many people from using Mono to build their projects.
2. People assume that Mono is not ready for the enterprise.
One of the reasons for this is because not many enterprise projects are being built with it (I’ll get to that later.) Instead, Mono is primarily being used to construct desktop software.
The second reason for this misconception is the Mono project’s inability to stay in step with Microsoft .NET. Currently, Mono is somewhere between .NET version 1.1 and 2.0 while .NET 3.5 was just released. This is not the Mono team’s fault. Microsoft does not collaborate with them, so everything the Mono team accomplishes is through their own blood, sweat and tears. Nevertheless, this version discrepancy creates the perception that Mono is just a .NET wannabe.
How Mono can improve
I have a few ideas on how Mono can realize its potential:
Software With the exception of iFolder, Mono is not being used to develop any truly useful enterprise applications. Great desktop applications are being created, like Tomboy and Beagle, but no one has created the next great server application using Mono. Until this happens, IT administrators won’t see Mono as an equal to the other common framework, Java. My suggestion is that more effort be put behind iFolder, as it is already a very useful application. With some work, iFolder could compete with Xythos Webspace and be a poster-child for Mono in the Enterprise.
Ubiquity I cannot tell you how many IT administrators have been hesitant to use software I have written in C# for the sole purpose of being cross-OS compatible via Mono because Mono was not installed on their servers. Java is installed by default on many Linux distributions, making it an easy development choice. The Mono team needs to work more closely with Linux distributions to ensure that Mono is pre-installed, making it an easy choice to use.
Memory Leaks If you have ever used Beagle you know that it can heinously crash your system. Since it’s inception, Mono has been plagued with a random memory bug. Your system memory will go from 1% to 1000% in a matter of seconds, without warning. If the Mono developers want to make Mono more than just a desktop hobbyists language then they need to fix this bug once and for all.
Python Effect There is a huge movement in the Gnome community to make Python the standard language for Gnome development. Mono is a close second, thanks in part to the great desktop applications being written with it. However, if Python is officially adopted, there will be a backlash against Mono, or pressure on developers to adopt Python and port their once Mono applications to the official language. In order to prevent this from happening, Mono developers need to demonstrate Mono’s cross-compatibility. The Mono team needs to have Mono installed by default into Linux so that if you write an application with Mono it can run in Windows AND Linux (and even OS X).
Python is also cross-compatible, but I do not foresee Python being installed by default on Windows. Mono stands the best chance at being the first cross-compatbile language out of the box. This is Mono’s best play to fight off the Python effect.
Mono is a great framework and C# is a tremendous language. I like them both very much, but I am ready to move to Python myself if I do not see more initiative by the Mono camp to make Mono more accessible. Having a great language and product is not nearly enough. Again, Apple is a good example of this. Sure, OS X is great, but the real reason Apple resurged is because of their darn good marketing team and the iPod. From the iMac commercials to Steve’s securing of digital music distribution rights, it was a master marketing strategy. The Mono team needs to think outside the IDE and start securing Linux distribution partnerships to build some fantastic reasons to use Mono in the enterprise.