Microsoft® Silverlight™ is a crossbrowser, cross-platform plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web. Silverlight offers a flexible programming model that supports AJAX, VB, C#, Python, and Ruby, and integrates with existing Web applications. Silverlight supports fast, cost-effective delivery of high-quality video to all major browsers running on the Mac OS or Windows.

So say Microsoft themselves and as we now know, the Moonlight project is in full swing and headed up by the creator of Mono, Miguel de Icaza and funded by efforts from Novell in order to get Silverlight content running safely under linux. Microsoft have even made all their specification, API and internal systems documentation available to de Icaza's Moonlight team.

But what is Silverlight, exactly?

In the beginning, it was known as WPF/E. WPF, for Windows Presentation Foundation is actually a rather nifty piece of kit which defines UI elements via XAML and supports .NET Framework code-behind systems. WPF is, and shall remain a superset of Silverlight containing as it does everything you need to put together a rich, desktop based UI and also fully supporting 3D vector graphics programming. Not that anyone is likely to be writing WPF games for a while - we still need to figure out DirectX 10 and the XNA Framework! - but those will come eventually. The additional "E" stood for "everywhere", indicating the cross-platform nature of the subset.

Silverlight is a limited subset, as implied above. Mostly, it concentrates on UI elements with emphasis on music and video, defined again via XAML and manipulated in one of two ways. Silverlight 1.0 has now been publically released (and it's free, folks) and the XAML-defined objects are manipulated in your browser's DOM by use of inline or linked javascript. Silverlight 1.1, currently still in alpha is actually a bit of a quantum leap since the object manipulation takes place wholly in a .NET Framework CLR hosted within your browser. What does that mean? It means you can write rich, media-heavy and fully functional web distributed apps in C# with inline debugging is what it means. And that really is quite special.

But why have Microsoft decided to do this at all?

Because right now, Adobe's Flash rules the world. Everyone has Flash, youtube relies on it for delivery. And Microsoft would very much like a piece of that action even if they have to give it away for free. And because of the WMV file format, which Silverlight is designed to stream. Because it has competition and it would really be of benefit to MS if it became more ubiquitous.

But why do Microsoft care what format we have our files in?

Because of DRM, baby. If Microsoft can gain a leading position among suppliers of DRM, they are perfectly positioned to move out of the office and start claiming space - via set-top boxes, Media Center machines and Windows Home Server - in the living room with content suppliers happily giving them material to broadcast or pipe to your home.

I'm certain there are implications to this - especially for Apple! - but I am not here to make moral or political judgements. Just the facts, ma'am. These are the facts. And regardless of anything else or any motivations, Silverlight 1.1 is beginning to look like a very impressive and even exciting platform for web development. Expect to hear that name a lot.

Microsoft Silverlight is a browser plug-in for Internet Explorer, Firefox and Safari. It is designed for running downloadable applications on the client-side, with "richer" functionality than a web page can provide. Some of these may integrate with the web page to add a little razzle-dazzle and interactivity, some will be functional, like interactive maps or graphs in the web page, and some may stand alone. It has a lot of emphasis on video streaming, offering high quality and slick user interfaces including the live video stretching and folding video effects that Apple made popular. This puts it in a similar space to Adobe Flash, and as an alternative approach to the techniques of ajax.

A few supplementary notes on Microsoft Silverlight

Silverlight 1 uses JavaScript, but Silverlight 2, which came out in November 2008, includes cut-down .Net runtime and class libraries which run inside various browsers on various platforms.

Silverlight was relatively cheap for Microsoft to create, since it essentially takes two existing and tested technologies, .Net and WPF/XAML, cuts them down and packages them as a browser plug-in.

Silverlight 2 contains a limited subset of the .NET libraries in order to keep the download size small, i.e. for a good "user experience" of installing it. Microsoft are very concious with this one that first impressions will count in order to gain users.

Video looked like 2007's must-have feature, so in order to get release 1 looking innovative, there are lots of fancy video effects in Silverlight. Later releases will probably add features for other areas. YouTube uses Flash to show videos, and Microsoft is clearly wishing that they had some of this market. Getting their video and audio codecs (and DRM) into wider use is, I am sure, part of the plan.

The format for layout in Silverlight is XAML, which is an XML schema. It defines a scalable, vector-based UI. While this was initially derided as Microsoft's reinvention of SVG, it looks better when compared to the closed, compiled, binary Flash format. This may be an advantage here: code on the client can build new markup as text (or download new content from a server) and attach it, altering part or all of the HTML DOM or XAML object tree. Flash doesn't do that.

Another interesting side-effects of Silverlight are that Microsoft now has a .NET common language runtime running and supported on Mac OS X and they have given an official nod to an open-source Linux port (Miguel de Icaza and Novell's Moonlight project). Microsoft's relationship to other platforms and to open source is becoming increasingly complex.

Silverlight 2 comes with another interesting innovation/catch up item: the Dynamic Language Runtime, which is a library on top of .Net for dynamically typed languages, with IronPython, IronRuby and JScript using it, and interoperating closely with each other as well as having access to the .Net libraries. We are now entering the bizarro world where Microsoft supplies Ruby and Python implementations for the Mac.

Contrary to some people's impressions, there is a detailed security model in .Net, and downloaded code will have lower trust levels than installed applications. thus it will be sandboxed, and will not just be able to e.g. access random files on your machine's hard drive, send email, or generally cause chaos. In fact, Microsoft seems to be erring on the side of caution here. And of course, the .Net runtime gives you the same innate protection against stack overflows and buffer overruns that java would.

Is Silverlight "better than" Flash, comparing current versions of each? I hear that there's no clear water either way, the two are roughly at the same order of magnitude of goodness. Generally in order to upset an entrenched product, you need to be more than incrementally better, you have to be distruptively, order-of-magnitude better. But this may not apply if you're a 100-pound gorilla.

While Flash's Actionscript is a niche skill, .Net is now an all-encompassing platform - you can run it in your (Microsoft SQL Server 2005) database, your (Microsoft IIS) web server, for your (Windows XP or Vista) desktop applications, on your (windows CE) smartphone, and now in your cross-platform browser plug-in. And .Net is not a bad platform at all. For every competent Flash Actionscript coder, there's now a big gang of .Net guys breathing down their neck.

It's a classic Microsoft play - extending their advantage into a new market, leverage their strengths. Silverlight is only coming up to version 2, and Microsoft's software generally gets up to its full potential around version 3.

Log in or register to write something here or to contact authors.