Monday, June 25, 2007

Quick: All actions should have 'undo'

I just slipped and added a misspelled word to the Firefox dictionary. Guess what the process is for undoing that mistake?

Some apps "fix" this problem by prompting with an "are you sure" type dialog before performing the action. That's very annoying, and it doesn't always work since I might hit space or enter or something and accidentally "ok" it. (this happens to me a lot when the dialog pops up while I'm typing)

I really like the solution used in Gmail:


After an action is performed, state what the action was and give an opportunity to undo, but in a non-intrusive way. More people should copy this approach, including Gmail, which needs it on "Send" (this will require adding a short delivery delay, like 10 sec, but it's worth it).

21 comments:

Nivi said...

I'm sure it was obvious to you, but that is the most brilliant idea ever for recalling emails.

There must be tons of low hanging ways that email could be improved. Gmail was one of the few (only?) innovations in email since Hotmail. Hopefully xobni will do some great stuff.

It is funny how slowly some things progress.

I also wonder whether all actions should have "recent".

Arnav said...

Hi Paul,
Good point. Any ideas on how to implement it? Is there a way to store the states across an application, so that undo becomes universal?

How does Gmail implement undo's?

Neil said...

That's also one of the nice features of the Remember The Milk interface.

You could implement it in a way that is basically analogous to doing write ahead logging (journalling) for a database system.

Mike said...

I didn't know about the dictionary add-on in Firefox.

That's what I like about Firefox. There is always some cool little gadget that can be added to do something useful. Internet Explorer never gave me that feeling or fun.

Nathan Braun said...

LOL: "All actions should have undo..."

... especially Gmail's Conversation View." ;)

PS @nivi: check out Litepost.com, you might like what we're doing there (even tho we're not YC-funded)

Andrew said...

I had been thinking about doing this in my web apps for a long time but I could never really find a solution that would work on a very basic LAMP setup.

The extra amount of work to do as well as storage concerns put me off the idea. I figured the amount of data would increase significantly per user, but I guess you don't have those problems at Google. :)

Sven Siegmund said...

I recently mistakingly reported phishing and could not undo that. Undo for phishing report would be a nice feature, too.

Krishna said...

Yes,Its realy nice idea i had in my mind. sure they will do it. google rocks :)

Tobias said...

Delaying emails is great! I have set my Outlook to do so a while ago and and only regret it if my coworkers wonder why I say "I sent you the file" when it is still in my Outbox...

John said...

Wait, you can't undo send!

Get someone to add that feature to gmail, like a delayed "send queued sends now"

rasqual said...

It's a shame the Google calendar doesn't have an undo. A single inadvertent drag with the mouse on a busy screen, and you darned well better remember what time the original was. There's no way back to the way things were!

Michiko said...

Hello,

This is more of a question...was Gmail considered part of your 20% time? I'm a sourcer for Google SWE and I always like to talk to candidates about our Engineer's 20% projects. I'd like to understand more how it all worked for you initially.

Jyvyn said...

I really wish sometimes I could unsend a message. If I forgot to mention something else in the message, I wouldn't have to send two letters. Or if I sent it from the wrong address, I could change that.

This should be particularly controllable if someone is sending a message from a gmail account to another gmail account, because the message is on Google's servers. As long as the message hasn't been read, it should be capable of being changed, even an hour after it's sent.

Ben said...

Hi Paul -- I'm trying to find your email address. My name is Ben Casnocha and my email address is ben@casnocha.com. I have a question for you. I'd be grateful if you sent me a note so I could reply with my question!

Thanks,
Ben

Matt said...

in regards to Jyvyn's comment about undoing a send if sent to a gmail account since it remains on google's servers.

I've thought about that too. It seems to have privacy problems though, as it can be used as a way to know whether the receiver has read the email or not.

phestry said...

Hey Paul, it's a blast from your past. We used to keep campus maintenance busy back at CWRU. It is good to see that you are doing well. I'd love to catch up sometime, drop me a line if you have time. Remember what a hard-boiled egg looks like after it hits a tile wall at 100mph+? Fire, FIRE!!!

Paul Buchheit said...

phestry, you didn't leave any contact info.

O.Shane said...

Agree!

Stylized Fact said...

My guess is that you'd want a state machine framework for most of this. Arguably, I guess Google have the resources to re-invent this wheel internally, but it seems a bit odd that programming languages/framworks have been around for so long, and this isn't built into anything commonly used.

Might go some way toward explaining why software still sucks so bad.

Voyagerfan5761 said...

You know, AOL's flashy, graphic-ad-laden AIM Mail service has this for other AIM accounts, and as others have mentioned, Outlook can delay message sending, so why doesn't Gmail have an "Outbox"? Perhaps as a user preference that branches the underlying code, and provides a link in the left bar if the feature's enabled plus holds messages until a "Send queue" (or the like) link is clicked. I never really thought about this, but it would sure be easier to have this Outbox thing than to keep finished drafts in Drafts.

And while we're at it, undo for phishing report would probably be a good idea...

mokshore said...

what if - mails will not get sent immediately but will be placed in a "to be sent" folder and it can be setup to send only x mails a minute and it is possible to change the sequence of mails that will be sent in the queue..