We have had a cordial relationship with many developers at
Microsoft for quite some time. Scott Guthrie and
Jason Zander provided us with informal advice on
how to implement Moonlight, and we also have good relations with
the open source teams working on IronPython and IronRuby.

Today we are formalizing a collaboration between Microsoft
and Novell with the explicit purpose of bringing Silverlight
to Linux and do this in a fully supported way. The
highlights of this collaboration include:

Microsoft will give Novell access to the test
suites for Silverlight to ensure that we have a
compatible specification. The same test suite that
Microsoft uses for Silverlight.

Microsoft will give us access to the Silverlight
specifications: details that might be necessary to
implement 1.0, beyond what is currently published on
the web; and specifications on the 1.1 version of
Silverlight as it is updated.

Microsoft will make the codecs for video and audio
available to users of Moonlight from their web site.
The codecs will be binary codecs, and they will only
be licensed for use with Moonlight on a web browser
(sorry, those are the rules for the Media codecs[1]).

Novell will implement Silverlight 1.0 and 1.1 and
will distribute it for the major Linux distributions
at the time of the shipment. We will offer some kind
of one-click install for Linux users (no "Open a
terminal and type su followed by your
password..." as well as RPM and DEB packages for the
major distros and operating systems.

This is an historical collaboration between an open source
project and Microsoft. They have collaborated with other
folks on the server space (Xen and PHP) but this is their
first direct contribution to the open source desktop.

Microsoft benefits by making Silverlight reach the Linux
and BSD spaces. We benefit by ensuring that users of open
source operating systems get access to sites that adopt
Silverlight to deliver content or spice up their web apps.

[1] Currently Moonlight video support has been prototyped
using the fabulous and LGPLed ffmpeg engine for video
and audio. We are unable to redistribute this code
commercially due to licensing conflicts. Update: This
means that individuals that want to use a 100% pure free
software setup can do so. We are unable to redistribute this
edition though.

The binary codecs will initially support x86 and x86-64,
with other platforms supported on an as-needed basis.
Update: The full list of codecs supported in
Silverlight 1.0 are listed here
(scroll down a bit).

Update: Some comments indicate that people would
like to use GStreamer as the media backend (as GStreamer
already has licensed codecs and some people might have
purchased them already). We would be glad to merge any
patches that people send us (copyright assignment required) to
add support for GStreamer.

Update: Some folks are asking whether they could use
OGG for the video rendering in Moonlight. Today this is
already possible because the media engine we use to prototype
is ffmpeg which has support for this. From the standpoint
of a desktop developer this might be enough, but for the web,
the problem becomes an issue of compatibility with the
Microsoft Silverlight implementation.

We will bring up with Microsoft the issue of adding a new
codec, but I suspect that since they are pressed to minimize
the download size this might be difficult. There are other
competing codecs though that people on the Silverlight groups
are fairly vocal about and my eclipse our request. If you
want official Ogg support from Microsoft, please bring this up
on the Silverlight.net
forums, Microsoft does listen to user feedback.

Update: The "Silverlights"

Update: There are two versions of Silverlight. The
version released today (1.0) is basically a canvas that can be
programmed through the browser's Javascript engine. ie, you
can use "View
Source" on your browser to see how everything is done.

The upcoming version (1.1, a year from now) extends the
browser plugin with a embedded CLR runtime. This is what got
us in the Mono team interested in the technology was precisely
this.

Moonlight was originally designed to only implement 1.1,
and only later we noticed that it was forwards compatible with
1.0 and that we could deliver both 1.0 and 1.1.

For developing 1.0 applications the only tool you need is
either a text editor or a programming language that supports
the "print" command. Designers are useful, but not
mandatory (on Windows Blend supports Silverlight, and there
might be others). We are building an open source designer
ourselves for using on Linux.

If you want to take advantage of the features in 1.1, you
will most likely want a .NET compiler and the Silverlight 1.1
libraries to link against. Our next release of Mono
(1.2.6) contains a C# 3.0 compiler as well as the Silverlight
1.1 libraries that you can use to target Silverlight 1.1 using
Mono on your favorite OS. Of course, with this setup you
lose the ability to "View Source" as it now features compiled
code in binary form (although if you really want to, you can
just use Lutz's Reflector to look at it).

Today our plugin depends on Mono on both cases (1.0 and
1.1), but we are exploring our options to remove Mono from the
1.0 case as it would simplify our profiling and valgrinding of
our C++ runtime (valgrinding Mozilla + Mono + Moonlight + a
web site is a bit slow).

Working Well With Others

We will be supporting Firefox and Linux
initially (that is our first goal).

But we are looking forward to work with developers from
other operating systems (BSD, Solaris) and other browser
(Konqueror, WebKit and Opera) to ensure that Moonlight works
fine on their systems.

Thanks

Getting this collaboration in place took a lot of work on
both ends: both the business and legal teams in both companies
as well as various people inside Microsoft that endorsed the
idea of having an independent implementation of Silverlight
endorsed by Microsoft.

Special thanks to Bob Muglia at Microsoft and Jeff Jaffe at
Novell for getting the official collaboration rolling.

Scott
Guthrie, Bill Hilf and many members of his team that are
transforming Microsoft from the inside out and have championed
approaching the open source community. Brian Goldfarb made
sure that the clock ticked and we got the agreement in place
and Marc Jalabert invited us to demo Moonlight at the Paris
ReMIX, which led to our 21-day hackathon. And everyone that
has so kindly answered our questions on .NET and Silverlight
and have championed us from the inside.

In the Novell side, Frank Rego, Denzil Harris, Patrick
McBride and Guy Lunardi worked around the clock to get
everything in place for this launch.

And of course, none of this would be possible without all
the members of the Mono team that made our original
proof-of-concept possible on June 21st and that have
continued to work on all the various pieces that make up
Moonlight possible.

Oh, by the way

We are hiring.

If you are a talented software developer with experience in
C#, C++, graphics, fonts, audio, Mozilla, Opera, WebKit, QA,
packaging or Gtk+ and you do not mind intense and grueling
hours of work to produce something millions of people will see
and use, send me an email.

Interviews with the Mono team are usually conducted over
email and usually include a complicated and completely useless
programming exercise that you complete at home.

Watching Moonlight in Action

If you are attending the IBC2007 conference in Amsterdam
you will be able to see Moonlight in action at the Microsoft
booth. Hacker extraordinaire Rolf Bjarne (of Mono's
VisualBasic.NET fame) will be demonstrating Moonlight running
on Linux at the show.

Alternatively, if you want to try out Moonlight yourself,
you will need to follow the instructions on our Moonlight
page. It currently requires users to compile code from
our Subversion repository, we will try to put together in the
next few weeks a VirtualBox/VMware image for people to try it
out easily.