Mono Project Releases 2.0
People often think of open source as being purely a Linux and BSD thing. Perhaps they're aware of open source on OS X as well, but in general Windows is seen as hostile to open source. And at the heart of the hostility surely must be Microsoft's proprietary .NET framework, right? But no: the Mono Project provides a cross-platform, open source implementation of .NET. Version 2.0 was released this week, and it has matured into a serious development framework.
Available for a variety of platforms (including Linux, Windows, OS X, and Solaris), Mono provides implementations of a number of core .NET APIs, including ADO.NET 2.0, ASP.NET 2.0, Windows.Forms 2.0, and the LINQ bits in System.Core and System.Xml.Linq. They don't cover the entire .NET API, but there's plenty here that an experienced Windows, Microsoft .NET developer will find familiar. Both C# 3.0 and VB8 are implemented by Mono 2.0.
In addition to the clean room implementation of the .NET APIs, Mono includes a number of APIs of its own designed to make it possible to port .NET applications off of the Windows platform. These include bindings to GtK+, SQLite, and Posix libraries. Obviously a Windows developer will need to learn new things to use these APIs, but they follow .NET design principles so the learning curve is fairly shallow.
There are also a variety of tools available for Mono developers, including a cross-platform IDE, a documentation framework, a debugger, and a code-checking tool.
The bulk of the code in Mono is released under the MIT X11 license, with the runtime being under the LGPL.
When the Mono Project was first announced, some people worried that Microsoft would step in and squash them with intellectual property lawsuits whenever they felt it was convenient. But now that it's been around for a few years, it seems safe to lay those concerns to rest. Now that Microsoft is even collaborating with the Mono authors on porting SilverLight, it seems that the project has the Redmond stamp of approval - and it would be difficult in any case to assert IP claims after such a long delay. There are other ways to port .NET applications to multiple platforms (such as Mainsoft's commercial tools), but for the average developer, Mono represents a free and mature implementation of the core of .NET.