Over the last several months, there’s been a lot of rumblings in the community about HTML5 and the future of browser plugin technologies like Silverlight and Flash. I follow Silverlight pretty closely, so I hear most of this talk in terms of the future of Silverlight. As the HTML5 spec has been maturing and browser vendor implementations arrive, you’ve heard a lot of people start to sing it’s praises. There is no doubt that HTML5 is going to be huge. What we’ve been able to accomplish with HTML + CSS + JavaScript in the last 10 years is jaw dropping and HTML5 is going to take it to the next level. That I believe 100%, but to say that HTML5 is going to kill Silverlight is silly.
For whatever reason, Microsoft unintentionally fueled this silliness by not giving Silverlight any pub at PDC this year. Apparently there was a lot of talk about HTML5 – because Microsoft is trying to pimp IE9 (as they should be), but they forgot to mention Silverlight explicitly. Mary Joe Foley wrote a nice article last week called Microsoft: Our strategy with Silverlight has shifted. In that article he quotes Bob Muglia, President of the Server and Tools Division at Microsoft, as saying:
But when it comes to touting Silverlight as Microsoft’s vehicle for delivering a cross-platform runtime, “our strategy has shifted,” Muglia told me.
If you read the whole article, it all make sense, but that line out of context is a bit misleading. I don’t particularly like the way Muglia phrased that because the entire meaning of the statement hinges on what he means by “cross-platform runtime”. If you have a solid understanding of what Silverlight is, that statement makes perfect sense and doesn’t at all make you think Silverlight is dead or dying. If you don’t understand what Silverlight is, you probably think the opposite. Nonetheless, Bob attempted to clarify with a post on the Silverlight Team blog.
Speculation on where the silliness is coming from…
I’m forced to believe there are still a huge number of people out there that simply don’t know what Silverlight is. Probably because Microsoft (purposefully) focused on media – specifically video streaming - in the early releases of Silverlight, and largely ignored Silverlight has an application platform, I believe many people still see it simply as a video player technology that runs in the browser. Once you see the video and animation capabilities within HTML5, you can see where people jump to conclusions about the viability of Silverlight in an HTML5 world.
So, what is Silverlight?
The reality is, the last two releases of Silverlight (half of it’s life time) has been far more than a browser based video player. Silverlight has two forms: in-browser and out-of-browser. Silverlight In-browser is like Adobe Flash – users install a special plugin from Microsoft that hosts the tiny Silverlight runtime natively within the browser. When a user visits a web page that contains HTML signaling the browser to run some Silverlight code, the browser simply does this silently and seamlessly, and Silverlight is running within the page right along side HTML, CSS, and JavaScript. The other form is out-of-browser – this is like Adobe AIR (Adobe Integrated Runtime) where the tiny Silverlight runtime in installed directly on the host operating system and can run natively on the local OS – no browser as a conduit. Starting with version 2, the Silverlight runtime included the .NET Common Language Runtime (CLR) and a subset of the .NET Base Class Library (BCL). That means Silverlight is a mini .NET running in these two forms. That means it’s the same programming model, the same infrastructure libraries, the same programming language(s), the same IDE, the same debugger, etc. etc. etc. There are parts of .NET that were intentionally left out because they simply were not applicable to the Silverlight environment or were cut to keep the download size small, but for all practical purposes Silverlight is .NET. This is HUGE.
When I first started working with Silverlight, I had several years of HTML/CSS/Javascript/ASP/ASP.NET under my belt as well as several years of .NET middleware development. At that time, I didn’t get how huge this Silverlight programming model thing was. I had heard all the marketing speeches inline with what I said in the previous paragraph, but I didn’t get it. Modern web programming with HTML, CSS, Javascript+JQuery just didn’t seem that tough. After a year and a half of Silverlight development, I can tell you with certainty this is HUGE. Until you’ve experienced the development experience of Silverlight – the familiar tools, the smoothness in the programming model across client and server, the frictionless debugging, etc. you simply cannot argue that developers have the same productivity in HTML, CSS, and Javascript – not to mention there are just things you can’t do in Javascript. There will always be a need for the technologies like Silverlight and Flash for doing things that you just can’t do with Javascript. Google and products like Gmail have broken down the mental barriers surrounding what people consider possible with Javascript, but it’s still limited and it’s just unrealistic to expect the average developer to build complex JavaScript layers in their applications.
Fuel to the silliness fire…
Microsoft did a lot of things right with Silverlight. They have a good cross-platform story. Unlike Microsoft to yesteryear, they didn’t just implement this on Internet Explorer. They built this to be cross browser friendly and therefore cross-platform. They did it in a very transparent, community-oriented fashion where they did sub yearly releases and honestly listened and reacted to community feedback. This approach catapulted Silverlight adoption and browser vendors got on broad. So, Silverlight is cross-platform friendly, but this is where Mary Joe’s report breaks down for me. She quotes Bob Muglia as saying:
But when it comes to touting Silverlight as Microsoft’s vehicle for delivering a cross-platform runtime, “our strategy has shifted,” Muglia told me.
I don’t disagree, because Silverlight never was their cross platform strategy, and he’s correct when he goes on to say:
“But HTML is the only true cross platform solution for everything, including (Apple’s) iOS platform,”
Microsoft is smartly getting on the HTML5 bandwagon because it’s going to be huge. The only true cross platform solution are HTML based web applications running on browsers that run wherever they want to run. That model isn’t changing, but that doesn’t mean Silverlight or Flash are dead either. Just because Silverlight is cross-platform, that doesn’t mean it’s Microsoft’s cross-platform strategy.
Plugin technologies like Silverlight and Flash will never replace HTML5 and HTML5 will never replace the need for Silverlight or Flash. The least common denominator (HTML, CSS, Javascript) will never been good enough for all scenarios.
Summary
Silverlight is a phenomenal technology. It’s going to continue to thrive… and so will HTML5. Here’s some other good reading on this subject:
Jeremy Likness: So What's the Fuss about Silverlight?
Laurent Bugnion: My position on the #Silverlight debate