Thursday, August 23, 2012

Going native

This afternoon I was pleasantly surprised to see the announcement that Facebook for iOS has gone fully native. Previous to today, the Facebook app has been a viewer to HTML5 based content that was mostly functional, but slow. The old app was adequate, but not stellar. When I fired up the new app I was greeted with a much nicer user experience in regards to smoother scrolling, and cleaner animations. Overall, it was a positive change, although it still does nothing to combat the incredibly content heavy feed that Facebook shoves at your phone. At least I get smoother scrolling while I'm waiting for all my content to take forever to load.

But this all got me thinking about the how far we've come in regards to write-once-run-anywhere promises of the web of the early 2000's. For a big part of my IT career everything seemed to be focused on a movement to make HTML everywhere, a ubiquitous language that could present it's content to all corners of the ever-more-connected globe. But HTML had some serious flaws. First, it's not really an interactive programming language with all the rich features of control structures and variables, so along comes JavaScript to save the day. In fact JavaScript was a huge boon to static web based content, and quickly became the defacto dynamic page language. Perhaps these two together could conquer the world and make it possible to create a single app for every circumstance?

The dream was almost realized fully with Palm's WebOS. Here you had a fully featured smartphone operating system that had as it's core, HTML and JavaScript. For the most part it was a great idea, but it got destroyed by poor hardware, that couldn't keep up with the demands of a fully interpreted system language. Eventually Palm released a native SDK so that developers could go back to writing low level, compiled applications that took full advantage of every possible memory bit and CPU cycle. Native had once again won the day.

Although specialized toolkits such as PhoneGap try to continue to bridge the gap and allow the vision of write-once to continue, even most developers understand that abstraction toolkits end up costing in the end. Especially as an application continues to grow, it usually becomes apparent that, despite their usefulness, toolkits often can't keep up at the same pace as an investment in a native application.

So today once again, native has become the choice for what is probably the most installed app on the planet. The dream of being able to utilize the universality of HTML5 came to a halt, as users breathed a collective sigh of relief, and waiting for Facebook's servers to respond to another smoothly scrolled pull down reload request...