Thursday, September 15, 2011

How to Pick Your Platform: Silverlight, Metro, or HTML5

While Windows 8 is ushering in an exciting new model for Windows development called "Metro style apps" that run a new "unified" Windows Runtime (WinRT), it's not necessarily the right choice for all new Windows software development. In fact, there are a lot scenarios where it's not a good choice.

In this over-simplified decision tree, I try to provide some crude logic for how to pick between your platform options. Clearly, there are many nuances not covered in this tree, but I'll work on expanding the "logic" to make it more bullet proof in the coming weeks.

The first decision is the most important, though: Do you need to continue building apps that work in Windows 7?

If your answer to this question is "Yes," Metro style apps and WinRT should not be on your radar. These are Windows 8 only technologies, and there will be no backport layer that will let you run Metro apps on Windows 7.

That means any project that has as a requirement "Support Windows 7 clients," should only be considering WPF, Silverlight, WinForms, and "web" technologies (HTML/JavaScript + their server-side counterparts, like ASP.NET). It's that simple.

IF, however, you want to put apps on the Windows Tablets that will start shipping late next year, and IF you accept that these apps will only run in that Windows 8 Metro environment, then you should start digging-in to and learning WinRT.

For everyone else, don't lose sight of reality. And reality in a Windows 7 world (that will still work in a Windows 8 world) means Silverlight, WPF, and HTML5. (And, of course, Telerik is already armed with all of the tools you need for today's reality, and we're preparing tools for tomorrow's Metro option.)


Ben Hayat said...

I think for Rich (and not so Reach) apps, Silverlight is great. And for Reach (and not so Rich) apps, ASP.Net is best.

Joe Wood said...

Not sure about the choice at the bottom. If I was writing a non-metro non-LOB app for Windows would I go for HTML5? What's the installed based for ie9? I think the installed based for .NET 3.5+ is higher. Surely it also depends on the richness. I would probably go for Silverlight, given the trivial install time and good compatibility with WinRT.

Todd Anglin said...

@Ben- That's also a fair "rule of thumb" for picking between Silverlight and web.

@Joe- HTML5 install base is measured in terms of IE9. It's measured in terms of all browsers that can process and run HTML5- which is a lot. On the desktop- Chrome, Safari, Firefox, IE9/10, Opera (+ polyfills for older browsers). On mobile and devices- even better support.

That said, if you don't really need to reach devices (like iOS and Android), Silverlight is still a fair choice.

Gregory A. Beamer said...

Ecellent overview. Love the flowchart with the decision points.

Steve Fortner said...

Can't you just use the Modernizr js library to include html5 compatibility for older browsers? I didn't think IE9 adoption was any kind of a requirement.

Todd Anglin said...

@Steve- Actually, Modernizr is just a simple API for browser "Feature Checking." It's not intended to add support for missing features (though it does "cheat" a little and add some basic HTML element support to older versions of IE).

And actually, I see I have a typo in my previous comment. I should have said:

HTML5 install base is NOT measured in terms of IE9. It's an important part of the measurement (since it's the first HTML5-friendly MSFT browser), but it in no way is the entire measurement.