I was in Belgium and The Netherlands this last week presenting and talking to folks in the community. After I presented on ASP.NET MVC 3, HTML5 and jQuery, one fellow came up after and said, "Should I use Silverlight or HTML5. I don't understand what Microsoft's strategy is or what to use in my app."
Since I work for the Web Platform and Tools team (ASP.NET, IIS, etc) I spend a lot of time working, coding, and thinking about the web. However, I'm not an official strategist, or marketing guy. But I do have an opinion; one that is mine and no one else's.
That said, I don't think it's that hard and I'm surprised there's so much confusion about this (both outside and inside Microsoft.) Companies have their official positions but then there's the realities of the web. Here's what the young man asked me and what I told him.
NOTE: I'm talking only about Silverlight in web browsers, not Silverlight for Phone, Games, Out of Browser, High Trust, and other environments that are uniquely Silverlighty.
Even though browsers like Chrome release and update very often, not every company is going to upgrade all their browsers every week or even twice a year. Some enterprises will be on Firefox 3.6 for a while longer, or (hopefully not) IE6. Browser plugins like Silverlight and Flash can add new functionality faster. They are called plugins for a reason. They plug-in and add something.
HTML5 isn't 100% done, but today it's already a collection of things that can be used now. Your web apps should use techniques like progressive enhancement to detect available features. As newer browsers include useful features like geolocation and video that used to require plugins, then older plugins become unnecessary. Plugins rev and add new more advanced features like DVR-like video and hardware-accelerated 3D. Those features will eventually find their way into browsers in a few years and the cycle will continue.
Silverlight 5 will become Silverlight 6, Flash 10 will become Flash 11 and HTML5 will become HTML6. Each new spec will add new features, innovating, and pushing the others forward . The web will be pushed forward by all these and more.
There's no question that advanced media apps, 3d, DVR video scenarios shine on Silverlight. Silverlight CAN do some things that HTML5 can't.
If you need basic video like YouTube, use <video> tags if your browser supports the codecs you need, and a plugin if not. However, if you need live video, adaptive smooth streaming, DVR functionality, H.264, or other features that aren't part of HTML5, then again, use a plugin.
Also consider your own productivity and happiness and the tools you want to use. Think about your users, your dev team and their overall happiness.
Until then, it's simple. Use HTML when it makes sense to your solution. Use a plugin when it provides unique functionality. Rinse, repeat. Apply common sense, and a little hair gel.
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. I am a failed stand-up comic, a cornrower, and a book author.
Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.