The first beta release of Moonlight 1.0, an open source implementation of Microsoft's Silverlight framework, is now available for download from the project's official web site. This release is the first step towards bringing robust Silverlight compatibility to the Linux desktop.

Development on Moonlight began last year after Microsoft demonstrated Silverlight at MIX 07. Lead Mono developer Miguel de Icaza and his team produced a working Moonlight prototype after an intense 20-day hackathon during which the enthusiastic participants produced thousands of lines of code. When Silverlight 1.0 was officially released in September, Microsoft announced plans to collaborate with Novell's Moonlight developers in order to ensure full Silverlight support on the Linux platform. Microsoft supplied test suites and also agreed to make binary audio and video codecs available for the Linux plugin.

Moonlight 1.0 is implemented in C++ and is distributed as a self-contained Firefox plugin. It leverages the browser's own JavaScript interpreter to support the scripting capabilities of Silverlight 1.0. The plugin itself is entirely open source and is licensed under the GNU LGPLv2. It is currently only available for x86 and x86-64 architectures, but support could potentially be added for additional architectures in the future.

The plugin does not include the proprietary codecs that are required to support Silverlight's multimedia formats. When users visit a web page with Silverlight content that uses the codecs, a message dialog is displayed that offers to automatically download Microsoft's media pack, which provides the proprietary codecs in binary format. It is also possible to compile Moonlight from source with ffmpeg instead of using Microsoft's codecs. For more details, check out de Icaza's blog entry about the Moonlight media stack.

I've tested the plugin with Ubuntu 8.04 and Firefox 3 on my main desktop computer. I've experienced one crash so far, but it's working relatively well for a beta release. The developers have published a list of web sites with Silverlight 1.0 content that you can use for testing purposes and they have ranked how well each one works with Moonlight. It does a great job with some of the more sophisticated ones, such as the chess viewer.

The plugin also includes some simple tools to aid Silverlight debugging, including an XAML inspector, a properties display, and a source list that makes it easy to view XAML files and other media assets that get stored in the browser cache.

Moonlight is not compatible with Silverlight 2.0 yet, so you will see an error message or an image prompting you to install Silverlight when you encounter pages that require 2.0. The Moonlight team is working swiftly to implement 2.0 support and expect to have a 2.0 alpha ready by March. The 2.0 version will use Mono to support execution of C# and other languages that run on Microsoft's open source Dynamic Language Runtime.

The progress that has been made so far is enormous and the plugin is a very impressive achievement. Although there is still much work to be done before Moonlight provides feature-parity with Silverlight, the new beta release demonstrates the viability of the project and the value that it brings to the Linux platform.

Further reading

