Fog Creek Software
Discussion Board

Better Undo Functionality

What are your thoughts on the evolution of the undo function?  Do you foresee a day when we will be able to rewind graphics software?  It would be nice to have a continuous undo system controlled by an analog joystick or iPod touch pad.  We could add some functionality to the waypoint-oriented systems of today by offering rewind functionality in the areas between waypoints.  This would work well on graphical tools such as the chalk brush.  After creating a brush stroke one could dial in undo to leave only the portion they wanted.

Matthew Saul
Friday, April 23, 2004

Undo is harder than that, because if the mistake you made was 23 steps ago, but the next 22 steps were done correctly, plain old linear rollback ain't gonna cut it.

Even if you could figure out a good UI for "undo the step 23 steps ago," you would still need to implement the functionality that replays the next 22 steps. And what if step 17 of the 22 depended on the step you just undid?

Joel Spolsky
Fog Creek Software
Saturday, April 24, 2004

Providing more features that a user can perform "out-of-band"  without disrupting the undo/redo stream might be helpful.

For example, Visual Studio does not seem to consider "copy to clipboard" as an undoable action and I am forever grateful.  I cannot tell you how many times that I've undo'd 22 steps, copied something to clipboard that was deleted in the next step, redo'd 22 steps and pasted the functionality into a new place.  In other application, "copy to clipboard" might destroy the 22 redoable steps.

Some deep thinking about other "out-of-band" actions might be fruitful.

Daniel Howard
Saturday, April 24, 2004

The way VMWare implements it's snapshot function is a nice evolution on undo.

In case you haven't used it at any point you can press a single toolbar button to capture the total state of the guest operating system's disk and memory, then later on revert to that state by pressing another button.

Matthew Lock
Saturday, April 24, 2004

Maya or Photoshop have great undo-functions. Both basically represent the current state not as "baked" but as the path from the beginning (or some baked state X actions ago to save memory) to the last action. Thus you can take back any action from anywhere and it just redoes everything.

Saturday, April 24, 2004

In addition, with Photoshop and Maya (and any other graphical or non-graphical program) you can use a Griffin PowerMate ( to do like you said, scroll through your undo and redo stacks. So, Photoshop and a PowerMate and you have exactly what you outlined.

Also, in case you haven't seen it yet, Adobe sells Photoshop Elements (retail $99/online ~$59) which is the full Photoshop with only a few very advanced features removed. It also has a few features that are actually nicer than the full version. For anyone who's not a graphic designer by trade it is awesome.

Saturday, April 24, 2004

what you said about step 23 being wrong but the others right... it is possible in photoshop to draw onto the image how the image looked some steps ago. photoshop really got what you are asking for here. i dunno about how you would implement these things in a different kind of application. word? excel?

Saturday, April 24, 2004

I'd like to someday see undo functionality that pervades the entire operating system, rather than one specific to individual programs:

>>> "Damnit, I just closed my browser window with an entire message typed into Yahoo Mail. Oh, well. Let me hit the UNDO key and get it back."

I'd also like to see something like System Restore taken to the next level:

>>> "My grandmother just hosed her system. I'm going to undo everything back to the way it was last night."

And, ideally, I'd never see another "Exit -- Are you sure?" dialog again:

>>> "Oops, I had everything set up just as I wanted, and I just exited by mistake. Undo."

Thomas Sanders
Sunday, April 25, 2004

The Opera browser has a great undo. I've often closed a window by mistake, and instead of fishing around in the history to get it back, you can simply "undo" to get the window back.

It's very nice.

Sunday, April 25, 2004

>> Undo is harder than that, because if the mistake you made was 23 steps ago, but the next 22 steps were done correctly, plain old linear rollback ain't gonna cut it.

I guess the most immediate application of incremental undo would only apply to operations inside of graphics programs.  And yes, in most programs a waypoint oriented undo system makes more sense (going back 23 steps=moving back 23 waypoints)..  But I think there are cases inside of graphics programs where you could offer undo functionality between these waypoints.  It wouldn’t be that hard with today’s technology to capture a portion of a brush stroke or other motion operation whenever a program polled the mouse.  Then one could roll these back or foreword within that particular operation.  We insulate ourselves from the risk of dependencies because we only use incremental undo at spots between waypoints.  The analogy of wires hanging on telephone poles comes to mind.

Our brush stroke only creates one waypoint.  The amount of incremental undo waypoints it creates is determined by the amount our graphics program polls the mouse.

Matthew Saul
Sunday, April 25, 2004

In an ideal world, there would not be any stupid "are you sure" dialogue boxes.

Just keep on going, and when you realize that you made a mistake, undo back to whatever it was. 

And yes, I would love to have closed applications restored with an undo.  Definitely would like that very much.

Of course, it's insecure -- but if you have some kind of a 'security marker', you can not undo into that zone.  Opened a web bank account, and then closed the browser?  Too bad.

Tuesday, May 11, 2004

*  Recent Topics

*  Fog Creek Home