Ian Bicking: the old part of his blog

Breaking the Web We Have

So, the web (or at least a few people who are encountering early adoptors) are up in arms about Google Web Accelerator. The quick summary: GWA follows links for you, including links like "delete this item", including that it ignores Javascript confirmation dialogs.

Of course, REST people are going to say you shouldn't be causing side effects in response to GET queries, that this is a learning experience. What I learn: some people pay too much attention to HTTP and not enough attention to The Web That We Have. Sure, GET shouldn't have side effects, but Simon Willison correctly notes that "shouldn't" doesn't mean "can't", and so it's entirely reasonable and legal to do so. Mozilla has prefetching, but strictly in an opt-in manner (<link rel="prefetch"> and a few other cases); this works fine. Frankly I don't know how Google could be so stupid; this issue occurred to me the moment I first heard about prefetching, long before the GWA. Don't they have any web application developers at Google? I can only hope they do the right thing and retract the GWA immediately, and use whatever system they have to disable this feature in all currently deployed instances.

For anyone who happens to be using Apache, you can use this to disable the GWA on your site:

RewriteEngine on
RewriteCond %{HTTP_X_MOZ} prefetch
RewriteRule .* - [F]

Hopefully this will only be necessary transitionally.

The real issue is that HTML and web browsers have not supported POST well, and web application developers have used GET because of UI issues. If anchor tags had a method="post" attribute, this wouldn't be a problem. But they don't, and so that's why we are where we are. It's not a Hard Problem, but the W3C gave up on HTML a long time ago, it seems, and so they gave up on being relevant. The WHAT-WG has been trying to address these issues, but they are relatively new. I think they are doing important things, but you can't expect any web developers to have used anything they are producing yet. The Web Application Spec does allow for more flexible arrangement of forms, including (effectively) nested forms. Though it doesn't make the <a> tag any richer, which is a shame.

The fact is: the Google Web Accelerator breaks the web that exists right now. Therefore the GWA is broken. It doesn't matter who is more right, who kept with the spec, or even if current practices aren't entirely safe. When the GWA breaks things that didn't break before, I'm going to blame the GWA. And I'm going to blame Google. So they better get their ass in gear and fix this quick.

Update: revisiting the WHAT-WG specs, I think the Web Form spec is actually more relevant.

Created 06 May '05
Modified 06 May '05

Comments:

" Sure, GET shouldn't have side effects, but Simon Willison correctly notes that "shouldn't" doesn't mean "can't", and so it's entirely reasonable and legal to do so. "

SHOULD means it's legal, but will probably cause interop problems. This is a textbook case of not knowing when it's OK to ignore a SHOULD.

# anonymous