Silverlight 2.0: killer features, no Flash killer
Open, with limitations
Web bling tone Microsoft's Silverlight 2.0, released this month for Windows and Mac, is a tipping point. This is the version that gives developers the features they have long been waiting for, including a cross-platform implementation of Microsoft's .NET Framework.
Microsoft will use its massive Professional Developers' Conference (PDC) in Los Angeles, California, this week to introduce a small army of developers who'd been using beta code to the finished product. Before we look at what's inside Silverlight 2.0, and its importance, it's worth seeing how far Microsoft's browser-based media player has come in such a short time and what Microsoft is aiming for.
Silverlight's progress has been fast. It was announced almost as an afterthought by former platforms group vice president Jim Allchin at Microsoft's last PDC, in September 2005. "We're introducing something called WPF/E, the Windows Presentation Foundation/Everywhere. This is very early work," he said .
The reason is likely to do with the rise of Adobe Systems' Flash Player and the trend towards cloud computing. Microsoft did not worry much about Flash when it was a decorative thing with a "skip the intro" button, but when it started running applications, that was different. The story begins around 2000, when a company called WebVertising Inc created a new version of an online booking system called iHotelier, using Macromedia Flash 5.
Its innovation was the user did not need to click between pages to make a booking: everything happened on one screen, just like a desktop application. Jim Whitney, WebVertising chief technology officer (CTO) at the time, told me: "I was building the project, and searching on questions and finding no answers, and I started to think, maybe no one is really doing this. I was forced to just work it out."
A phrase is born
Whitney's efforts chimed exactly with the direction the then Macromedia was planning for Flash MX, and his application became a showpiece for what that company's CTO Jeremy Allaire started calling "rich internet applications"  or RIAs.
The world took little notice at first, but now it is 2008, developers are trying to figure out how to make browser-based applications more compelling and useful, and Flash turns out to be an excellent fit, iPhone users excepted. Silverlight is Microsoft's answer. Now .NET developers can code RIAs without leaving the comfort of C# or Visual Basic.
Let us be clear though: although both Flash and Silverlight address the same territory, in some ways they are worlds apart. I write this shortly after reviewing Adobe's Creative Suite 4, which targets the new Flash Player 10. From a designer's perspective, Adobe's tools are far ahead of Microsoft's Expression Blend, the design tool for Silverlight - and they run on the Mac, too.
The Flash player has features that Silverlight lacks, including a 3D API, real-time bitmap effects, advanced text rendering, and an extended sound API. When you combine this with Adobe's high market penetration - Adobe claims 800 million devices - you might think there is little hope for Silverlight.
The tables turn as soon as you open Visual Studio 2008. The IDE is excellent, and although Silverlight itself is new, it has the feel of a mature environment. C# and Visual Basic programmers will be productive with Silverlight immediately. Runtime performance is good as well - Microsoft's long experience with .NET seems to have paid off. Silverlight also has the benefit of XAML, an XML language designed for both graphical user interface (GUI) layout and declarative programming.
Even if Silverlight's graphical capabilities are inferior to Flash, they are good enough for the majority of applications: assembling a GUI is easy and it has impressive video support. There is one weak spot. Visual Studio can preview your XAML layout, but has no visual designer. You are meant to switch to Expression Blend for this. While this works up to a point, it would help if Visual Studio also supported drag-and-drop design and property editing.
Microsoft held back some goodies for this full release. Version 2.0 can call SSL web services from a non-SSL connection, which the betas did not allow. There are new controls, including PasswordBox, ProgressBar and ComboBox. The Silverlight development tools are now supported in the free Visual Web Developer 2008 Express, and there is also an Eclipse project  primarily aimed at Java integration, though it is currently Windows-only.
Silverlight ListBox controls: any control can contain almost any other
Microsoft claims  support for Mac, Windows and Linux in Firefox, Safari and Windows in Internet Explorer. This needs qualification. Mac support is limited to Intel Mac, though Microsoft vice president Scott Guthrie told me that PowerPC Mac is under two per cent of active web users now. Linux support is far from ready: it currently does not support video or MP3 playback and has no announced shipping target.
Silverlight works, and while it is unlikely to win many over from Flash, it is the natural choice for .NET developers creating browser-based rich clients. There is one further caveat. Silverlight is not the open web: like Flash, it is proprietary.
I put it to Guthrie that the web lives on open standards. "We do believe the web should be open" he told me, pointing to Silverlight's cross-platform support, and that XAML is released under an open specification, but acknowledging that this is Microsoft's technology.
That said, considering that this was "very early work" just three years ago, Silverlight 2.0 is an impressive achievement. No, it will not kill Flash, but yes, it will be popular.®