KDE User Interface Guidelines
KDE Logo (2k)
Interaction History, Navigation, and Tracking State

Summary

  • Help the user navigate. Provide a command history and a navigation history.
  • Customise your application based on what the user has done in the past.
  • Controls that take input (drop-down lists, and edit-fields with drop-down lists) should use most-recently-used lists.

Acknowledgements

Some of this is taken from Alan Cooper's article "Get a memory".

Introduction

GUI's have traditionally been very poor at retaining an interaction history. Terminal-based command-line interfaces are superior in this context: you can scroll back up through your terminal so see what you have done, and command-line editors typically have a history mechanism that recalls previous commands.

We have taken some steps to redress this in the last few years. Most editing applications (i.e. word processing, spreadheets, text editor) now provide simple Undo/Redo facilities. I call them simple because they are typically stack-based in behaviour: Undo pops the last action off the top of the stack (and onto the Redo stack) and reverses it. There is no mechanism to review the interaction history and select arbitrary actions to undo.

Web-browsers assist user navigation by providing a history of sites recently visited. This is typically presented as a list (linear structure) when I think it could be better represented as a tree (or perhaps some sort of graph). They also allow users to bookmark locations to make it easy to return to them later. With Microsoft and KDE blurring the distinction between the web-browser and the local filesystem browser, we now have facilities to browse our own computers with a navigation history.

Remember what the user has done

This principle differs from the "Track the user's state" design principle (see Bruce Tognizzini's Design Principles article). In "Track the user's state" we are interested in the user's navigation path through the application, and we provide navigation aids such as Undo and Redo, and Back and Forward, which allow users to review and repeat what they have done.

However, here we are interested in remembering information between separate invocations of the application, and also different invocations of the same part of the application (for example, when the same dialogue is used more than once).

You can predict what a user will do by remembering what they did last. You won't always be correct, but you will be about 80% of the time. Alan Cooper calls this "task coherence".

It also means that you will be wrong about 20% of the time. You might think that the correct approach is to offer the user a choice, but Cooper says instead the program should simply do what it thinks is best and allow the user to change or undo it (Cooper claims that users are annoyed by programs that ask a lot of questions). If the undo facility is sufficiently easy to use and understand, the user won't be bothered by it. Having to use undo 20% of the time is better than having to make a redundant choice 80% of the time.

Many programs allow the users to customise them by setting defaults. This may work for experienced users (if they can find the settings in the first place) but infrequent users won't take the time to customise an application. Having the application remember what you did last will be far more useful to users than a thousand customisable application settings.

For example, an infrequent user of a word processer might change the font to their prefered font every time they use they program. The user could change the program's default settings, but a better approach would be for the program to remember the last font they used, or better yet, to note the things that the user changed (that is, customised) immediately after startup. Something as simple as remembering where windows were last placed, and their size, will save the user effort, as they don't have to resize and reposition the window every time it opens. This should be part of the user interface standards.

Some programs use most-recently-used lists. A typical example is the Open Recent entry under the File menu. In Microsoft apps, the most recently opened files are appended to the bottom of the File menu, with a numerical hotkey (1 = most recent).

We needn't restrict ourselves to Open Recent. Drop-down lists can have the most recently accessed items filter to the top e.g. the list used to set the numerical precision in a spreadsheet cell, or the date format in a report, or the desktop wallpaper. Most-recently-used lists should be a part of the user interface standards.

Contents
Prev Next

Meta:
   Introduction
   Summary
   Resources
   Changelog

Layout and
Graphic Design:
   Fitts' Law
   Colour and Animation