After a loving incubation period, the Moonlight
2.0 preview, an open source implementation
Silverlight for Linux has been released:
This is really the
have been looking for since Microsoft first introduced
Silverlight 1.1 and ever since
hack-a-thon to bring Silverlight to Linux.
This is the ECMA VM running inside the browser and powering
C# and any other CIL-compatible languages like Ruby, Python and
Boo. You can use Moonlight/Silverlight as a GUI
(this is what most folks do) or you can use it as the engine
your Python/Ruby scripting in the browser.
Installing Moonlight 1.9
page, select the platform and hit the download icon.
That will download and install the plugin in your Firefox
installation. You can then restart the browser, and you
should see this:
Then you can try out
of the test web sites we have been working on. This is
CNN's The Moment that uses
If instead of binaries you want to build Moonlight in the
comfort of your own living room while sipping margaritas,
fetch the source code for mono, mcs, mono-basic and moon from
the branch and build them in this order: mono, mono-basic and
While one hand holds your margarita, use the other one to
follow the instructions
to compile Mono from SVN.
Some Notes on this Release
Now some qualifications to this release:
This is a preview release. By this we mean that we
are not yet feature complete with Silverlight 2.0
feature-to-feature but we are relatively close. For
example, we do not yet pass the entire Silverlight GUI 2.0
test suite that was provided to us by Microsoft and you can
spot glitches in various web sites.
Security Sandbox: One of the reasons we delayed the
first preview of Moonlight for public consumption was that we
did not want to release Moonlight without the security
sandbox. In the pre-Moonlight days there was no reason for
Mono to implement a security sandbox, so we never had it.
With Moonlight a security sandbox is mandatory so
Moonlight 2.0 ships with the
Sandbox that was introduced in Silverlight 2.0. This
security system is very easy to understand, it is pretty
straightforward and is a lot easier to secure and audit than
something like CAS. I will blog about the security stack in
But even if we now have a security sandbox , we have not
completed the security audit.
Weekly Releases: Our current plan is to update the
plugin once a week during this preview/alpha period hoping
that we can get
reports and to ensure that we work in as many Linux
distributions as possible.
Debug Builds: During the preview/alpha cycle we are
shipping our code with debugging symbols hoping that this will
improve the quality of the bug reports that we receive.
This means that the plugin size instead of being 3.9 megs is
8.8 megs on average. This will change when we do the final
The Cool Toys
There are a number of cool toys on this release, the
foundation for many things to come. Here are some:
Silverlight Unix SDK: If you
2.4 and Moonlight SDK (not the browser plugin, but the
-devel package) you can now develop Silverlight applications
entirely in Unix.
In fact when you
install Eclipse4SL (a
Microsoft sponsored project) you need Mono 2.4 to build
Silverlight apps. With the Moonlight SDK you can skip an
entire step by having the SDK assemblies present at
I will do another blog on how to build Silverlight apps
from the ground up on Unix using the Moonlight SDK.
Microsoft MS-PL Controls: Instead of reimplementing
the high-level controls (buttons, Checkboxes, listboxes,
containers, calendars, datepickers, sliders) or the very
advanced controls (like a full database bound datagrid)
Moonlight reuses Microsoft's
sourced Silverlight controls.
Iron* Languages: In addition to C# you can run code
written in a variety of programming languages that target the
ECMA CLI. In
IronRuby and IronPython are open source implementations of
Ruby and Python done by Microsoft that can be used in
Silverlight but you can also use a variety of other languages
in the browser like Visual Basic or PHP (Phalanger).
Visual Basic Runtime: This is just a plug for the
work that Mainsoft did a few years ago. One of the things
that Silverlight ships with is a Visual Basic class library
for all the VB helper functions.
a few years ago a VB runtime written entirely in VB
We ship a
version of their assemblies as part of the Moonlight
Adaptive Streaming: This also deserves a blog entry
of its own. In addition to the support for HTTP-Streaming (to
support seeking and stream quality selection) Silverlight
allows developers to create their own transports to fetch
media and not be limited by HTTP.
For instance, a developer could write a transport that
fetches different bits of the media from different servers.
Or use bittorrent to fetch the media instead of depending on a
single server. More in an upcoming blog entry.
DeepZoom: with all of the bells and whistles that
Hard Rock Memorabilia on Moonlight/Linux.
Silverlight 3.0 APIs: As we were implementing the
2.0 APIs a handful of features from 3.0 fit naturally into our
design. So instead of going the extra mile to limit things
in 2.0, we just expose the 3.0 APIs in a forward-compatible
This Moonlight preview includes a few 3.0 features:
- Out-of-browser support (although this is currently
a manual process, not yet automated, and without a
- WritableBitmap class.
- 3.0 pluggable media pipeline.
- SaveDialog support.
There are more details
Toshok's blog entry.
The pluggable media framework is very exciting to us,
because it means that developers can author their own
codecs without waiting for Silverlight or Moonlight to add
support for it.
We have developed a handful
source codecs for Dirac, Vorbis and ADPCM that can be used
with Silverlight 3/Moonlight Preview based on existing C# and
Java implementations. Hopefully someone will help us fill in
the blanks with more codecs (like Theora).
out our README file.
In the words of Paris Jobs, this release is nothing short
If you want to follow the progress of various Moonlight
activities on Twitter, you can follow these folks:
the twitter account for project news.
in charge of the Mono metadata and IL verifier and
creator of Mono.SIMD.
Mono's security and cryptography Czar and graphics
Moonlight core hacker, in charge of Moonlight's layout
and performance and also the creator of the Linux
logo and co-developer of F-Spot.
Moonlight team leader and maintainer of the core of
Moonlight. ex-Winforms team lead.
In charge of the Silverlight 2.1 API, Mono's Linker
Codec hacker, hard-problem solver, iPhone support,
Mono on Mac.
XML, LINQ to XML, WCF and pluggable codec author.
Recovering winformista, in charge of the new toggle
media pipeline, visual basic runtime, vbnc compiler
(Mono's VB compiler written in VB).
text layout engine, and ex-Evolution hacker.
All things XAML, a recovering Winformista/Ilasm-ista.
A must-follow twitterista, considering that
even Aimee_b_loved follows him.
Some of the team members are not twitteristas yet.
Alternatively, if you are not really into twitter, you can
always check our aggregated blogs