|April 10th, 2012|
When you click undo the computer should go back to how it was before you did the most recent thing. This isn't what happens now. Instead each program maintains it's own history, which causes trouble if the sequence of actions you want to reverse includes a program switch. It also increases the mental load: you can't simply have a reflex to trigger 'undo' whenever you do something you didn't mean to. Consistent universal undo would be especially valuable on smartphones, which you're often poking at in awkward places and where limited touch feedback promotes mistakes.
Making a computer act this way doesn't sound hard: when a program receives an action from the user it tells the operating system about it, and then when the user later hits 'undo' the operating system informs the appropriate program. In practice, there are major issues. While almost anything can be reversed, a program might not know how because some pieces are out of its control. For example if I submit a web form and then 'undo', the OS can tell the browser to undo it, but the best the browser can do is hit the back button. There's no way for it to know what command to send to the server to undo the form submission.
Another big issue would be adoption. If you add this to any existing system you're not going to be able to make all programs or apps switch over right away. Until everything is using the OS's undo in place of their own undo it might be confusing and worse than the current system.
(This is a post I wrote a few weeks ago, but now that I work at Google I'm probably going to need to stop posting tech ideas. The culture is very open internally, which means that ideas I have are likely to be dependent on or related to internal projects.)