by Dan Minor
Inkscape is a widely used open source vector graphics program. Like many graphics programs, Inkscape has a tool bar from which the user can select a number of different tools which create and modify graphical objects. Selecting a tool essentially puts the application in a particular mode. This posting will talk about consistency between tools and objects in Inkscape.
Jakob Nielsen's heuristics are a commonly cited set of guidelines for user interface design. One of these heuristics is that a user interface should be consistent with the user's expectations. Usability experts are consistent in their belief in the importance of consistency. In Getting Real 37 Signals argue that one should consider the context in which the interface is being used rather than being blindly consistent, which is pretty much the most negative thing said about consistency that I could find.
In an application like Inkscape where there are different tools that operate on different objects, in the interface designers had to choose between being consistent in how the tools operate, or how the objects respond to the tools.
For example, one way to edit text in Inkscape is to use the Select tool and double click on the text to be edited. Another way to edit text is to use the Text tool and single click on the text. Using the Node tool will not edit text with either a single or double click. In fact, double clicking with the Node tool does nothing at all.
The inkscape designers have emphasized tool consistency over object consistency. Rather than having the text object respond in the same way to a double click regardless of the tool selected, one has to remember which tool is selected and click accordingly, or change tools in the case of the node editing tool. This is one of the disadvantages of a modal interface.
To make objects behave consistently would mean that to edit text with the text tool selected, one would have to double click the text. This would be inconsistent with the expectation that the primary functionality of a tool can be accessed through single clicking.
I think the best solution would be a compromise, where an object has a certain set of basic functionality. Depending upon the tool selected, some of the basic functionality can be overriden. In the case of editing text, double clicking with any tool would enter the text editing mode. In the case of the text tool, single clicking would also access this functionality. Although this is redundant, it has the advantage of maintaining consistency across both tools and objects.