I was watching Giorgio Sardo’s presentation on HTML5 for Silverlight Developers at MIX 11 this morning and it got me thinking about the long term viability of Silverlight in light of the meteoric rise of HTML5. It doesn’t take much internet searching to turn up a lot of mudslinging in the language debate, but I think it’s important to step back and consider each of these languages objectively as possible for their strengths. To me this boils down to portability vs. functionality.
There is no comparison on the portability front. HTML5 is the clear winner, having broad support on essentially all platforms including low-power and mobile devices. Because Silverlight is a closed platform, open-source runtimes (See Moonlight) lag behind in their implementations of new features. Between adoption rates for Silverlight on Windows machines hovering between 60% and 70% and the limited implementations available on other operating systems, if portability is a major concern for your project there’s really no way to beat HTML5. This isn’t to say that Silverlight should be written off as irrelevant moving forward, however.
As Giorgio points out in his presentation, HTML5 exists today because of the legacy that browser plugins have provided. Most of the features that it offers have been available in Flash and Silverlight for many years, and they are drawn from these frameworks in an attempt to replicate the user and developer experiences in an open, cross-platform way. These plugins have set the standard for what users expect on the internet, and despite all of the hype about the HTML5 being the next big thing, Flash and Silverlight still continue to set the pace for new features.
This isn’t to say that the flow of ideas is entirely a one way street. There are a lot of smart people working on the HTML5 standard and writing libraries to support it. The fact of the matter is though that the HTML5 standard is maintained by a large consortium of powerful entities, sometimes with conflicting interests and voices. There is a lot of inertia when making changes to such a widely distributed standard as HTML when compared to a proprietary closed standard. Microsoft has a clear direction for their Silverlight platform and the executive clout to make platform improvements happen in a timely manner.
In most cases neither HTML5 nor a plugin framework like Silverlight or Flash are perfectly suited for any particular development task. In fact, compared side-by-side they are all almost identical in their capabilities. When it comes time to decide which language to use for a new web-based project it comes down to weighing the portability vs. functionality question I opened this post with.
The greatest strength of HTML5 is that your application can be written once and deployed anywhere. This is of particular benefit when creating something for consumption by the general public where you are guaranteed to see a wide variety of client configurations. If this portability isn’t a great concern, for example in an enterprise environment, then the bleeding-edge technological benefit of using a plugin based framework like Silverlight may outweigh it.