Gears API Blog

Keep up to date on Gears

There is a meme going around that once ubiquitous (cellular or WiMAX) wireless access pervades everywhere that we won't need the offline or performance abilities of something like Google Gears, Dojo Offline, or Adobe AIR. This seems logical -- why do we need the ability to cache the UI and data of web applications locally, for example, if the magical wireless connection in the sky is always available? The argument then continues that the only place this stuff would be useful is on airplanes, where WiMAX and cellular connections won't reach.

The last few weeks I've decided to test out this hypotheses and see if it is real. Every morning I have about a one hour to an hour-fifteen minute commute on the Google Bus from San Francisco to Mountain View. Rather than stare zombie-like out the window for most of the time during the very early hours I now need to rise, I decided to buy a Verizon Wireless Internet Access card. As William Gibson says "The future is here. It's just not evenly distributed yet." So I decided to distribute a little bit of that future here and now and give ubiquitous Internet access a try. The hypotheses: once I had this card and universal Internet access, would something like Google Gears seem unnecessary?

As so often happens with these kinds of things, the results were unexpected and counter-intuitive. While the wireless card is truly cool and pretty much makes the Internet available almost everywhere (with pretty good speeds), the basic fact of wireless Internet connections is that they have high latency, very high latency.

What is latency? Latency is the amount of time that it takes for my request for some information to reach the source of that info, and then for the response to come back to me. I can have Internet communication channels that are very fast, such as satellite access, but which have very high latency, on the order of seconds.

Wireless networks have high latency. It's just a basic fact. The strange thing I found is this:

Right now I'm writing this blog post in a local text editor. The reason is that even though I could load up the Blogger UI, it takes a while to snap into place because of the wireless network's latency. Instead, I just popped open my local text editor because it appears so fast.

The pain of opening web applications on wireless networks can be jarring. What if, instead, the application simply appeared, right when I opened the browser? This is akin to not needing a splash screen as a desktop app loads. The performance difference between being able to instantly access your app, whether it is remote or local, is huge, and tools like Google Gears make this possible.

With Google Gears, your web application can cache its UI locally, so that every time I navigate to it the UI springs to life instantly. On a wireless network I had to wait for that UI to appear, sometimes for several seconds. The difference is small but has a huge effect on whether users want to migrate their applications and life to using online apps. Speed matters. The difference between instant and several seconds has huge implications for user satisfaction and usability.

With Google Gears, once the UI of my web app appears instantaneously, I can begin to get work done with some of the cached local data as the web app makes contact with the remote web server. Because I see the UI instantly and can start working, it doesn't matter to me if the latency on pervasive wireless networks is slow because I can get work done now.

Reliability also became important as I used the wireless card. I'm sure all of us have had the experience of talking on our cell phone and having the connection drop; this happens to me all the time. While the Verizon Wireless card is actually very good and quite reliable, the connection would still drop from time to time. If this happened in the middle of Gmail loading, for example, or while I was working on a Zoho document, then things got very annoying.

Pervasive wireless means that the connection will drop sometimes. This argues even more for the kind of data and UI model that Google Gears makes possible. If I am working against a local cache, and the network disappears then reappears, I won't even notice much of the time since that activity occurs on a background thread.