|April 10th, 2012
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.)