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.