# The Problem:

Users need to have an undo control over changes they have made. However, these changes might be really big, so, while we have some contingency plan just in case something goes wrong, we need the user to be really sure they want to undo an action.

# The Current Approaches:

Based on the problem above, we're using a dialog like this:

This will undo all changes made [time period=this session / today / custom timeframe]. Are you sure you want to continue?

and then the options on buttons are

Yes, Undo Changes

Cancel Undoing Changes

However, both of them sound weird to me. First option has a positive word (yes) on a negative action (undo) and the second sounds even weirder. Testing has shown that users didn't react correctly to revert so we are looking for more layman options.

# The Question:

Given the description above, what could be a better wording option for both of this elements, specially the "Undo Undo" concept? Please note that the process cannot be changed, so it's just the wording on buttons

• I feel this whole problem is wrong. This is a version control system. Reverting to an older version shouldn't mean deleting the present version. – Stig Hemmer Feb 29 '16 at 8:20
• I feel like you're describing two separate things. Your title implies that Bob made some changes, then Sue reverted to an earlier version, and now Joe is undoing Sue's revert, so we're back to Bob's changes. But from your problem description, it looks like Bob and Sue have made changes today, and now Joe is just undoing all changes and reverting to whatever version existed at some time in the past. @Stig: I think "process can't be changed" means "we're not changing our version control system" not "the revert can't be undone later". – MichaelS Feb 29 '16 at 9:11
• @MichaelS, whoever changed the title did it against my intention and I admit that now the title collides with the description of the issue. And you're 100% correct in what you say to Stig. Back to problem, what you understand from my description is what I meant to say, despite the new title: Joe can go back to a previous version and even "hide" Sue's changes (however, a change log exists and this can be undone at any time) – Devin Feb 29 '16 at 14:46
• What's wrong with a plain "Yes/No"? In the context of the question posed, it's difficult to imagine how it can be misinterpreted. – March Ho Feb 29 '16 at 15:47
• This isn't really "Undo Undo" (that's Redo). This is "Don't Undo". – Michael Hampton Feb 29 '16 at 20:07

I'd try abandon.

Are you sure you want to abandon the changes you made today?

[ Abandon changes ]  [ Keep changes ]


I don't know what the back-out option does (does it commit the changes, or just close the dialog without taking any action), but the other button could be Keep changes, Commit changes, or just cancel.

I also like the idea of putting a pronoun into the message "your changes", "the changes you made", so it's a little clearer to the user that it's the changes they themselves made that are being abandoned.

(Edit to include some discussion from the comments:)

I think the most conceptually simple way to phrase the question is "what should happen to your changes?". It reifies the changes as things that the user has created; the user is choosing whether they get applied, or discarded. Something like "leave without changing" I suspect isn't making it clear enough that the changes themselves will go away.

"Discard changes" shows up in some similar situations so users may be familiar with it.

• Somewhere there's an orphanage for abandoned changes. – Pharap Feb 29 '16 at 6:42
• I'm not entirely convinced on the word abandon, will need to test out, but I think this is the correct path to follow, maybe with "leave without changing" or something else – Devin Feb 29 '16 at 15:27
• @Pharap I feel bad for orphans. That's why I have my processes kill their children before exiting. – Nic Hartley Feb 29 '16 at 17:53
• @Devin I think the most conceptually simple way to phrase the question is "what should happen to your changes?" It reifies the changes as things that the user has created; the user is choosing whether they get applied, or discarded. Something like "leave without changing" I suspect isn't making it clear enough that the changes themselves will go away. Actually.. how about "Discard changes"? – Daniel Baird Mar 1 '16 at 3:15
• @DanielBaird, "Discard Changes" is the exact wording we're testing now, I didn't liek "Abandon" as I said, but you made me think and we got to "Discard" as well. Thank you x 2!!! – Devin Mar 1 '16 at 20:21

Undo and redo are really old paradigms, and they usually refer to small actions (like making a word bold or deleting a sentence). What you're talking about sounds like a revert (in version control terminology).

If there isn't a redo option, you could call this "delete my recent changes" instead, and make the confirmation a nice (red) delete button.

For example:

• As a matter of fact, version control is exactly the paradigm we're using for this app, and "revert" is the word we used, but so far, testing has shown that users didn't react correctly to revert, hence why we're looking for layman options – Devin Feb 28 '16 at 22:37
• @Devin If you have a full history of the document available, you could also show a subtle popup saying something like "Your changes have been deleted (undo / dismiss)" after the user has clicked the delete button. Like gmail does. So you'd have the full undo-undo. :) – Stefano Palazzo Feb 28 '16 at 22:41
• This seems like a terrible arrangement. Both Cancel and Delete mean the same thing in English... According to WordNet: "4: remove or make invisible; "Please delete my name from your list" [syn: delete, cancel]" – landroni Feb 28 '16 at 23:13
• @landroni: That's not the case in "computer English" (where "Cancel" is widely understood to refer to an action, while "Delete" is widely understood to refer to data) but I admit it's a bit of a confusing choice. – Lightness Races in Orbit Feb 28 '16 at 23:35
• I don't think delete is the right word to use since it's usually associated with complete destruction (e.g. to delete a file makes it gone for good, to delete a character removes it completely). I think revert makes more sense than delete (even though the Op's testers didn't "react correctly" to it), though there's probably a better option still. – Pharap Feb 29 '16 at 1:02

As I mentioned in a comment, I'm confused about your problem statement. Your question body suggests your user is just undoing changes. But your title says you're "undoing an undo", which we'd normally call "redoing" something.

For the first case: Similar to WBT's "go back in time", I would suggest "roll back" if "revert" is off the table.

You're about to roll back all changes you (your team/whatever level of reversion this is) have made since xxx time/date. Are you sure?
1. Yes, I want to roll back to a previous version.
2. No, I want to keep the current version.

For the second case: The standard terminology is "redo". You could also use "reapply".

You're about to reapply the changes Bob made at xxx time/date, which were later rolled back by Sue at xxx time/date. Are you sure?
1. Yes, I want to reapply Bob's changes.
2. No, don't make any changes.

Of note, this second case is really just a variation of the first case. Reverting a change creates a new state. Reapplying the change is yet another state.

s1. v1.0 Joe does stuff.
s2. v1.1 Bob makes a change.
s3. v1.0 Sue reverts Bob's change / Sue rolls back to state 1.
s4. v1.1 Joe reapplies Bob's change / Joe reverts Sue's change / Joe rolls back to state 2.
s5. v1.0 Kim reapplies Sue's revert / ... / Kim rolls back to state 3 which points to state 1 / Kim rolls back to state 1.

I wouldn't try to cram all this into a dialog box, but the essence is that you're applying some previous state to the current system. It doesn't really matter whether you're going "back" to v1.1 from v1.0. It matters that you're applying v1.1 to the current system.

You're about to change the current file from version 1.0 to version 1.1. Are you sure?
1. Yes, apply v1.1 to the current file.
2. No, keep v1.0 as the current version.

• Windows also uses the term redo. – Ave Feb 29 '16 at 20:48

How about 'restore' or 'recover previous' or 'previous version' or 'revert changes'

i.e.

save   cancel   restore

save   cancel   recover previous

save   cancel   previous version

save   cancel   revert changes


Also use a tooltip of something like 'undo last edit'

If you're trying to steer away from correct terminology (as words like 'revert' and 'cancel' are) because you're trying to target those less technically inclined then consider the following:

Whilst buttons conventionally contain only one or two words, this can sometimes be ambiguous. By making the full extent of what the button does explicit rather than implicit you are being clear to the user what exactly they are agreeing to. You are showing them their full response rather than forcing them to infer what 'yes' or 'no' means based on the question.

• Why do you need to have 'Yes' and 'No' as part of the button options at all? – Midas Mar 1 '16 at 18:25
• @Jake You don't necissarily need the 'Yes' and 'No', but recreating that image would take effort and probably only score me one more upvote. – Pharap Mar 3 '16 at 4:43
• THIS so much. Ambiguity doesn't belong into UI. I've been advocating these kinds of buttons for over 10 years. Although adding color and icons helps a lot, too. – analytik Mar 3 '16 at 14:19
• I like the 'yes'. First, you answer the question (are you sure... ? yes) then you clarify – josinalvo Mar 4 '16 at 1:31
• @analytik I did consider adding colour but I was a bit unsure. Usually green indicates a good thing and red indicates a bad thing, but if you've arrived here by accident then the green option would be the one you don't want to press. It's times like this it's tempting to have a third option of "I don't know" that explains the consequences in excruciating detail, but then you get into the argument of whether that's being useful or adding clutter. One user's "useful" is another user's "clutter". – Pharap Mar 4 '16 at 4:58

I think the word "undo" is very confusing. Why don't you try and get the things plain?

This will cancel all changes made. Are you sure?

• Yes, cancel all changes.
• No, do not cancel anything.

Please note I am not a native English speaker, I am not perfectly sure that the word "cancel" here would be correct.

• I would expect a button labeled "cancel" to stop something the computer is doing, not something I'm doing. Discard (the changes) might be a better term. – Stefano Palazzo Feb 28 '16 at 22:32
• I always find buttons with huge amounts of text on them confusing. The user expects a yes/no question so, as soon as the buttons say more than "yes" and "no" the user starts worrying that there's something subtle going on. What's wrong with "Are you sure you want to cancel all the changes made? [Yes] [No]"? – David Richerby Feb 28 '16 at 23:52
• @DavidRicherby: I strongly suspect that you do not find buttons with lots of text confusing. Rather, you find them distracting. And that's a good thing because that's exactly what the designer wants. A good example is the dialog you suggested in your comment. Testing have shown that users tend to skip dialog text and only read the button. So depending on what exactly the user was doing before the dialog popped up the user may click NO to cancel the changes when that is to opposite of what the dialog is asking - simply because he's gotten used to yes/no dialogs and clicks buttons by instinct... – slebetman Feb 29 '16 at 2:34
• ... A wordy button on the other hand will distract him and make him pause forcing him to read the words - this leads to fewer user mistakes. – slebetman Feb 29 '16 at 2:35
• Ok you are right. We can use the short version, but i would keep the verbs: "yes, discard" and "do not discard". – Marco Tatta Feb 29 '16 at 6:52

I would suggest to use clear language that really explains what the user is about to expect:

Your session contains all changes made today between 13:00 and 16:00. Discarded changes are deleted permanently and can’t be recovered.

And the buttons:

[ Keep my changes made during this session ]

When people need the second button, there is a chance they didn’t actually wanted to be there. And are maybe in some sort of panic after reading this alarming message. You can act to this by using a label that meets their feeling (little exaggerated here but should be adapted to the situation):

[ Take me away from here! ]

• solution is nice + 1. Your bold comment doesn't make much sense, I could name many cases for the exact opposite without even thinking, specially since build paradigms aren't the same as user paradigms. – Devin Feb 29 '16 at 21:09
• Don't agree with "Take me away from here!", that's a bit melodramatic and would get annoying. +1 for Discard changes – Pharap Mar 1 '16 at 0:11
• @Devin I wrongly assumed it was a user paradigm so I removed that part. However I'm not sure you did get the point if it was a user paradigm, but that doesn't matter now. – jazZRo Mar 1 '16 at 13:39
• @Pharap It is indeed a bit melodramatic, it was just a quick example :-) But I added a note that should make that clear. – jazZRo Mar 1 '16 at 13:47

How about "go back in time" vs. "keep things how they are?"
You could even warn people that once they go back, the only way forward is to do the work or make the changes manually all over again, if that's true.

version control is exactly the paradigm we're using for this app, and "revert" is the word we used, but so far, testing has shown that users didn't react correctly to revert, hence why we're looking for layman options.

You may want to have a look at the Quorum evidence-based programming language in which they empirically test each design decision, including word choices, etc. to see what people intuitively understand better. It seems like the kind of thing you're trying for, and you might be able to learn something from them (or they from you).

• I'll be very disappointed if I press "go back in time" and don't see any dinosaurs. – Pharap Feb 29 '16 at 1:36
• @Pharap Oh no! You went too far back! Parameter out of range error :-) – WBT Feb 29 '16 at 16:17

The github desktop GUI client does this well. "Discard Changes" and "Cancel" are the two clear options that they choose.

Unless your use case really calls for it, you're probably adding unnecessary complexity by adding the timeframe.

If you want to be really sure that they click the right button, how about:

[Remove your Changes] . . . [Do Nothing]

"Remove" carries significance that they will actually remove something they have added (a bit softer than delete) - and Do Nothing is the 100% safe option to close the dialog if they entered it by mistake.

You can also color the Remove your Changes in red and the other in grey

I find that yes and no are ambiguous when used with negative questions in the English language, so simply avoiding the "yes" and "no" should be sufficient for clarity.

"Undo changes"

"Do not undo"

In your case, if the option is between undoing your changes and declining to, I would just have the user choose between Undo and Cancel. That seems to be the consensus. Also, you can't go wrong being more specific with "Yes, undo my changes" and "No, keep my changes" as others have suggested.

Time travel, as if we are travelling back in time. So you may show it as

[Undo step by step] [ Time Travel ] [Keep my changes]

• Do people understand this though? – JonW Mar 1 '16 at 11:49

This will undo all changes made [time period=this session / today / custom timeframe]. Are you sure you want to continue?

Yes, undo my changes

No, cancel this operation

"Cancel undo" should be worded as "Restore change".

• This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post. - From Review – Mayo Mar 4 '16 at 0:36
• @Mayo I've reworded my answer to be clear about what I mean. – David Mar 4 '16 at 5:08

This will undo all changes made [time period=this session / today / custom timeframe]. Are you sure you want to continue?

A simple 'OK' and 'Cancel' are to the point and avoid repetition of the alert message.

This will undo all changes made [time period=this session / today / custom timeframe]. Are you sure you want to continue?

Undo changesCancel

"Undo changes" is better than "Ok" since it states specifically what you're about to do. "Cancel" is unambiguous for cancelling your current operation.

Alternatives could be "Revert changes" or "Discard changes".