Moonlight for Debian
FYI this page is out of date
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).
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.
Moonlight 1.0.1 is packaged in Ubuntu 9.04+ and Debian Testing/Unstable - as well as in most other distributions.
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.
WMA 7: Windows Media Audio 7 - Plays (Ubuntu 8.04+)
WMA 8: Windows Media Audio 8 - Plays (Ubuntu 8.04+)
WMA 9: Windows Media Audio 9 - Does not play (Ubuntu 9.04)
MP3: ISO/MPEG Layer-3 - Plays (Ubuntu 8.04+)
WMV1: Windows Media Video 7 - Plays (Ubuntu 8.04+)
WMV2: Windows Media Video 8 - Plays (Ubuntu 8.04+)
WMV3: Windows Media Video 9 - Plays (Ubuntu 8.04+)
WMVA: Windows Media Video Advanced Profile, non-VC-1 - Plays (Ubuntu 8.10+)
WMVC1: Windows Media Video Advanced Profile, VC-1 - Plays (Ubuntu 8.04+)
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).
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.
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
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.
Upstream Moonlight 1.0 has no non-DFSG components
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:
- Binary DLLs, and Silverlight.js files, remain
- Core plugin is not kept distinct from bridge libraries (not a problem for Debian per se, but when more bridges are written for Webkit et al, this could be important)
- debian/links seems to have made some fairly haphazard links from the package install directory to a few browsers' plugins directories. Is there a centrally parsed plugins folder for Debian Xulrunner apps? Ubuntu seems to use /usr/lib/xulrunner-addons/plugins/ across every 1.9 browser, it's not clear what Debian does or what either does for 1.8
Hard browser dependencies need to be made more liberal (iceweasel (>= 3.0.0) is wrong if the package is making links for iceape and mozilla too). This also benefits Ubuntu, which has firefox but not iceweasel.
A tip from the Ubuntu Mozilla team, which may not apply to Debian: the custom debian/control fields Xb-Npp-Applications, Xb-Npp-MimeType and Xb-Npp-Name are used for integration between the package manager and Firefox's "search for plugin" function - these are well worth including, even if Debian is behind the curve on support. See gnash source package in Ubuntu.
- FF3 bridge is incorrectly installed (symlink is installed, but the underlying lib is not)
Moonlight project homepage, and installation instructions at http://www.mono-project.com/docs/web/moonlight/