This page is about mouse pointers, especially in contrast with Hands (see HandVsPointer
). (For critique of the other kind -- language pointers/machine addresses/uncontrolled references -- see e.g. NoPointers
So what could possibly be so bad about the lowly mouse pointer that would earn it the appelation of evil? Many things as it turns out.
First comes the fact that the mouse pointer is a low level representation of hardware and so from an interaction designer's perspective, it is evil by default; guilty until proven innocent. This might not appear to be a serious accusation but it is. Mouse pointers are strongly coupled with hardware & programmers and only loosely coupled to user needs, their objects and the users themselves.
Mouse pointers encourage programmers to think that the mouse is theirs for the taking, throwing the users out of the loop entirely. It can be enraging when the programmer steals the mouse pointer in a heavy-handed fashion under the guise of "helping" the user. But the only correct word for such behaviour isn't "help", it's totalitarianism! If the user can't even control the mouse pointer, just what the hell do they control?
Mouse pointers also have the enormous problem of being stateless. If the user selects an object, it isn't picked up by the pointer, you can't see it in the mouse pointer the way that you can see it in a Hand. So rather than the modeless and elegant "pick-up and drop" operation, "DragAndDrop
" has become standard.
has the disadvantages of being:
- modal (ModesAreEvil?)
- you're either in navigation mode or you're in dragging mode
- clunky; you have to go back to the selected objects if you decide you want to move them after all
- unpredictable; there's no way to inspect a selection of objects without dropping it first
Being such a bad mechanism, it certainly doesn't encourage anyone to demand advanced features like multiple stackable selections, or reifying selections as real objects.
Being stateless is a problem for much more than DragAndDrop
. It's also a problem for the cursor. The issue is simply stated: who does the cursor belong to? This is an enormous problem when you have multiple users sharing one screen, especially since many systems make the wrong decision to have all of the users share a single pointer+cursor. But even when you have multiple pointers, this doesn't conceptually justify multiple cursors.
With a Hand, the answer to the question is simple. Cursors belong to a Hand, and they are inserted into an object (a document) by a deliberate action of the Hand. Forever after, the Hand implicitly controls the cursors it has inserted. When the Hand moves away from an object, it automatically removes its cursors from the object, cleaning after itself instead of leaving litter wherever it goes.
(A consequence of this is that you can't accidentally type into an object you're not looking at. Some people rationalize the status quo behaviour as useful but practical experience disproves this; it is simply dangerous.)
This solves at least two problems, the lesser of which is how multiple users can have multiple cursors. The other is alluded to in WindowsAreEvil
where it's mentioned that a cursor must be a BusinessObject
in order for legitimate actions ("italic", "bold", etc) to operate on it.
Another problem it solves is to gather together keybindings. Since the hand is a full-fledged object, it can be manipulated in a reflexive manner. And the hand is the proper place to see and manipulate initial keybindings. By initial keybindings we mean "ALT-Q -> NW wheel item", not actual wheel items (the place to manipulate those
bindings is in the wheel).
But, this seems a little unfair Richard. A mouse pointer is a one-to-one mapping with a human's hand. Saying, "Now multiple people are sharing one pointer" means... what... they're sharing hands? I think you're mistaking a coupling with the user itself for a coupling with the hardware (which exists in its current state to mirror the user).
For multiple simultaneous users from one viewpoit, you have a whole separate set of techniques that work better (and do not work well for single-user scenarios). Since the vast majority
of all computer usage via graphical interface is dictated by one person at any given time (per viewport), a pointer isn't evil at all.
A mouse pointer has never been a one-to-one coupling with the user's hand. Consider the limitation imposed by the mouse pad. Neither is it the case that the hardware exists in its current state to mirror the user. If that were true, there would've been a lot more research into 3D ring-mice, so-called because they fit on the ring finger.
I'd like to know what this "whole separate set of techniques that work better" is since I consider having multiple Hands in the system to be more than adequate. Hell, that's what the game BlackAndWhite does. Of course, B&W doesn't presuppose a single viewpoint, but then neither did I.
On mice, yes it does couple 1-to-1. We'll have 3d mice when we have 3d screens. Currently you only interact in two dimensions, so it'd be confusing to have a third.
Black And White does indeed suppose a single viewport. No more than one player per viewport. And Black & White is not exactly a shining paragon of interface design. The gestures are confusing, relating only tangentially to their actions. The pointer itself is in a 2d plane, so it can be difficult to distinguish between objects in the third dimension. Not to mention that the gesture-dominated system enforces a slow reaction time on users. Try whipping out one of those gestures quickly and still have it registered, I dare you.
No more than one player per viewpoint? I'll note here that every sane interface supports only one viewpoint per user. So what I mean by multiple viewpoints is a system that supports multiple users having multiple viewpoints, which isn't something you can just assume.
B&W gestures are clearly meant to be idiomatic and not ideographic. That's a good thing.
Damn, I never got around to checking out whether BusinessObjects?
is the term I want to use. Anyways, that's all for today. - RK
See also WimpIsBroken
- But, this seems a little unfair Richard. A mouse pointer is a one-to-one mapping with a human's hand. Saying, "Now multiple people are sharing one pointer" means... what... they're sharing hands? I think you're mistaking a coupling with the user itself for a coupling with the hardware (which exists in its current state to mirror the user).
It is enlightening to be able to watch people's reactions. I have remote control access to several hundred machines at work. With the current tools, this means I can take over the mouse cursor and keyboard. Without exception, the initial reaction of the computer literate when I take over a session is one of shock, quite as if I had somehow made their hand move without their knowledge or consent. The mouse pointer, in their minds, is an extension of their hand. It is exactly that we're sharing hands, and it is very jarring.
This page could also be talking about the disdain a JavaLanguage
programmer would have for the problems frequently encountered by CeeLanguage
programmers. Perhaps MousePointersAreEvil?
would be a better title?