Programming Tales

A brief history of Silverlight


I started working on Silverlight in early 2007 right after Silverlight 2.0 was announced. Silverlight 1.0 up to this point was more or less just a very efficient graphics rendering engine that could be controlled from JavaScript. The ultimate goal however was to be a subset of WPF, after all the original name for Silverlight was WPF/E or WPF everywhere.

Silverlight 2.0 came with a version of the .NET CLR that was cross platform, the CoreCLR. This version of the .NET CLR could run in Windows as well as Mac OSX, taking advantage of the machine agnostic design for the IL.

I started by working on the support for data binding, porting the syntax and behavior from WPF to Silverlight but without using any code. In Silverlight most of the implementation was done in C++. The graphics engine itself and all of the objects were all C++ while a thick .NET layer was used to simulate a .NET API as close to a pure subset of WPF as possible.

This was a fun time, I learned the unique approach that Silverlight took to cross-platform developement, which was something that we didn't do in Microsoft in those days. Microsoft was pretty much a Windows only shop, except for the folks working on Office for Mac of course. We were the odd ones out, we had Mac minis at our desks and we were working on ensuring Silverlight worked there very very well.

Silverlight was my first introduction to real .NET and C# development and a crash course in .NET interop since Silverlight was implemented as a mix of C++ and .NET all working in a nice bundle. This period was also my first exposure to Mac OSX and Mac development.

The fact that Silverlight worked so well on a Mac caused a bit of trouble since it seemed that we were devaluating Windows, which was the main cash cow for the company. If we made it easy for apps written in .NET to run a Mac why would people continue to use Windows at all? This was in the end the core question that the Silverlight team had to answer, and there was only one answer. Silverlight became the API for Windows Mobile and Windows 8, with the goal of producing a common API for both platforms. Since everything was XAML you would be able to share assets between both platforms.

I ended up on the Windws 8 side of things working on the Windows 8 XAML apps. By this time I had been working on Project Jupiter and this became the basis for the Windows 8 work. And that was really it, after we got divided into Windows Mobile vs. Windows 8 the fate of Silverlight was sealed. All of the development efforts were into these platforms. Also by this time HTML5 was showing its capabilities and making the plugins (Silverlight, Flash, etc...) pretty much obsolete.

By now while Silverlight is still technically in support no major website uses it anymore, back from the heyday when Netflix and Olypic Games used to use Silverlight as part of their video distribution platform.

Silverlight for me was more than just a product, I met really good friends there and it gave me opportunities that I never thought I would have within Microsoft for learning new things. I will always be glad I joined the team and it will always be a fond memory for me.

Silverlight shipit award