Moonlight in 21 days

| by James Vastbinder Follow 0 Followers on Jun 21, 2007. Estimated reading time: 2 minutes |
After receiving an invitation to participate in ReMix07 in Paris at the end of May, the Mono team literally spent night and day working on their implementation of Silverlight called Moonlight.  In Miguel de Icaza's own words:

On the 31st( of May), other than having learned about Silverlight, explored how to decode video, experiment a little with video and started planning for an implementation we had nothing to show.

Using only the Sliverlight 1.0 API as a guide, email communication and IRC they were able to implement the following in 3 weeks time:

June 14th:

  • Text renders (Jeff).
  • Radial gradients (Sebastien).
  • Attached properties are now handled by Canvas on changed children.
  • Implemented the downloader (Toshok).
  • Managed downloader (Miguel).
  • Mouse enter/leave events (Miguel).
  • It is possible to load images from the net
  • everaldo gets plugin using embedding instead of the hack we were using.

June 15th:

  • Inlines and Runs in text
  • Performance improvements
  • Mouse event routing to individual objects.
  • Loading of custom objects from XAML files using assemblies.
  • Everaldo gets plugin to change surfaces with javascript.
  • Sebastien starts work on porting the surface to Gtk# with Silverlight, just in case.

June 16th

  • Loading of xaml dependency files (Miguel, Jackson).
  • Toshok optimizes rendering using bounding boxes.
  • Jackson hooks this dependency loader.
  • Jeff refactors the video engine to make it reusable.
  • C# bindings.

June 17th

  • Jeff implement VideoBrush
  • Sebastien implements the various image properties, so that they render with the specified parameters.
  • Event system updated, Surface now gets events in the correct order.
  • Animation parser fixes, surface animations are now properly timed.
  • Everaldo added support for XAML content in HTML pages (referenced with '#' in a url).
  • Jackson got support for x:Class on XAML loading.

June 18th:

  • Rolf implemented support for nullable types in the Moon typesystem and bindings to map Nullable in the C# code to our C++ Nullables.
  • Jeff implemented support for having VideoBrushes share a MediaElement.
  • Jeff implements brushes for Runs.
  • Paolo helps with the profiling of Moonlight's Surface and helps us get interaction smoother.
  • Chris and Sebsatien worked on tuning the performance for rendering on the screen.
  • Chris improves animations and screen refreshes, and sets up xlib-based image surfaces.
  • Jackson completes Path Data parsing, the underlying infrastructure was done by Sebsatien enabling the remaining samples from Sam Ruby's sample site to render.
  • Jackson and Sebastien implement the various segments that are missing for the Path rendering
  • Jackson implemented XAML support for

June 19th:

  • Javascript bridge to DependencyObjects works, the Javascript-controlled XAML Clock sample works now.
  • Collection iterators are implemented
  • Work on proper browser shutdown.
  • Many missing managed bindings are implemented by Rolf.

The project statistics are astounding with 38k+ lines of code written in a very short time period and the screenshots speak for themself.  The idea  to allow Moonlight to be hosted in a widget allowing Linux applications to host Silverlight content is very compelling. Congratulations to the Mono team for their accomplishing so much in such a short amount of time on Moonlight.

Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

To be Agile or not to be Agile by James Vastbinder

An area of interest I should have pulled out in the initial news posting concerns how Moonlight was developed. The Mono team built an impressive artifact in only 21 days.

How they did it is just as impressive. It was only through a community effort, constantly seeking feedback and maintaining a laser focus on their deliverable they were able to deliver this release of Moonlight.

- When their initial plan to use C demonstrated constraints they could not live with, they moved to C++.
- After receiving input from Scott and Jason of MSFT, they modified their plans once again
- They may have to replace ffmpeg as the video rendering engine and appear ready to do so if a better video engine presents itself
- They are thinking outside the Silverlight box and keeping their options open to be able to host Moonlight in a widget
- Constant open communication throughout the development process was a keystone to their success

Just a few thoughts for Agilists to noodle on...

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

1 Discuss

Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you