A few months ago I wrote on my disbelief of HTML5 being the right tool for everything . Some people took that as me saying HTML5 is useless.
That’s obviously not true and it’s certainly not what I think.
It’s my opinion there is room for HTML5 and there is room for native applications and the decision on what to use should not be taken lightly.
Here are a few questions that may help you to make a wise decision.
Target user
Is it corporate? Is it consumer?
Corporate devices are usually under control and users may not be able to install software.
Or traffic may be filtered and users cannot browse to your website to use your webapp and getting the authorization will take months, therefore they give up before they have even started using it.
Or they may be on a slow Internet connection and using that HTML5 webapp that took years to develop and add all those nice effects is hardly possible due to megabytes of JavaScript and images needing to be downloaded.
As for consumers, despite having full control of their systems, it’s not roses either: not all consumers know how to install software and/or they may be scared by UAC dialogs (hint: always sign your software with a certificate whose signature chain reaches VeriSign).
Target device
Is it a computer? Smartphone? Tablet? Web browser?
If a computer, is it a PC running Windows? Linux? Mac? All of them? Are you trying to reach as many platforms as possible?
How old of a computer are you targeting? Pentium 4? Core 2 Duo? Core i5? How much RAM? Try a fancy website with a lot of HTML5 niftiness on an old computer and you’ll probably be surprised at how slow HTML5 can be, even on modern browsers.
Deployment
Deploying native applications in corporate environments is a bit of a nightmare due to different operating system versions, hardware, etc
Deploying native applications in consumer computers is only a problem if you are targeting low-skilled users.
HTML5 is easy to deploy, provided that you can get the user to use a proper version of the browser. This is workable with consumers but often impossible with corporate, so if you go for HTML5 for a corporate application, make sure you support everything from at least down to Internet Explorer 8.
For mobile devices (smartphones and tablets), it doesn’t really matter whether it’s an HTML5 or native application: it has to be installed on the device, the device goes with the user everywhere and when the user moves to another device, re-installing all the applications is a matter of accessing the Apple Store, Android Market or equivalent and say “download it all”.