Novell's Mono project has been a lightning rod for comment and criticism, along with the company in general, primarily due to the Microsoft / Novell patent agreement. While the ideas behind Mono were noble in purpose, the association with Microsoft makes it a non-starter for a fairly substantial number of open source developers. But that doesn't change the fact that corporate America has a substantial investment in custom software developed using Microsoft development tools. (See this article for more information on the Mono project)
Microsoft announced Silverlight in May of 2007 at their MIX conference held in Las Vegas. The first Community Technology Preview (CTP) was released a few months after that. The design goal behind Silverlight was to make it possible to build applications for the Web that used essentially the same code as you would use for a desktop application. From an implementation perspective that translates to a version of Microsoft's Common Language Runtime (CLR) running inside the browser. The actual name is the Dynamic Language Runtime (DLR) with initial browser targets including Internet Explorer on Windows and Firefox and Safari on both Windows and Mac OS X.
Linux is obviously missing in the list of supported platforms--at least it was in the beginning. That's where Moonlight comes in. The need for Moonlight might be questioned by many Linux purists, but the fact remains that there will be websites developed using Silverlight, and unless there is an equivalent on the Linux desktop you won't be able to view that content. Miguel de Icaza explains:
"From my perspective, it is crucial for Linux to have good support for Silverlight because I do not want Linux on the desktop to become a second class citizen ever again."
Understanding what Silverlight / Moonlight brings to the table is a good starting point for making a rational assessment as to its value. From the Moonlight website the stated goals of the project are:
Silverlight 1.0 has a number of basic capabilities focused around multimedia and Rich Internet Applications (RIAs). Scott Guthrie has a good blog post that describes what Silverlight 1.0 entails. Version 1.0 is somewhat limited since it does not include support for the .Net framework.' To get that you'll need Silverlight 1.1. Moonlight 0.8 does provide some support for Silverlight 1.1, but it's still a work in progress.
With Silverlight 1.1 Microsoft delivered support for Visual Basic .Net and C#. It also provides support for using the Windows Presentation Foundation (WPF) programming model. WPF uses XAML (eXtensible Application Markup Language) to describe the user interface elements and a .Net language to implement the logic to respond to user actions.
Microsoft is currently in the final stages of the beta cycle for Silverlight 2.0. At the same time Novell is finishing up their beta of Mono 2.0. Once Microsoft releases Silverlight 2.0 the Novell folks will have a firm target to shoot at.
Two releases of Moonlight are available on the go-mono website. The first (0.8) supports Silverlight 1.0 and some 1.1 features. The second is an experimental version aimed at Silverlight 2.0. All you have to do to try it out is click on the download button to load the extension in Firefox. The next thing you'll want to do is visit some of the Silverlight demo sites to see what types of content you can create. There's a good list on the Mono Moonlight page under testing.
The biggest emphasis to this point has been on making it possible to view Silverlight content on Linux. Developing for Silverlight / Moonlight has not been very high on the priority list. Microsoft's tool offerings include Visual Studio for code development and debugging and Expression Blend for creating the user interface. This is a new programming paradigm for many old-school developers and requires a different way of thinking.
Monodevelop is the Mono project's answer to Microsoft's Visual Studio. While it's nowhere near the level of sophistication of the latest release of Visual Studio it does provide a reasonable alternative for building C# applications on Linux. The current release version does have some support for Moonlight at a very high level. Monodevelop 2.0 is in an early alpha release state and will include support for Mono 2.0 when it is released.
Where's it Going?
Now that they've proved it can be done there's really no reason not to continue following Microsoft's path with new Moonlight releases. In reality it means that support on Linux will always lag behind Windows for some time to come. Hopefully the Microsoft / Novell working relationship will reduce that lag to some tolerable amount.
In the final analysis there is really nothing to be gained if you have no interest in viewing sites built with Microsoft Silverlight. The number of sites is somewhat limited at this time and those commercial (read non-Microsoft) sites that do use Silverlight typically have an alternative site if you don't have it installed. For those that have an interest it's a relatively painless process to load the Firefox Moonlight plugin and give it a try. Go ahead, you know you want to.
This article was first published on LinuxPlanet.com.