Moonlight, the open source implementation of Silverlight
for Unix systems has officially reached its 1.0 level. We
are feature complete, we pass all the Microsoft regression
test suites and we shipped support for Microsoft's Media Pack
for x86 and x86-64 architectures.

Moonlight is available as a Firefox plugin that can be
installed with a single click
from the
moonlight download page.

What is in Moonlight 1.0

Moonlight 1.0 contains our plugin that can be used in
Firefox 2 and 3 on Unix systems using the X11 windowing
system.

Moonlight 1.0 (and Silverlight 1.0) both come with a
graphics pipeline, video and audio frameworks and a javascript
bridge and neither one of them contains an actual execution
environment. The execution environment is the browser's own
Javascript engine. When developers build 1.0-based plugins
they script all of the functionality using the browser's own
Javascript engine.

The browser Javascript engine communicates with Silverlight
(or Moonlight) through the Javascript API exposed by the
plugin.

With Silverlight 2.0 and Moonlight 2.0 in addition to this
model where the browser's Javascript drives the interaction a
new model is available: the ECMA CLI execution system powers
the actual execution of the code and will deliver performance
anywhere between 20 to 300 times faster execution speed than
even the most modern Javascript implementation if you use a
strongly typed language like C# or Boo.

It is worth pointing out that Moonlight is provided both
for 32 bit systems and 64 bit systems on the launch date.

We are also hoping to expand our reach to other Unix
variants that use X11 like the various BSD systems and Solaris
and make codecs available for those.

How we got here

The development of Moonlight has been a fascinating
adventure. It all started at the Mix conference in May 2007 when
Scott Guthrie
introduced Silverlight 1.1. It was a bold move for Microsoft
to embed the ECMA CLI into their Silverlight 1.0 plugin.

It was during the dynamic language workshop at Microsoft
that I had a chance to have dinner with Jason Zander and Scott
Guthrie in an Indian restaurant in downtown Redmond. In this
dinner they discussed some of the design tradeoffs in
Silverlight and these would become part of our own
implementation a few days later.

At Mix 2007 I had the chance to meet Marc Jalabert from
Microsoft France. Marc invited me to the Remix event in
Paris but did not take the invitation seriously until he
offered us to demo Moonlight on Jun 21st.

Other than a spinning video and the DLR we did not really
have much code so on May 31st I sent an email to the team and
asked them to work on
an intense
21-day hackaton to bring Silverlight 1.1 to life on Linux.
By Jun 21st we had a demo working and we showed Silverlight
1.1 applications (with the CLR) running on Linux.

A few weeks passed by, and Jeff Jaffe from Novell asked me
to present our Moonlight to Bob Muglia as part of the regular
Microsoft/Novell interoperability meetings. After
struggling with the video projector for what seemed like an
eternity the Silverlight Chess and the Silverlight Airlines
demo came up on the screen on Linux.

In the meantime, we were in love with our Moonlight engine,
and we used to
build desktop
applications in addition to web applications.

After this meeting, I do not remember exactly how things
happened as too much happened too quickly, but Microsoft and
Novell agreed to collaborate on bringing Silverlight to
Linux.
We announced
the collaboration on September 5th.

It was early on, at that dinner with Jason and Scott that
the issue of how to properly license codecs for MP3, WMV and
VC-1 had been discussed. We knew that we could implement the
engine, but the question remained: how to get codecs to
end-users in a fully licensed way. This and other problems
had been already discussed and agreed on the collaboration
agreement. Microsoft would develop, distribute and maintain
their own Media Pack for Linux users and other Unix operating
systems.

The entire media work involved hard work at every level,
but it was worth the effort. We now have one of the best
open source media pipelines implemented. And it will only
get better with all the new features in Silverlight 2 for
adaptive streaming.

The Immediate Future

Silverlight 2.0 was a major upgrade from its original
announcement Silverlight 1.1. It is more complete, more
polished and has been future-proofed.

Microsoft has continued to help us all along in creating an
open source implementation of Silverlight. They have open
sourced the Microsoft DLR, the Microsoft MEF framework and the
crown jewels: the Microsoft Silverlight Control Library and
the Control Toolkit under the OSI-approved MS-PL licenses.
Without this it would have taken years for us to catch up.

Up until two weeks ago we could not see much in the screen
as a lot of Moonlight had inter-dependencies between various
subsystems. But once Larry Ewing's layout system landed in
our tree, magically many things started to come together.

Microsoft will be announcing the details about Silverlight
3 at their Mix conference in March in Las Vegas.

My wish list

I love Silverlight and the use of the CLR for building web
applications. That is just how I am wired up.

I still personally wish that Silverlight 2.0 had a JSon
interface to XAML, like the prototype
that Chris
Toshok did, or that Silverlight had a more fluent model
for application deployment. I would like the XAP model to be
entirely optional or non-existent for IronRuby or IronPython.