« PBS games | Main | Ajax 99% bad »
May 16, 2005
Representing application state in web browsers
Representing application state in web browsers: Thomas Vander Wal has a good essay here examining one persistent problem when designing applications for use within document browsers: what should happen when someone wishes to undo a step in your application? how about saving an application's state across sessions, or sending an app state to a friend? Thanks to the recent popularity of the term "AJaX" (and the increased comfort with modern JavaScript techniques that this implies among developers), more people are now talking about whether the browser's "Back" button should do double-duty as an occasional "undo", or how to append extra data to an applications address so that it can recall a particular application state. I'm still suspicious of overloading the browsers' back/forward/reload/stop document controls to *not* go back to the previous document... if new browsers offered an explicit "undo" button then that would likely be saner overall, but my gut feeling is that we're in for 18 months of "sometimes back, sometimes undo" DHTML applications. Undo stacks can be very tricky things... an application like Macromedia FreeHand could implement multiple-undo years before Adobe Photoshop could... it's even hairier when you're trying to undo a change to a remote database which another visitor may have accessed in the meantime. Maybe state and undo are better handled inside the application itself, rather than assuming that the browser's navigational chrome should do occasional double-duty...?
Posted by John Dowdell at May 16, 2005 03:31 PM
Trackback Pings
TrackBack URL for this entry:
http://weblogs.macromedia.com/mtadmin/mt-tb.cgi/6023
Comments
I would love to see some examples of "undo" simply by hitting the background. My confusion stems around say an example where you were in a UI where you could add a new row to a list of data. You complete a form, click submit, then redirect to the same page or a new page telling you it was successful (hopefully). Then you want to undo the action. Here is where I would love to know how the back button can help. Even if you go back to the url that represented the state before adding the new row (say in the case where you are redirected to a new page for a success message) you will not necessarily know by this state that you previously wanted to add something and therefore delete it. Am I missing something?
Posted by: James at May 16, 2005 03:50 PM
Ugggh....background = back button
Posted by: James at May 16, 2005 03:51 PM
I don't know why the discussion is focussed on the (conventional) browser. People are stuck in a certain way of using the browser. It wasn't designed or intended for RIAs. If you start augmenting it with new RIA features, you're going to transform it from a racehorse to a camel.
Undo stacks are tricky, but that comes with the territory (programming). I've thought about an undo feature for subsequent versions of my (faster 8ball) Central applications.
People do like 'undo'. I wonder if an undo button (which can be greyed out under application control) should be part of the Central interface?
Posted by: Daniel Freeman at May 16, 2005 05:01 PM
John -
I tend to disagree with the author because there is a fundamental difference between a bunch of web-pages (2 - 200+) and a web application. The flash/Flex/Ajax model is very similar to application in Peoplesoft, VB, SAP or any client-server application. It is a stateless environment. If I go into Excel, Outlook or a VB app, it does NOT remember my last occurance immediately. I have created web-pages (form page, action_page model) with lots of JavaScript in the form and then go to the action page and back to the form. The browser didn't remember my changes to the DOM via Javascript. NO browser remembers the changes of the DOM. The developer must use the meta tag NOT to cache the page. My point is the requirements document of a web-page or web-application must specify this information or it not important to the developer.
Posted by: Patrick Whittingham at May 17, 2005 09:35 AM