« James Bond was here | Main | Why does Telerama want me to hate them? »

Kottke on where the web is going

Kottke predicts that the future will be about delivering web apps that can work even when the user's computer is disconnected from the network. The major building block he sees for this is the presence of a local web server on the user's computer that somehow holds application state and syncs up with the real world when there's a net connection present. For instance, imagine using Gmail on your laptop even when your net connection is down.

I got really riled up over this post because I've thought along these lines (pdf, sorry) in the past. Yesterday I almost broke out the J2EE and started building the infrastructure, except I had a few concerns. First, I'm lazy. Second, the number of locations where you can't get net access is dwindling rapidly. I'm not just talking about wifi (which is already being rolled out on airliners), but also the big cellular providers, who are offering ubiquitous, moderate speed (100's of Kbps) data service on top of their phone networks. So where are we going to need disconnected operation?

But the major challenge in converting an app to work in this world is supporting disconnected operation, and that's going to require an application rewrite. It's a huge leap for a programmer to go from today's fully-connected model of all data being available to a world where, during disconnected operation, most data is unavailable. And then there's the complexity of syncing up with the server when the client becomes connected again. For a multi-user application (or even an app that allows a single user to log in multiple times), synchronization is going to involve sorting out snafus where two clients have altered the same data. It's an old problem, and the best solution we have today is for the application to throw up its hands and ask the user to sort out the mess. "I'm sorry," says the application, "but something's gone horribly wrong. Would you mind telling me which of these 5 versions of your dissertation is the most recent?" (And the system isn't even prepared to cope with the truth, which is that you want chapter 2 from one version and chapter 3 from another.) Universal net access seems a lot easier than trying to get hairy distributed systems issues right, even if we'll still have to buy our net access from the phone company.

I think Google's purpose in creating Desktop, chat, Picassa, etc. is pretty straightforward: it gives Google more places to put advertisements in the future, and more detailed user behavior data to build better ad placement algorithms. Pretty mundane, but it seems to make a lot of sense. Especially when you think about how many ads Google needs to sell to maintain their revenue growth.