(There is a debate going on between Bryan Young and Anthony Eden over .NET yesterday. I just want to add some fuel to the fire.)
These are three platforms for developing and deploying software systems that has become popular over the years.
If you look at their adoption curves, you will see something very similar:
Windows started out as a single process under DOS with non-preemptive multitasking capabilities and a slick API for writing Windows programs (or was that a plug-in?). People liked it. They started to write little programs for it.
A few years and versions later, its popularity grew, and finally SQLWindows, PowerBuilder, Visual Basic made it the platform of choice for the client platform.
Java started out as a virtual machine that runs on several operating systems with a very intuitive language and a six package API that included a five widget GUI toolkit. Class files are portable. People liked it. They started to write little programs for it.
A few years and versions later, its popularity grew, and finally J2EE, IntelliJ IDEA, made it the platform of choice for the Web development.
Linux started out as a clone of the Minix operating system with all standard, and familiar, tools and APIs. It's free. People liked it. They started to write little programs for it.
A few years and versions later, its popularity grew, and finally Mono/C#/.NET made it the platform of choice for Free Software applications.
Mono also has some of that "people like it" quality itself. Whether it will become a dominant platform for Free Software development remains to be seen. But the seed is already there.
I can't speak for others, but I find myself liking Mono the same way I liked my console based Slackware Linux (in 72 floppies) back in 1994, the same way I liked my AWT based Java applet (no new JDK 1.1 Events, no Collections, no Swing) back in 1996, and the same way I liked my GNOME based desktop (no Nautilus, crashes daily) in 1998.