This ‘Death of Silverlight’ debate is getting pretty idiotic. If you’ve been avoiding it, maybe doing real work while tech pundits enjoyed their pissing match, it all started with this little sentence from Bob Muglia, President of the Server and Tools Division at Microsoft:
Hide the women and children and number zero! Muglia has lost his shit and is taking out every .Net developer at the knees!
This is stupid. Please stop.
There has been a lot of suggestion that Silverlight was never meant to replace HTML. This is revisionist history, and doesn’t help anyone. Silverlight was pretty clearly Microsoft’s attempt to overpower the conventional rich web stack with their own tools. And I do mean overpower. With Silverlight Microsoft brought a Sherman Tank to a knife fight. When Silverlight 1.0 was introduced in 2007 the web was a very different place. The only way to deliver video was through Flash, jQuery was just coming of age and Google Chrome (with all it’s V8 hotness) wasn’t even out yet. Silverlight represented a competitor to Adobe’s de-facto plugin, and Silverlight 2.0 gave .Net developers an opportunity to put their skills directly in the browser.
But their attempts were misguided. Building Bing Maps in Silverlight seemed like overkill and many Microsoft product web sites (SharePoint comes to mind) used Silverlight for landing pages. The problem seemed to lay in Microsoft’s threshold for “Rich Internet Application.” Microsoft still seemed content to build the basics in HTML+CSS, but as soon as you started moving elements around a page, it was time to pull out the plug-in. Even the Silverlight Navigation template looks like a normal web page. Both of the above examples have since been converted to HTML, I suspect this is the ‘shift’ Bob is talking about. If that wasn’t their original strategy, what have they shifted from?
But Silverlight is far from perfect. It never really made sense for general web development for a few reasons.
Silverlight isn’t crawlable/accessible. When you’re talking web, you can’t ignore the 800lb. gorilla in the room named Google. If Google can’t find you, you’re S.O.L. and Google can’t find Silverlight. A Silverlight app is a big amorphous blob of binary so without going out of your way to expose your Silverlight embedded content, search engine’s won’t find you. Closely related to searchability is accessibility. Again, because Silverlight is an amorphous binary blob screen readers and other devices have a hard time getting to the content.
Copy and paste is a pain. In my mind, this just about sums up why Silverlight isn’t a suitable general purpose web tool. Copy and paste is just one example of niceties that users have come to expect that are not out of the box in Silverlight. Right-click, navigation and printing also come to mind as examples of things that are onerous to put in Silverlight projects.
Microsoft Controlled. The other large vendors simply can’t use Silverlight over flash, because siding with Microsoft is like hitching a ride on the Death Star. For better or for worse, a single entity controls the platform. Google is now finding out just how fun it is to depend on a competitors platform. Oracle is trying to sue the pants off them for their JVM.
Plug-ins are an extra step. Getting users to install an extra plugin is ultimately one more hurdle you need to overcome. It may be simple but there are so many issues that could get in the way. Security settings. Computer literacy. New devices may not even support the plugin. (iAnyging, Android, BlackBerry, etc)
If you were building entire sites in Silverlight, you probably had a little too much Microsoft Kool-Aid. If you can’t distinguish between best-practices and marketing, you probably shouldn’t be developing in the first place.
Why Silverlight Is Still Relevant
Despite the above knocks on Silverlight it’s still a pretty good place to hang you RIA hat.
Microsoft is able to innovate faster than web standards. Silverlight was able to put video in the browser while the HTML5 video spec was in it’s infancy because plugins aren’t bound to any standards process. Standards boards move slowly because of all the players involved, but if Microsoft wants to try something, they’ve got their own sandbox to experiment in. Right now, Smooth Streaming is the killer app for Silverlight. I suspect the video tag will catch up in time, but right now there’s no great story for streaming HTML5 video. Same with webcam and audio input.
Internet Explorer 9 doesn’t run on Windows XP. If you’re not a fan of the new Aero UI, there isn’t much reason to upgrade to Windows 7. There, I said it. Sure, there are optimizations that come from a new operating system, but unless you’re a power user, you probably won’t notice them. And if you are a power user, you probably don’t use Internet Explorer anyways. So what of these remaining users? They’re still happily rocking their XP boxes running Internet Explorer 6 through 8. ‘Far superior performance in other browsers you say? Meh, Internet Explorer works for me.’ And you know what I’m okay with that. It just means I need to provide an experience for users that don’t have HTML5 canvas/SVG, audio/video, validation etc. I used to believe that the average web user really wanted an open and free web. Then Read Write Web ran a piece about the new Facebook authentication other sites could use. Turns out when you put Facebook and Login in the title, the people Googling for “Facebook login” are going to stumble across your site and think they’ve arrived at Facebook. This lead to comments like these:
These people weren’t stupid, they’re just not geeks like you and I that spend evenings reading blog posts about Silverlight. I think a lot of the behaviours we take for granted still needs to be learned by the less technically savvy. That includes using non-default browsers. And Google, Facebook, Twitter etc. haven’t been able to change their ways, your cat photo sharing app isn’t going to change that.
DRM is a necessary evil. DRM sucks. Get over it. You like getting paid to write software/music/anything creative? If you are to have a hope of making a living you need a way to control it’s distribution. This may be an area HTML never embraces because it’s so anathema to the open web philosophy.
.Net Developers Want a RIA Platform. All the above begs the question, then why not use Flash? Well here’s your answer Mr./Mrs. Smarty-Pants. I don’t know Flash. And I don’t care to learn it. Nothing wrong with Flash, per se. 20 billion users can’t be wrong. But I know C# and rather enjoy it, so if there’s an option to enhance a web page with my .Net skills, I’m going to use it.
So whether you’re a member of the HTML5 mafia or a Silverlight fan-boy, please calm down. There’s enough web to go around and we’re going to need to play nicely for years to come.