A while back I waxed lyrical about the user interface ideas in Haystack, a personal information management tool being developed at MIT.
One of the things it does, and something which I think would make a huge difference to ease of use for novice computer users (that is, those who haven't already been inured to the inconsistencies of interface even within software applications) is that wherever an item appears in the interface, the same actions are available in the context menu. So, for example, when I right click on the name of a person as it appears in a list of email messages, I get the same options as when I'm in the address book view.
It's not a ground-breaking idea — consistency — and yet people seem intent on ignoring it. I suspect that inconsistent interfaces expose inconsistent code, and this suspicion is supported by the following comment from Michabelieveel Parker on his Symbolics XL1200 "Lisp Machine"
The Genera operating system is object-oriented to a degree that even the NeXTStation can't aspire. Everything on the screen is an active object; you can do a directory listing on the console, and each filename knows what it is and what you can do with it. Mouse over it and it hilights to let you know it's active. Left-click on it and you get a menu with options for edit, rename, delete, compile, etc. Any error message that gets printed out to the console will have active keywords that if you click on them will bring up the online manuals to the appropriate spot. You can bring up a dialog inline in the console, and after you finish with it it will remain in the scroll buffer like any other text. Imagine what an XML shell would be like, and you're starting to get the picture. Except that this type of behavior is consistent everywhere in the system, the editor, the help system, the browsers, the inspectors, everything.
I think that the McCLIM (an open source CLIM implementation) listener is an implementation of this same idea (perhaps it's part of the CLIM specification), so maybe I should put a bit of effort into getting McCLIM up and running.
There are other interesting aspects to the approach suggested. I am quite keen on the idea of this merging of the GUI and command line schools of interface design. I can type at a command line, and then manipulate the results directly.
McCLIM --- yes. The CLIM definition is based on ideas that went into Genera, i.e. "presentation" objects that display objects on the screen, maintain connection to their object, maintain awareness of their type, etc. for further interaction.
Posted by: Patrick Logan | March 01, 2004 at 05:30 AM
Thanks, Patrick.
The title was a bit overblown, really; it was the UI continuations in Haystack that struck me as a particularly good idea. The consistency thing is just (all too rare) sense.
Haystack also stacks up menu items for all of the "things" under the cursor (so for example asking for a menu from a name as part of an email header will give all the options for doing things with the person record and with the email). That's a quick way to get a long menu, which might be viewed as a problem I suppose.
I don't know whether UI continuations are original to Haystack or not, but I haven't come across them elsewhere. If anyone has, I'd be interested to know.
I had a brief stab at getting the McCLIM listener to go with the Debian package of McCLIM, to no avail. Probably because I didn't try hard enough, but this is not the week for such experiments.
Another time.
Posted by: Hamish | March 02, 2004 at 06:31 PM