GQueues Mobile: a case for the HTML5 web app
By Cameron Henneke, Founder and Principal Engineer of
GQueuesThis post is part of Who's at
Google I/O, a series of guest blog posts written by developers who are appearing in
the Developer
Sandbox at Google
I/O.With the proliferation of mobile
app stores, the intensity of the native app vs. web app debate in the mobile space continues
to increase. While native apps offer tighter phone integration and more features, developers
must maintain multiple apps and codebases. Web apps can serve a variety of devices from only
one source, but they are limited by current browser technology.
In the
Google IO session
HTML5
versus Android: Apps or Web for Mobile Development?, Google Developer Advocates
Reto Meier and
Michael Mahemoff explore
the advantages of both strategies. In this post I describe my own experience as an argument
that an HTML5 app is a viable and sensible option for online products with limited resources.
Back in 2009 I started developing
GQueues, a simple yet powerful task manager that
helps people get things done. Built on
Google App Engine, GQueues allows users
to log in with Gmail and Google Apps accounts, and provides a full set of features including
two-way Google Calendar syncing, shared lists, assignments, subtasks, repeating tasks,
tagging, and reminders.
While I initially created an “optimized”
version of the site for phone browsers, users have been clamoring for a native app ever since
its launch two years ago. As the product’s sole developer, with every new feature I add, I
consider quite carefully how it will affect maintenance and future development. Creating
native apps for iOS, Android, Palm, and Blackberry would not only require a huge initial
investment of time, but also dramatically slow down every new subsequent feature added, since
each app would need updating. If GQueues were a large company with teams of developers this
wouldn’t be as big an issue, although multiple apps still increase complexity and add
overhead.
After engaging with users on our discussion forum, I learned
that when they asked for a “native app,” what they really wanted was the ability to manage
their tasks offline. My challenge was clear: if I could create a fast, intuitive web app with
offline support, then I could satisfy users on a wide variety of phones while having only one
mobile codebase to maintain as I enhanced the product.
Three months
ago I set out to essentially rewrite the entire GQueues product as a mobile web app that
utilized a
Web SQL
database for offline storage and an
Application Cache
for static resources. The journey was filled with many challenges, to say the least. With
current mobile JavaScript libraries still growing to maturity, I found it necessary to create
my own custom framework to run the app. Since GQueues data is stored in App Engine’s
datastore, which is a schema-less, “noSQL” database, syncing to the mobile SQL database proved
quite challenging as well. Essentially this required creating an object relational mapping
layer in JavaScript to sit on top of the mobile database and interface with data on App Engine
as well as input from the user. As a bonus challenge, current implementations of Web SQL only
support asynchronous calls, so architecting the front-end JavaScript code required a high use
of callbacks and careful planning around data availability.
During
development, my test devices included a Nexus S, iPhone, and iPad. A day before launch I was
delighted to find the mobile app worked great on Motorola Xoom and Samsung Galaxy Android
tablets, as well as the Blackberry Playbook. This fortuitous discovery reaffirmed my decision
to have one codebase serving many devices. Last week I launched the new
GQueues Mobile, which so far has
been met with very positive reactions from users – even the steadfast “native app” proponents!
With a team of developers I surely could have created native apps for several devices, but
with my existing constraints I know the HTML5 strategy was the right decision for GQueues.
Check out
our video and
determine for yourself if GQueues Mobile stacks up to a native app.
Come see GQueues in the Developer Sandbox at
Google I/O on May
10-11.Cameron Henneke is an entrepreneur based in
Chicago who loves Python and JavaScript equally. While not coding or answering support emails,
he enjoys playing the piano, backpacking, and cheering on the Bulls.Posted by Scott Knaster,
Editor