“It’s not a website – it’s an application”

Proponents of various abuses of Flash and Ajax cleverness have a frequent defence of their sins: “I’m allowed to break the back button, bookmarking and ‘open in new window’ and all that other stuff people take for granted because that stuff only applies to websites. This isn’t a website – it’s a web application!”

Well I am prepared to accept this argument if we agree on a proper definition of ‘web application’. I’m tempted to be snarky and state that a web application is a web site where I would never deam of bookmarking or using my back button but for the sake of making my argument in good faith I will endevour to present a slightly more useful definition.

Websites have pages. Web Applications have states. An application can be spread over several pages of a website in which case the back button and bookmarking should work between pages. It’s OK for them not to work between states.

How do we differentiate between ‘states’ and ‘pages’? Here’s my not very well thought out rule of thumb. GET’s are pages and POST’s are states. For the less HTTP involved among you then here’s it put another way. If you’re changing data on the server then that’s a POST and I don’t need to bookmark or go back. (However you’re welcome to implement an ‘undo’). If, however I’m just moving to a different view of the data then I will probably want to be able to bookmark that view, send the URL in an email, open it in a new window and all that other stuff a normal website gives me for free.