This, That, and the Code

Are you sure you want to _______?

Undo Icon

I’d love to never see that dialog box again. Can we make that happen? Would it be worth it?

Abstractly, you can treat all user actions as transformations on an application’s state. Undo is then implemented by either remembering the state before the action, or by knowing how to do the action in reverse (depends on the context). For example, an SVG Program might implement undo on a rotation by just knowing that if you rotate by (360-angle) you get the original shape back, and updating a salary on an employee would require we save the salary somewhere before applying the change. Now, if every action your application provided could be undone then there’s no technical reason (other than cost) that every action, up to the time the application was installed, couldn’t be undone.What would software that allowed for this kind of “Better Undo” look like, and how could it be made useful?

My thoughts:

  • If you design your application so that all actions can be undone then users would feel more comfortable using it. All too often on website you’re asked “Are you sure you want to delete ______?” when they could just as easily flip a deleted flag and then purge after a time.
  • Contextual undo is probably more important that global undo, since the thing you have selected is probably the thing you want rolled back.
  • Sometimes the last action performed is not the thing you want undone. Unless you’re very careful, jumping the undo queue is probably a terrible idea since later actions might depend on the application being in the state after the undone action was performed (that made sense to me). Now, if we were willing to pay the price for this functionality, I think we could do it by associating a precondition for each action that could be checked when we jump the queue. Then for all “future undos” we would have a litmus test to see if it needed to be removed from the set of undos.
  • Subversion does this for files I think. It allows you to revert to an arbitrary point in time, or on a file by file basis. What I’m talking about here is something more generic. Maybe using subversion as a backend to a system like this would work though.

What do you think?

One Response to “Are you sure you want to _______?”

  1. Darcy says:

    I think you should have to click the button twice as hard rather than seeing the “Are you sure you wanna” interface.

    Darcy

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>