During those past holidays I've been taking a very very quick look at Mono. It's an open source clone of the .net Framework which can run on windows, Linux, MacOs, etc, it is sponsored by Novell.
Claims partial support for ASP.NET, ADO.NET, Windows.Forms and is binary compatible, also claims full support for C# 3.0, that is: in ideal conditions you can take the exe or dll from visual studio and run it over Linux. I've tried that with a "hello world", and it works :).
It is not only multiple OS capable, but also runs on ARM, s930, PowerPC. I've not tried that.
They provide a migration analysis tool which inspects your program to look for possible incompatibilities when running it over Mono.
The fastest way to start looking at it is downloading a linux vm with all installed selecting the VMWare download in http://www.go-mono.com/mono-downloads/download.html
Mono has created a control toolkit that mimics Windows.Forms so you can use just the same controls in windows, linux, MacOs. They have also implemented Gtk# which means that you can use gnome libraries in Windows, Linux and MacOs.
There is also an integrated development environment called MonoDevelop which is quite pulished, supports plug-ins for nunit, subversion... You cannot visually edit asp.net pages (sincerely I do not know if it's good or bad, think VS editor is a bit crappy) or windows forms apps (if you use Gtk# instead of Windows.Forms you can). You can open visual studio 2005 projects with it, and work with them.
My feelings about it...
I think that this is a tremendous effort to provide a reliable, really multiplatform framework implementation, and MS should sponsor, support and learn from such an initiative, creating synergies and enhancing both Mono and .NET. It makes me sad reading that if you have used reflector to look at .NET code you cannot contribute to mono.
I want to test it properly before giving my opinion about technical issues and controls usability.
The problem when selling this solution to a customer is that such a big effort looks a bit "unfocused": there are plenty of things not fully implemented and some other that are being created anew while the others are not fully finished...
It's not clear if they have focused more on the client side or on the server side, and that is a problem, you could say "on both of them" but I'll have to see it to believe it. There are few widely known applications (except maybe Paint.Net, but its not fully ported it seems) that make you feel confident about it.
So... what do I want to do? I'm trying to port some of my applications to Mono, and get real feedback about it.
I hope someday I could propose one of my customers to use Mono for their multiplatform apps.