Moonlight for Debian

  • FYI this page is out of date

Components

Moonlight consists of a "core" library, which supposedly functions with any plugin-capable browser, plus "bridge" libraries which are per-browser helpers (required for embedded Moonlight instances to get any access to page click events, and so on). Only two bridges exist currently, for FF3 and FF2 (or, strictly speaking, the underlying XUL 1.9/1.8). For both Debian and modern Ubuntu, only 1.9 is available (and therefore package support built).

Runtime Profiles

Moonlight can be compiled with support for Silverlight 1.0, and Silverlight 2.0 profiles. With only the 1.0 profile enabled, Moonlight is essentially a simple C++ plugin (i.e. it has no build or runtime dependencies on Mono). The 2.0 profile, conversely, requires a very recent Mono to build and run.

Progress

Moonlight 1.0.1 is packaged in Ubuntu 9.04+ and Debian Testing/Unstable - as well as in most other distributions.

Issues

Codecs

Multimedia functionality in the Debian packages is currently provided by linking against FFmpeg (libavcodec). Silverlight mandates nine codecs: five video codecs and four audio codecs. Support for these codecs is actively being developed by FFmpeg upstream, so the multimedia capabilities of Moonlight would depend on the vintage of FFmpeg it's built against. Below are a list of those codecs, links to sample videos provided by Mplayer HQ (apologies for some of the content, but it's a good repository for samples), and compatibility reports. To test yourself, please use the "ffplay" command which should show the same compatibility as Moonlight would. Original list is available at MSDN.

Audio Codecs

Video Codecs

In the event that codec support for a specific case is missing (e.g. the WMA9 case), the plugin will offer the user the option of downloading some licensed, binary-only codecs from Microsoft.com (i386 and amd64 architectures only).

Silverlight Compatibility

The Novell-Microsoft deal requires that Moonlight be compatible with Silverlight - a sorta-kinda-compatible Gnash-style plugin isn't good enough.

00:59:14 <meebey> "and is compatible with Microsoft's Silverlight"
00:59:22 <meebey> how do you ensure that its compatible?
01:00:23 <meebey> if there is a valid ensurance of compatibility then I agree that the warning is useless and/or not valid...
01:00:26 <miguel> Because we pass their conformance test suite
01:00:45 <meebey> so whatever works on silverlight will do on moonlight?
01:00:48 <miguel> Thats part of the MS/Novell agreement, we pass the suite, and in exchange they distribute the media codecs
01:00:49 <miguel> Yes
01:00:55 <meebey> great
01:00:58 <meebey> thats all I wanted :)

The plugin is not yet completely compatible, but it is a requirement actively sought by not only Moonlight contributors, but Microsoft too. The "Install Silverlight" button shown on any Silverlight website when you don't have the plugin installed currently redirecs to the Moonlight page for a Linux .xpi file to be downloaded. Browser packagers will hopefully be able to help in finding a mechanism to "catch" those redirects, and offer packages rather than an upstream .xpi.

Endianness

Moonlight 1.0 ought to work on any architecture (Moonlight 2.0 will need Mono architectures). However, media support is little-endian-only. There's a bug tracking the big-endian support at Novell bug 443688

Resolved Issues

Patents

Moonlight 1.0 is essentially a XAML renderer with codec support. All plugin logic is handled by the browser's Javascript engine.

XAML is covered by an irrevocable patent grant from Microsoft, as shown here.

Moonlight's codecs can either be offered by libavcodec (as already found in the Debian archive, and subject to its own patent analyses) or by a fully licensed binary codec pack from Microsoft. Moonlight therefore carries none of its own risks - if the codecs are considered risky, then that's FFmpeg's fault (or you can simply use the binary codec pack from Microsoft which has no such patent questions). If you attempt to view video content which FFmpeg cannot handle, then the codec pack will be offered automatically.

DFSG

Upstream Moonlight 1.0 has no non-DFSG components

Licensing

Moonlight's tarball contains components with several licenses - MIT/X11, Ms-PL, and LGPL2 (no later version). However, not all components are actually compiled in the package (e.g. the Ms-PL components are not used at all in Moonlight 1.0)

There is also a fourth license in play - FFmpeg in Debian is compiled with --enable-gpl, and the result is GPL2+. FFmpeg is linked only against the unmanaged (i.e. platform-specific .so file) libraries, libmoon.so.0 et al, which is all LGPL2. The resultant bundle is GPL2, without issue. The MIT/Ms-PL sections are for managed (platform-neutral) libraries which do not touch link to or derive from FFmpeg in any way, shape or form.

Debian-Multimedia Moonlight Package

There is a Moonlight package provided by the popular third party debian-multimedia repository, with packaging work by Christian Marillat. This package contains the following problems: