Moonlight is an open source implementation of Silverlight (http://silverlight.net), primarily for Linux and other Unix/X11 based operating systems. In September of 2007, Microsoft and Novell announced a technical collaboration that includes access to Microsoft's test suites for Silverlight and the distribution of a Media Pack for Linux users that will contain licensed media codecs for video and audio.
Our goals are:
- To run Silverlight applications on Linux.
- To provide a Linux SDK to build Silverlight applications.
- To reuse the Silverlight engine we have built for desktop applications.
The MoonlightRoadmap includes current Moonlight planning.
Table of Contents
Using Moonlight
Getting Started
Up-to-date packages ready to test are available from:
Our supported architectures and operating systems lists the platforms that we currently test the binary packages of Moonlight on.
Once you install Moonlight from the above URL to play video or audio, you will be prompted by Moonlight to install the Microsoft Media Pack for Moonlight available from Microsoft.
Alternatively, you can build Moonlight from source code and link against ffmpeg codecs on your own.
Groups and Mailing List
Discussion on the development of Moonlight happens on the moonlight-list (http://lists.ximian.com/mailman/listinfo/moonlight-list) mailing list, topics on new features of Mono and the .NET framework are discussed in the mono-olive (http://groups.google.com/group/mono-olive) group.
It is also recommended that interested parties subscribe to the mono-devel-list (http://lists.ximian.com/mailman/listinfo/mono-devel-list) (for general issues on Mono development and the mono-svn-patches list (http://groups.google.com/group/mono-svn-patches) that tracks all of the Subversion commits that go into Mono's source code control repository.
We are also using the #moonlight IRC channel on irc.gnome.org
Reporting Bugs
- [Query (http://bugzilla.novell.com/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&classification=Mono&product=Moonlight&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&cmdtype=doit&version=1.0.0&version=unspecified)] [Add (http://bugzilla.novell.com/enter_bug.cgi?&bug_file_loc=http%3A%2F%2F&bug_severity=Normal&bug_status=NEW&cf_foundby=---&comment=Description%20of%20Problem%3A%0D%0A%0D%0A%0D%0ASteps%20to%20reproduce%20the%20problem%3A%0D%0A1.%20%0D%0A2.%20%0D%0A%0D%0A%0D%0AActual%20Results%3A%0D%0A%0D%0A%0D%0AExpected%20Results%3A%0D%0A%0D%0A%0D%0AHow%20often%20does%20this%20happen%3F%20%0D%0A%0D%0A%0D%0AAdditional%20Information%3A%0D%0A%0D%0A%0D%0A&contenttypeselection=text%2Fplain&flag_type-2=X&form_name=enter_bug&op_sys=Other&priority=P5%20-%20None&product=Moonlight%20&version=1.0.0)] Moonlight 1.0
- [Query (http://bugzilla.novell.com/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&classification=Mono&product=Moonlight&bug_status=NEW&bug_status=ASSIGNED&bug_status=NEEDINFO&bug_status=REOPENED&cmdtype=doit&version=2.0.0)] [Add (http://bugzilla.novell.com/enter_bug.cgi?&bug_file_loc=http%3A%2F%2F&bug_severity=Normal&bug_status=NEW&cf_foundby=---&comment=Description%20of%20Problem%3A%0D%0A%0D%0A%0D%0ASteps%20to%20reproduce%20the%20problem%3A%0D%0A1.%20%0D%0A2.%20%0D%0A%0D%0A%0D%0AActual%20Results%3A%0D%0A%0D%0A%0D%0AExpected%20Results%3A%0D%0A%0D%0A%0D%0AHow%20often%20does%20this%20happen%3F%20%0D%0A%0D%0A%0D%0AAdditional%20Information%3A%0D%0A%0D%0A%0D%0A&contenttypeselection=text%2Fplain&flag_type-2=X&form_name=enter_bug&op_sys=Other&priority=P5%20-%20None&product=Moonlight%20&version=2.0.0)] Moonlight 2.0
Licensing
Moonlight 1.0 is licensed under the terms of the GNU LGPL, it is a pure C++ engine.
Moonlight 2.0 contains code that is licensed under the terms of the GNU LGPL and the MIT X11 licenses, it includes the graphical C++ engine, the Mono Runtime and the Mono class libraries.
The Microsoft Media Pack is a product distributed by Microsoft that includes a license to the various media codecs for video and audio and is available from Microsoft's web site for Moonlight to consume.
Users of Moonlight interested in using this on embedded systems should contact the Mono at Novell team (http://www.go-mono.com/contact) to obtain a commercial license. See our Licensing page for details.
The Microsoft covenant for Moonlight users is posted here (http://www.microsoft.com/interop/msnovellcollab/moonlight.mspx).
Developing Moonlight
We have released the first Beta release, see the MoonlightBeta1 page for more information.
To build Moonlight on Linux, you need to get a source code distribution either from a released tarball or from SVN. You need to get the module "moon".
Steps:
- Install dependencies for Moonlight from your distro:
- Gtk+ 2.0 development package
- ffmpeg from SVN (Optional, can be skipped, but moonlight won't be able to play any media)
- Use: svn co -r 10885 svn://svn.mplayerhq.hu/ffmpeg/trunk
- libswscale is an external repository. Update this to -r 25850
- Mozilla NSPR development package
- one of: nspr mozilla-nspr firefox-nspr xulrunner-nspr seamonkey-nspr)
- Mozilla NSS development package
- one of: nss mozilla-nss firefox-nss xulrunner-nss seamonkey-nss
- Mozilla XPCOM
- one of: xpcom mozilla-xpcom firefox-xpcom xulrunner-xpcom
- Alsa
- Download and install the moon tarball or moon SVN module from SVN:
- configure like this: ./configure
- Build and install, run: make && make install
- To install the plugin in your home: make test-plugin
Packaging
Novell has packaged one-click installable plugins for Firefox 3 and Firefox 2 for multiple distributions.
Debian is tracking the packaging process of Moonlight here:
- Debian Mono Group (http://wiki.debian.org/Teams/DebianMonoGroup/Moonlight)
Testing
To check the status of the various sites that we are testing for Moonlight, check:
- Moonlight_1.0_TestSites (http://go-mono.com/moonlight/MoonlightStatus.aspx)
- Moonlight_2.0_TestSites
Alpha support for Silverlight 2.0
Information about the hack-a-thon for Siverlight 2.0 is in Moonlight2Hacking.
Currently support for Silverlight 2.0 is in pre-Alpha stage, but if you want to test it, or contribute to the code, you will need to:
- Obtain Mono from SVN or AnonSVN (version 2.2 is not enough).
- Run the configuration for Mono like this:
- ./autogen.sh
- Install Mono
- make install
This will produce a new compiler smcs which defaults C# to the 3.0 version and will include the Silverlight assemblies by default in a compilation. You will use this compiler to generate assemblies and libraries that are intended to be ran on Microsoft's Silverlight or Mono's Moonlight.
Then build Moonlight (now it is with the managed code support by default):
- Obtain Moonlight source code from SVN or AnonSVN
- Run the configuration for Moonlight like this:
- ./autogen.sh
- make install
Development Notes
Users interested in details about the implementation of Moonlight can read our MoonlightNotes.
Users interested in plans for the Silverlight 2.0 implementation effort can read our Moonlight2Hacking page.
Specification details that are not very obvious can be found in MoonlightQuirks