<CharlieDigital/> Programming, Politics, and uhh…pineapples

4Nov/10Off

HTML5 and the Future of Silverlight and WPF

Posted by Charles Chen

Peter Bright has an interesting, in-depth write up of the aftermath of PDC and the future of Silverlight and WPF.

Of particular interest to me is that it seems to imply the impending doom of WPF.  This genuinely surprised me and I would not have seen it coming (but I can kind of see where they're going with this).  But first, Silverlight.

In the comments, Peter actually gets a lot of flack for his opening paragraph with members of the community asking whether this is just a case of hindsight being 20/20:

For reasons that are not immediately clear to me, it seems that a lot of developers who attended Microsoft's recent PDC event were surprised to hear that the company now sees HTML5 as the way forward for developing rich Internet applications—and not, as they had been expecting, Silverlight. Their surprise surprises me, because past statements by the company had already made this repositioning obvious, though perhaps not explicit.

I would say that this isn't a case of hindsight being 20/20 and I agree with Peter: this has been apparent from day one that Silverlight was never the future of the web.  For about two years now, I've told anyone that asked -- including peers, clients, senior architects, sales folk that I've had to deal with -- that there's no point to using Silverlight unless the application in question fell into one of four categories:

  1. Streaming media, audio/video -- quite simply, this isn't supported in HTML4.  However, HTML5 addresses this and "iDevices" have been a core driver to moving video on the web towards support for HTML5.
  2. Scalable 2D vector graphics and animation -- HTML4 supported SVG, but it wasn't performant and it wasn't consistent across browsers.  HTML5 addresses this.
  3. 3D graphics and animation -- non-existent in HTML4 without some plugin like Java, but supported by canvas in HTML5.
  4. Interactive games -- well, this is really just a recombination of the three previous bullets.  Certainly, I can see the case for this staying in Flash/Silverlight, but HTML5 will also address this use case.

Beyond that, I couldn't really see a space for Silverlight.  If it doesn't fall into one of those categories, there isn't a point to using it, I would say to them.  Fancy animations like flipbooks were always clumsy to me.  I don't really want to watch your silly animation; I want to see the next picture.  In a way, it was even worse than those silly, cheesy DX transitions that were so fashionable in the earlier part of the decade because now you have to download a plugin for the "privilege".  Not only that, I want to be able to use my browser navigation controls and keyboard shortcuts, damn it!

Some of it should have been obvious by the evolution of Flash in websites.  Remember the days when the hot fad was creating your whole website in Flash?  Yeah, fuck that.  That sucked!  Nowadays, Flash is -- thankfully -- mostly relegated to a few use cases like streaming media, audio/video, interactive games, 2D and 3D graphics and animation, and ads (fucking ads).  So I've always asked myself: why should we expect anything different from Silverlight?

Yet time and again, I'd have managers and sales folks ask me "What do you think about Silverlight" or "Can we do this in Silverlight?"  I'd stare at them quizzically and wonder why they wanted to do something in Silverlight that I could do even more easily, even more expediently, and even more maintainably in Javascript and DHTML (say using jQuery and jQueryUI or any number of fine Javascript frameworks).  It's been apparently clear to me that, for the web, that Silverlight was merely a stop-gap until HTML5 could be nailed down and widespread support could be obtained.

One of the biggest pushes that the product managers on FirstPoint tried to make in the days before I left the team was to shoehorn Silverlight in there, somehow.  As if adding Silverlight would sell the product?  And now there's a whole fad of Silverlight and SharePoint.  I don't get it and I keep getting asked about it.  Unless the requirement falls into one of the four key scenarios, why bother with it?  I can create slide-out menus and fading elements with Javascript.  Why do I need a less accessible, less performant, less usable solution?

With that said, what baffles me is the implication that WPF is on its way out, too.  But Peter's write up concludes with the following paragraph:

Perhaps Microsoft is already hinting at its plans. Direct2D is currently the best way for developers to create high performance user interfaces in Windows, and the easiest way to use Direct2D is with HTML5, in Internet Explorer 9. Could Redmond embrace and extend HTML5 to fill in all the gaps that today need Flash or Silverlight, and then use it as the basis for Windows development? Such an approach is already popular on iOS. Stranger things have happened.

Now that's an interesting take that I wouldn't have seen coming but it would certainly be glorious.  I'd trade WPF for hardware accelerated HTML5 everywhere in a heartbeat.