Apps Developer Blog
Information for Google Apps Developers
GQueues Mobile: a case for the HTML5 web app
June 20, 2011
This guest post by Cameron Henneke originally appeared last month on the
Google Code blog
as part of the
Who's at Google I/O
series. We don't normally cross-post one month later, but we think this post will be very valuable for Google Apps Marketplace developers evaluating their mobile strategy.
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.
Cameron Henneke
Cameron Henneke is the Founder and Principal Engineer of
GQueues
Cameron is based in Chicago and loves Python and JavaScript equally. While not coding or answering support emails, he enjoys playing the piano, backpacking, and cheering on the Bulls.
Want to weigh in on this topic?
Discuss on Buzz
No comments :
Post a Comment
Labels
.NET
3
#io15
1
Administrative APIs
26
Admin SDK
4
AdSense
1
analytics
4
Android
5
App Engine
5
Apps Script
98
Auth
1
billing
4
Charts
1
Chrome OS
1
classroom
1
Cloud Storage API
1
Community
1
Developers
5
Directory API
1
Drive
2
Drive SDK
38
execution API
1
Firebase
1
Freemium
1
Fusion Tables
2
Gadgets
5
Gmail APIs
16
Google+
3
Google APIs
3
Google Apps
3
Google Apps Directory API
1
Google Apps Marketplace
3
Google Apps Script
1
Google Calendar API
20
Google Contacts API
3
Google Data Protocol
7
google docs
3
Google Docs API
20
Google Drive
2
Google Forms
4
Google I/O
3
googlenew
1
Google Prediction API
3
Google Profiles API
2
Google sheets
2
Google Sites API
4
Google Spreadsheets API
4
Google Talk
1
Google Tasks API
6
Groups
2
Guest Post
42
ISVs
2
java
1
JavaScript
3
marketing
3
Marketplace
47
Marketplace ISV Guest
21
Migration
1
Mobile
1
mpstaffpick
1
oauth
11
OpenID
7
PHP
1
python
4
realtime API
1
Resellers
2
Ruby
1
SaaS
1
security
1
Staff Picks
2
webinar
2
Archive
2015
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
2014
Dec
Oct
Sep
Aug
Jul
Jun
May
Mar
Feb
Jan
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2012
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2011
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2010
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Feed
Follow @googleappsdev
No comments :
Post a Comment