Where did undo go?

undo , ajax , web2.0 , dotnet , jquery , java , ria København, Denmark
  • 12 years ago
    Where did undo go? - by Allan Ebdrup (October 2008) In the 1980s a major selling point for Microsoft products was the full implementation of undo's and redo's of all your actions when editing documents. Undo has been an inseparable part of good desktop applications ever since. Now here in 2008 I’m using all my AJAX and web 2.0 applications and I find myself wondering: ”Where did undo go?”. Granted there is a little undo in major applications like Flicr, Goggle docs, Gmail and others, but it could be better. We all need to think about undo, not just the big players even the smaller websites. Why have undo? The reasons for having an undo feature seems obvious. Studies have shown that around 70% of all human errors are immediately self-detected. Humans like to discover things through trial and error. Whenever a human uses a computer errors are inevitable. So we need undo. Undo and developers I think undo seems like a giant monster to most developers; it looks like a beast that will be hard to implement. And no programming environment I know of for the web, has any kind of native support for adding undo. As a developer you´re on your own, you have to implement it all yourself. Hey dotNet, Java and Ruby! We need native support for undo! Undo and the web The reason undo has disappeared is because of the way most web 2.0 applications work. Every time the user makes a change, we persist it immediately. We save it in the database on the server. This is a good practice; we don’t want our user’s changes to get lost if their browser crashes. We want to keep our users data safe. Implementing undo in this kind of client/server application means we’ll have to implement undo's all the way to the server and the database. That seems hard. And what about user concurrency? The stuff we want to undo might have been added as a foreign key to something else by another user. So what do we do? Maybe we ask ”Are you sure you want to delete?” and by doing so break a very old usability rule. We’ve all done it, but it’s not the best idea. We need undo. So how do we get undo back? In some web applications I think it’s a good idea to mimic the behavior of desktop applications when it comes to undo. In my application obsurvey, a free web application for creating online surveys, I’ve implemented a full unlimited undo history for any change to the survey the user is editing. The document in obsurvey is somewhat complex. It took only 3 days to implement undo. Anyone can do it if you have a really thick client, a RIA. Of course if the browser crashes, the user looses his/her work, but that can be remedied with the well know auto save feature. For not so thick web applications we need to think hard on how to implement undo. We need some best practices, and a good metaphor like the shopping cart of undo. There is always the thrashcan known from operating systems for files, but does that really transfer well to the web? In some cases I think it might. What is certain is that we need something that’s easy to understand for the user and easy to implement for the developer. So please dear developers, share your good ideas about undo. We need it back. Last but not least we need development environments like dotNet, Java, Ruby, Silverlight, Flex and jQuery to natively support undo patterns, and if I think really big I would say we need native support for undo in our databases. Hey, you can always wish! Other articles about undo There are some other articles about undo out there, Gabriel Svennenberg has written an article called No undo? Redo!. Aza Raskin wrote an article Never use a warning when you mean undo and two blog posts Undo made easy with AJAX part 1 and Part 2. Paul Boag wrote an article called The importance of undo. http://obsurvey.com/Articles/Wheredidundogo.aspx
  • 12 years ago
    I guess you can try to implement such native undo, but I guess It is very difficult to optimize single type (e.g. textbox undo) - so when you come to point, where some abstraction of many types is to be done, you can easily get totally frustrated - because there is a lot of environments, where undo is unfamiliar with other undos... e.g. nonvector painting compared to code writing optimised undo :) but thanks for idea, I will look at native undo possibilities, even if in VB.NET regards

Post a reply

Enter your message below

Sign in or Join us (it's free).


Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter” - Eric Raymond