InfoQ

News

Moonlight in 21 days

Posted by James Vastbinder on Jun 21, 2007 03:00 PM

Community
.NET,
Agile
Topics
Silverlight ,
.NET Framework
Tags
Mono
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.

Related Sponsor

VersionOne is recognized by Agile practitioners as the leader in Agile project management tools. Companies such as Adobe, BBC, CNN, Dow, HP, IBM, Sony and 3M have turned to VersionOne to help deliver greater value to their customers.

1 comment

Reply

To be Agile or not to be Agile by James Vastbinder Posted Jun 22, 2007 11:20 AM
  1. Back to top

    To be Agile or not to be Agile

    Jun 22, 2007 11:20 AM 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...

Exclusive Content

Book Except and Interview : Aptana RadRails, An IDE for Rails Development

Aptana RadRails: An IDE for Rails Development by Javier Ramírez discusses the latest Aptana RadRails IDE, a development environment for creating Ruby on Rails applications.

Fast Bytecodes for Funny Languages

Cliff Click discusses how to optimize generated bytecode for running on the JVM. Click analyzes and reports on several JVM languages and shows several places where they could increase performance.

Scott Ambler On Agile’s Present and Future

Scott Ambler, Practice Lead for Agile Development at IBM, speaks on the current status of the Agile community and practices having a look at the perspective of the Agile’s future.

Manager's Introduction to Test-Driven Development

Dave Nicolette and Karl Scotland try to introduce non-technical managers to one of the most popular Agile development techniques: Test-Driven Development (TDD).

Structured Event Streaming with Smooks

Smooks is best known for its transformation capabilities, but in this article Tom Fennelly describes how you can also use it for structured event streaming.

How to Work With Business Leaders to Manage Architectural Change

Successful architectures evolve over time to meet changing business requirements. Luke Hohmann presents how to collaborate with key members of your business to manage architectural changes.

Colors and the UI

In this article, Dr. Tobias Komischke explains how colors used in a GUI can influence our interaction with a computer and offers advice on using the appropriate colors for the interface.

Building your next service with the Atom Publishing Protocol

In his presentation, recorded at QCon San Francisco, MuleSource architect Dan Diephouse explores ways to use the Atom Publishing Protocol (AtomPub) when building services in a RESTful way.