Skip to main content

Provocation: with Google Gears, is it still a web app?

Posted by fabriziogiudici on June 1, 2007 at 11:04 AM PDT

Google Gears is a new piece of technology from Google which, in few words, extends your browser with a local database (SQLite) and a JavaScript API that allows applications to keep a persistent state in the client. With this enhancement, e.g. Google Mail can keep a local cache of mail items that can be accessed when you are disconnected. A replication technology would be able to keep local data in sync with the server.

Reasoning with architectural blocks, this sounds very good to me. Indeed I'm a big fan of applications that can work in disconnected mode and replicate the state among different nodes (for now I won't go in further details about the fact that I largely prefer applications where master data is on the user's hardware and the server has just a replication, which is different than the Google Gears model AFAIU). Indeed the capability of working in disconnected mode is the main reason I've been criticizing the idea, pushed by many, that one day the whole world would be a web application. In my mind, applications with local state are RIA, Rich Internet Applications, not web applications. So I see Google's move as a way to admit that the pure web app paradigm won't catch (all) the world.

[The following paragraph has been edited to fix some ambiguous or incorrect use of the terminology, as pointed out by the first comment below; further small edits are in square brackets]

Now let me clarify. A RIA is a kind of web app. My point is that the webapp advantage arises from the concept of "thin client", as it was e.g. used by Sun around ten years ago, at the age of the (soon died) JavaStation:

  • Since data are not stored in the client, you can access all of them everywhere you have just a browser, e.g. in a pub or a restaurant.
  • If the client hardware breaks down, you don't lose data.
  • So, you're not responsible for backups, the service provides is in charge for them.
  • You don't have to install and maintain software in the client platform.

This is not just a matter of words: my point is that every time I've been requested to design a system with a web/thin client, it was related to some or all the above points being part of the requirements.

Now, having a stateful client, which - yes - is a local cache but it can hold for some time data that aren't elsewhere (i.e. between two replications), disrupts at least partially some of the points above. In the period between two replications you can't access those data elsewhere, you have to take care of backups, if you break your PC your data are gone, etc... This sounds just as a ["desktop"] RIA to me [, moving things off the original concept of thin, web apps].

But if it [behaves as] a ["desktop"] RIA, which is the advantage of using the web paradigm - and Google Gear? I'd rather say that - and I'm giving up advocating my favourite technology - anything in the set: Java, C#, Objective C, Flex, JavaFX, SilverLight with a local database is probably a better choice. Because they are technologies which have been designed with rich clients in mind, unlike JavaScript, furthermore running in a tweaked browser.

Of course, I'm thinking by extreme and I'd like to provoke some thoughts here - I admit that in the real world there are many shades of gray. Also, I've strong feelings about this, but not a final opinion. What do you think?

PS There's still the "zero admin stuff". But in a world where any fat client can be more or less easily upgraded (today everything and its dog has an update center), do webapps still have a strong advantage? Keep in mind that the local database will make that "zero" a bit heavier...

[For correctness, I'm including the original paragraph that I've edited above. Please don't consider it for the discussion, as terminology was not correctly used]

Of course, please don't focus on words but on beef. Looking at WikiPedia's definition, "... a Web application or webapp is an application that is accessed with a Web browser over a network such as the Internet or an intranet.". This still holds true for Google Gears. But the next sentence is "Web applications are popular due to the ubiquity of the browser as a client, sometimes called a thin client.". Of course, we could even discuss about the meaning of "thin client". To me, the original meaning is what Sun spoke about around ten years ago, at the age of the (soon died) JavaStation: a thin client is mostly a stateless client, with the following properties: ...