Case in point: Moonlight, one of the newest additions to the Mono portfolio. When Linux users heard that President Obama's inauguration speech would be simulcast live on the Web, they were outraged to learn that the site would use Microsoft's Silverlight technology. But they didn't need to worry -- Moonlight is an open-source implementation of Silverlight that runs on Mono, and it was mature enough to display the speech. For once, Linux users weren't shut out of media just because it originated on the other side of the fence.
Fun and games with Mono
But Mono isn't just about keeping up with the Ballmers. Over the years it has evolved a number of interesting features that have elevated it above the status of being a mere clone. It's now a unique and valuable tool in its own right.
For starters, unlike Microsoft .Net, Mono is cross-platform. It runs not only on Linux but on other Unix-like operating systems as well -- including Mac OS X. It even runs on Windows. That means software written for Mono can very quickly be ported to a variety of different platforms with few changes to the underlying code, if any.
Recent developments have taken this concept even further. Today, Mono offers full static compilation -- the ability to take C# code written for the .Net platform and output native machine instructions, rather than CLR bytecode. The resulting code needs no just-in-time compiler and no runtime -- it runs on the CPU itself, just like code written in C or C++.
But it doesn't stop there. The Unity platform can take advantage of Mono's static compilation to build binaries for iPhone games, too. Because the results are fully native iPhone applications, Unity gets around Apple's notorious prohibition against bytecode-based virtual machines on the platform. A similar method allows developers to use Unity to build games for the Nintendo Wii console.