Okay, Cancel, Close, Undo, Apply... huh?

Properties and settings dialog boxes in Windows used to be application-modal, and you couldn't see the effects of the change until you hit Ok. Nearly all the dialogs had the familiar triad of Ok/Cancel/Help. The meaning was straightforward and clear: Ok accepted the changes and closed the dialog, while Cancel reverted the changes and closed the dialog.

But in recent years, Windows has changed: the Help button has been hoisted up into a more discrete question-mark in the top corner (if it is available at all), and another button has joined the familiar Ok/Cancel: the Apply button. What's so bad about that?

The intention was that Apply would effect the changes, while keeping the dialog box open. That way, the user could see the changes applied in the document window behind and continue to make more changes (or revert changes just made). If you were happy with the changes, you could still just press Ok: the Apply button was simply a convenience to enable the user to effectively make a series of changes in discrete steps. (This was before the more modern trend of modeless dialogs that instantly apply the changes, but that's a whole other usability discussion.)

Conceptually it seems clear enough - Apply is simply the complement to the action of Cancel, as this table shows:

Action    Close?    Change?
---------------------------
Ok          Y          Y
Cancel      Y          N
Apply       N          Y

Yet this has only served to confuse users, as there are now two slightly different ways to effect your changes: via Ok and via Apply. And so I have seen this confusion demonstrated, as I have watched users on literally dozens of occasions playing out the following set of actions: they go into a dialog, make their changes, then press Apply, and then immediately press Ok! This completely redundant pressing of the Apply button reveals the erroneous underlying mental model: "if I don't press Apply, my changes will be lost!". And when I see people doing this, the action is performed in quick succession, as a rote step, a learned behaviour or strategy. The reasoning goes like this: if there is a button to apply the changes, and I don't press it, my changes will be lost. Add to this the confusion that clicking Apply will (usually!) disable the Cancel button, because now you can't back out of the changes. The scope of the changes is no longer the scope of the dialog.

So by adding the ability to Apply changes without closing the dialog, confused users have developed this cargo-cult approach to working with settings dialogs.

Users would be better off with a more straightforward model: one way to save changes, one way to abort changes. If a developer wants to provide instant feedback, it would be better to have a modeless dialog, or use other approaches to settings.