[josm-dev] Do we need some principles for JOSM interface design?
Chris Morley
c.morley at dsl.pipex.com
Sun Oct 14 11:51:28 BST 2007
It might be helpful to write down what the principles should be behind a
new interface for JOSM, so that they can be discussed. I think the
recent changes by Frederik are in the right direction, but maybe the
design process is a bit too ad hoc at the moment. My list is below; some
of points are already applied and some are contentious. (Of course,
caveat IANAID.)
1. The conceptual model should be nodes and ways - the same as the
underlying data. JOSM was built on a segment model, and even after the
0.5 API it was possible to use this as a conceptual model. I think this
should be put aside.
2. The interface should be designed to suit the most common workflow. An
interface of strictly logical elementary operations (select, add node,
select...) seems obvious to programmers but may be much slower. In any
year there hundreds of thousands of man hours spent editing with JOSM so
even a small amount of time saved is significant. A detailed interface
may be necessary as well, but is likely to be more clunky. With the old
JOSM you spent too much time selecting and deselecting things.
3. The editing should be, as far as possible, clicks of a single mouse
button and movement of the mouse pointer that does not move away from
the part of the drawing being edited. This is a perhaps a bit too ideal,
but it implies that it would be better if you didn't have to keep
clicking buttons off the drawing surface and you didn't have to use
modifier keys.
4. Mistakes should be instantly correctable. Not only does this save
time but also reduces anxiety in the user because it reduced the chances
of him messing up and not knowing how to put things right. Toggling is a
simple and comfortable interface concept, and deserves to be used. For
instance, when adding nodes on a curved road, I commonly place one too
far from the last, cutting a corner. The fastest way to correct this is
to have an interface where clicking the node you have just added erases
it, giving you another chance. This would be quite a long process with
an interface having only elementary operations. (It was in the old JOSM.)
5. There should be a visual indication of what will happen next.
Particularly, the way about to be altered by the next mouse click should
be highlighted, and so should the end node to which a new external node
would be attached. A more sophisticated interface would change the
"hover" cursor to indict what would happen when the user clicked. This
is especially important in a "modeless" interface, as envisaged here,
where the the click could add, delete, select or deselect (or more).
6. The interface should prevent you making useless constructs. For
instance, a way with nodes ABCB or ABCDEB has no obvious use currently,
and so should not be constructed. This gives the opportunity to use
these "illegal" situations to streamline the user interface. For
instance, if you added nodes A, B, C to make a way, and you clicked B
again, it would mean that you were starting a new way (a side road) there.
7. The possibility of multiple ways sharing the same nodes should be
central to the editing, not an afterthought. So if a road and an
adjacent area shared nodes and you wanted to insert a new node in the
road, it should be inserted in the area as well. This avoids a useless
construct as in 6 above, but goes against 5 in some respects,
justifiably in my view. (Not many principles don't have exceptions.)
There are obviously issues in making an interface too different from
others that the users might be familiar with, like drawing programs. But
JOSM is specialised application with a limited rage of required
operations. It also (at the moment) doesn't have to maintain backward
compatibility. Now is the time to think what we really want, not what is
just adequate.
Chris
More information about the josm-dev
mailing list