“The rumors of my death have been greatly exaggerated.” – Mark Twain*
It’s been two months since version 5 of Microsoft Silverlight was released to the web. If you haven’t installed it already, you can get the latest version here. For the first time Silverlight is also available as a 64-bit plug-in for 64-bit Internet Explorer, so if you’re like me and you’ve been dying to switch to 64-bit Internet browsing – now is a good time to do it because both Silverlight and Adobe Flash finally include 64-bit plug-ins.
The list of Silverlight 5 features is long, and both the official features document and Pete Brown’s blog post do a better job of summarizing them than I could. If you’re a developer, you might also want to check out the list of breaking changes.
On the media front, the list of new features since SL4 looks like this:
- GPU-accelerated decoding of H.264 video (both Windows and MacOS)
- Low-latency sound effects using XNA APIs
- Variable speed playback and trick-play
- Remote control and media keys support
- Power plan awareness for media apps
Those are the technical details. Now let’s address the elephant in the room:
Over the past year many web articles and blog posts were published which speculated on Silverlight’s status and future in light of Microsoft’s growing adoption of HTML5. “Is Silverlight dead? Will there be a Silverlight 6? Will HTML5 replace Silverlight and Flash? Should developers continue to invest in Silverlight?”
Let us consider this first: What does it mean when someone says a development platform is dead? Does it suddenly cease to exist, disappear from the Internet and take all its apps with it? Is a development platform considered alive only if the runtime version number is bumped +1 every 9-12 months? I don’t think it really works that way. Regardless of whether there is a Silverlight 6 after Silverlight 5, Silverlight will continue to be a living, breathing app development platform as long as developers can write Silverlight apps and users can run them.
Truthfully, I don’t know whether there will be a Silverlight 6 or not (much like I don’t know whether there will be a Windows 9 or an Office 16), but I do know this: Microsoft is commited to supporting Silverlight 5 until October 12, 2021 for all currently supported platforms (Windows and MacOS) and all supported browsers (IE, Firefox, Chrome, Safari). That’s 10 years of product support. This means that anyone writing a Silverlight app today can expect: a) the Silverlight browser plugin to remain available and distributable for the next 10 years; and b) full support for Silverlight developers and users according to standard Microsoft support guidelines. If you’re reading this blog on a Windows XP computer, you know that 10 years is a long time in software product support. 😉
Ultimately, a developer’s decision to use Silverlight should be based not on speculations and hype, but on answers to the following questions:
- Does Silverlight meet my project requirements?
- Is there another browser app development platform that can reach > 75% of Internet-connected devices while offering the same features and rich development environment?
Which brings us to…
“But what about HTML5?”
Yes, there are features of HTML5 that replace features of Silverlight, but if you truly compare them you’ll find that HTML5 is really more on par with Silverlight 1 than Silverlight 5. With regards to media, specifically, Silverlight 5 is and remains the better media app development platform for browsers. That may not be true for other scenarios, but this is a media blog so I think it’s fair that I focus on media here. Yes, you may be able to build a LOB app in HTML5 with the same functionality as with Silverlight, but streaming media is a completely different story.
Let us consider two media scenarios:
Simple playback of an unencrypted H.264/AAC-encoded MP4 file from an HTTP server via progressive download.
Both HTML5 and Silverlight can meet the requirements of that scenario very easily. However, their effective reach is drastically different. Silverlight, according to RIAStats.com, is installed on 78% of globally connected devices. The percentage of connected HTML5-compatible browsers capable of H.264/AAC/MP4 playback, on the other hand, is less than 20% according to StatCounter.com (where MP4-capable = IE9 + Safari). So while both HTML5 and Silverlight have the needed features to implement the same scenario here, a Silverlight app is capable of delivering MP4 media to about 4 times as many connected devices as an HTML5 app. You could, of course, increase your HTML5 video reach by providing MP4, Ogg and WebM versions of the same video asset – but that would increase your production and storage costs. With cumulative HTML5 Video browser adoption still below 67%, the multi-format option doesn’t seem worth the increased cost. That will, hopefully, change over time but as of right now both Silverlight and Flash provide significantly better video delivery reach than HTML5 even for simple media playback scenarios.
Anything involving any of the following features:
- Live streaming
- HTTP-based adaptive streaming
- IP Multicast streaming
- Traditional UDP-based streaming
- Digital Rights Management (DRM), aka Content Protection
- Full-screen video playback (without hacks)
- Webcam and microphone capture
- Codec and format extensibility
Yes, HTML5 is a great evolution in HTML and it does bring some much-needed RIA capabilities to standard HTML, but it unfortunately only addresses a small subset of modern media scenarios. You may be able to build a YouTube-style site in HTML5, but you can’t build a Netflix app or an Xfinity app in HTML5 without being able to dynamically stream DRM-protected video over HTTP. You can’t live stream the Super Bowl in HTML5 either. That’s a problem.
(Sidenote: In 2009 Apple added HTTP-based adaptive streaming functionality, called HTTP Live Streaming, to its Safari implementation of HTML5 Video tag. This enabled content producers to dynamically stream video over HTTP to millions of iPhone and iPad devices via simple HTML5 pages rather than apps. But despite its popularity, HLS remains a proprietary Apple extension of HTML5 Video, not standardized by W3C or any other standards organization, which makes it unlikely to become the universal solution to HTML5’s video problem. If anything, MPEG-DASH is the more likely candidate for standardization in browsers. But I’ll save that for another story.)
Additional commentaries on HTML5 video woes:
- Ryan Paul, Ars Technica: “The trials and tribulations of HTML video in the post-Flash era“
- Bart Czernicki: “Five things that HTML5 Video currently will not do, but Silverlight or Flash will“
- Jan Ozer, Streaming Media: “Enough About HTML5 Video Already!“
- LongTail Video: “The State of HTML5 Video“
Let me be 100% clear: I am not anti-HTML5. I believe that HTML5 is a step in the right direction and a welcome enhancement of the HTML specification. I also believe that some video/audio support is better than none. But unfortunately the current HTML5 specification fails to deliver advanced video and audio features that are needed for building modern streaming media apps. Therefore, when it comes to building advanced media apps in browsers, Silverlight and Flash are still the best options available today and will remain so for the foreseeable future. HTML5 Video will be a valid choice for some projects, but not others.
So is there a place for Silverlight in the future of the Microsoft Media Platform? Absolutely. Even with Windows 8 shifting the emphasis to standalone media apps, the browser will continue to be the primary way of delivering Microsoft Media Platform video to MacOS and legacy Windows operating systems in the future. Silverlight remains the only app development platform capable of consuming Smooth Streaming video on > 75% of Internet-connected devices and reaching all versions of Windows going all the way back to XP. Silverlight also remains the primary app development platform for Windows Phone OS (which is expected to gain larger market share in 2012 due to Nokia adoption).