Last week at BriForum, I had a chance to attend a session given by Ericom's Dan Shappir on HTML5 applications. The session, titled "HTML5: The New Application Platform" was interesting because it provided an overview of the technology that was understandable by anyone, not just purple-haired web programmers. It both confirmed my feelings on HTML5 apps now and gave me hope for the future.
Right now, the rage is HTML5 this, HTML5 that, but all the conversation boils down to a few important topics in the space that we cover: Rich applications across device types and Mobile access to Windows desktops. There are other things, like games or how built-in H.264 support are pushing out Flash, but from an enterprise standpoint, we care about the apps and the desktops.
Windows 7 rocked our world because the apps we had for Windows XP didn't necessarily work in Windows 7 (not to mention x86 vs x64). That forced companies to evaluate their application strategy, and many companies decided that they didn't want to place their enterprise applications in the hands of Microsoft anymore. This is part of that whole "post-PC era" that we've been hearing so much about. Instead, companies are evaluating new methods of delivering applications, like SaaS apps or home-grown web apps based on HTML5 technologies.
On the surface, both of these things seem like excellent candidates to replace native applications. Device ignorance is fantastic as long as the experience is the same on each device, but things start to unravel fairly quickly. There are still differences in browsers and versions that make deploying web apps hard. While backwards compatibility issues might be gone with rapid release cycles from FireFox and Chrome (which negate the need to maintain backwards compatibility for years and years because the browser is automatically updated on a regular basis), differences in the implementation of HTML5 standards exist so that each browser supported by your application requires extra bits of code here and there to maintain functionality and appearance.
The last main issue is that of offline access. Native applications can be used offline. Web-based apps, for the most part, require a network connection. Sure, I can read GMail offline, and Google Docs has a feature, but it only allows you to read the docs. If you want to edit them, you have to copy them to Word, then wait until you're online to past them back into Google Docs. If Google can't get offline access right, it must be a tough nut to crack!
HTML5 in the Future
What I learned in Dan's session was that, while we may not be there yet (my words), the future does look bright for HTML5 and the browsers. Offline support has been an issue in the past, but with new browser-based data storage capabilities (such as IndexedDB), perhaps we can find better ways of building in offline support. Even Google's own browser, Chrome, doesn't work well with offline access to the apps and data, but you have to assume they're working on that.
There are also new advances coming in terms of device support. Currently, there are API's in the works that will provide access to battery status, vibration, network information, sensors, and other pieces of hardware, as well as access to native device functions like contacts or calendars. All of these things can help make the HTML5 app experience more immersive. Audio support is also getting better as time goes by.
Other changes are already happening. For instance, WebSockets now supports binary data in addition to text data. For those that don't know, the way remote desktop clients are shown in HTML5 clients is by re-encoding the RDP stream in the datacenter to text data that can be interpreted by the browser. Support for binary data means that there is less translation to do, which can make the actual process of remoting the desktop more efficient and provide an overall better experience.
While the road might be a bit bumpy right now, I think early adopters of HTML5 are going to be rewarded for their headaches down the line, both in terms of usability and in strategy. Development for Windows is falling to wayside in the face of new challenges, devices, and platforms. Keep a close eye on this, because at some point we'll reach the tipping point, and the stuff pouring out of the cup could very well be discarded Windows applications. I don't think that native apps on devices are going to go away across the board, but businesses would be smart to focus on one app that supports multiple platforms, rather than a version of the app for each platform.