I've put some thought into this, and here is what I think the snapshot wording should be (below).
Comments anybody?
- Revert to Last Snapshot
(was 'Revert to Current Snapshot')
- Revert to Last Snapshot then Discard Snapshot
(was 'Discard Current Snapshot and State')
- Discard Snapshot, Keeping Current State
(was 'Discard Snapshot', but only for the last ('current') snapshot)
- Discard Snapshot
(keep 'Discard Snapshot' for other than the last ('current') snapshot)
- When the last ('current') snapshot is selected, enable these buttons also:
Revert to Last Snapshot
Revert to Last Snapshot then Discard Snapshot
- Consider changing the 'Revert to Last Snapshot then Discard Snapshot' button icon.
Rather than a double up-arrow, how about a single up-arrow and a cross-delete, because this combines the functions of Revert and Discard?
Longer version, and justification for the above:
'Revert to Last Snapshot'
In the user's mind there is no CURRENT snapshot, but there is a LAST snapshot (= Most Recent).
'Last' (=Most Recent) should be used instead of 'Current' (or when the branched snapshot tree eventually arrives: 'Revert to Parent Snapshot').
If three snapshots were done 1-January, 2-January and 3-January, and it is now November, is one of those January snapshots 'CURRENT'? Not in the mind of the user.
'Discard Current Snapshot and State' -> 'Revert to Last Snapshot then Discard Snapshot'
Users may know that the snapshot 'Discard Snapshot' button only deletes the snapshot, BUT KEEPS the CURRENT STATE.
Intending to discard the last snapshot, BUT RETAIN the current state, they click on Current State in the tree (for whatever reason).
Button 'Discard Current Snapshot and State' is enabled.
On the face of it, that seems to be the same as 'Discard Snapshot', or very similar...
There is the extra '... and State' on the end, but WHAT STATE? They think: "perhaps the last snapshot has some mysterious internal State associated with it?"
It doesn't say 'Current State', so I should be safe?
They click it, intending only to delete the snapshot, but instead end up Reverting the current state also.
'Revert to Last Snapshot then Discard Snapshot' emphasises the main function of this feature (Revert).
(But that feature doesn't work that way I hear you say?:
http://www.virtualbox.org/ticket/5182)
Discard Snapshot, Keeping Current State
The current label only tells half the story about what this feature does, which can lead users to make the wrong choice.
Suppose a user takes a snapshot, makes an experimental change and then decides to abandon the change, and the snapshot.
Perhaps not sure what button to use to undo the experiment and delete the snapshot, but knowing that they must revert back to the last snapshot, they SELECT THE LAST SNAPSHOT.
A button is then available:
'Discard Snapshot'
They know they want to discard the snapshot, but they ALSO want to revert the changes.
The button does not make it clear what will happen to the current state.
They think: Anyway, Discard that snapshot is what I want to do...
They click the button and end up NOT reverting their changes, but instead RETAINING their changes.
Discard Snapshot
(for other than the last ('current') snapshot)
Keep this the same as it is now.
'Merge'/'Merging'
[Edit:]Since a snapshot is logically a complete copy of the entire state of the VM at the time the snapshot was made, what does it mean to merge a snapshot? What is being merged are Changes.
When Discarding a snapshot, the changes either side of it (preceeding it and following it) must be merged.
When discarding the first snapshot, its changes are merged backwards into the base hard disk.
When discarding any other snapshot, its changes are merged forwards into the following snapshot.
I suggest it is preferable to NOT make a distinction of which DIRECTION any differences are merged.
Mentioning 'Merge' at all in the UI raises the question of "Merge what with what?", and is a technical / internal issue that the user probably needn't be bothered with.
When the last ('current') snapshot is selected, enable the 'Revert' buttons also
Why force the user to stumble around the UI looking for the correct option? Just because they have selected the last snapshot rather than the Current State is no reason to disable the two 'revert' buttons.
And ... VirtualBox developers: Thank you for the great software!
edit: Deleted discussion of snapshot 'forward differences', which was incorrect. Thanks to sandervl for putting me right. Edited for length.
edit2: Removed suggestion of 'Discard Snapshot, Keep Changes': Best not to mention changes at all!