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 applications on Linux.
provide a Linux SDK to build Silverlight applications.
reuse the Silverlight engine we have built for desktop applications.
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.