InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Moonlight in 21 days

Posted by James Vastbinder on Jun 21, 2007

Sections
Process & Practices,
Development
Topics
.NET ,
.NET Framework ,
Agile ,
Silverlight
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.
  • This article is part of a featured topic series on Agile

Related Sponsor

In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!

To be Agile or not to be Agile by James Vastbinder Posted
  1. Back to top

    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...

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.