HTML 5 vs. Silverlight

Ever since PDC 2010 there has been tons of controversy and debate swirling around HTML 5 and what it means for Silverlight.  About a week ago Scott Guthrie wrote a post that I found on the Silverlight Team Blog (here) that addresses this issue.  I recommend reading that post and the comments as well.  When all the buzz came out about HTML 5 I saw a bunch of angry posts from Silverlight developers.  Many of the comments on Scott’s post fall along the same lines.  However, it has been months since PDC and people are starting to calm down and realize that HTML 5 is just another tool in the tool box.  I compare this to the ASP.NET MVC release and how it affected Web forms developers.  At first you feel threatened.  You think that all the hard work you put into mastering Web forms or Silverlight will be irrelevant.  After awhile you realize that new technologies simply give you more options when solving problems for your clients.

My opinion is that HTML 5 and Silverlight will co-exist for a very long time.  The reason is they have different usages and solve different problems.  Especially in the mobile space.  No matter how you slice it users like the native experience of apps on their mobile devices.  I know with HTML 5 you can make websites look and feel like native mobile apps, but the experience is still just a bit off.  So Silverlight will be around as a mobile development story for some time.

I also believe Silverlight will remain for awhile because of the fact that HTML 5 is JavaScript intensive.  In my opinion JavaScript is still not as friendly to work with as managed code, even with all the new libraries like JQuery and Dojo.  Maybe someday the libraries and tooling will make developing JavaScript easier.  Again that is not going to happen for some time.

So, let’s review our UI choices for developing new .NET applications.  There is ASP.NET, ASP.MVC, Silverlight and don’t forget WPF.  I know that is simplifying things quite a bit, but in general that is what we have from a .NET perspective.  Each one of these technologies have there pros and cons.  The best advice I can give you is to design your applications with services and business layers so your UI is as thin as possible.  If you do that, it is not really that hard to create a UI layer for every one of these technologies.