The makers of SqueakSmalltalk
are inordinately proud of having ripped off the MorphicFramework?
. And since Morphic is a DirectManipulation
GUI framework, they are proud to claim that Squeak has a direct manipulation GUI. In fact, while this might be true in a very narrow technical sense, they have managed to pervert everything that is good about direct manipulation. Yes, pervert, since there is something quite sinister about the way they have managed to slavishly adhere to the superficial aspects of direct manipulation while abandoning all principles of good InteractionDesign
Nouns and Verbs, objects versus actions
In a GUI, there are domain objects of interest to the user. These are the nouns. Then there are actions of interest to the user to be performed on these objects. These are the verbs. Nouns get displayed persistently
and in a spatial location
as miniatures (since IconsAreEvil?
). Meanwhile, verbs get described by text only when necessary and always in the same place (whether an absolute place like the bottom of the screen or a relative place like the location of the mouse pointer).
The upshot of all this is that commands never but NEVER get displayed as icons or buttons.
But that's only if you do things the right way. And far be it for Squeak to do things the right way. No, AlanKay
is proud to present you the halo, a spew of buttons duplicating the functions of the context menu. Why? Because they can't be bothered to rethink context menus in order to make them usable.
Many idiots have this mistaken notion that making an abstract thing (an action) into a tangible makes it more 'obvious' or 'easier'. In fact, nothing could be further from the truth.
There is plenty of research demonstrating that making users attend to a gratuitous aspect of a thing only slows down learning and usability. In particular, the 'interactive' readers for children only waste their attention. Another example is trying to teach arithmetic using manipulable number blocks.
Objects should only be manipulable when the manipulation MATTERS. Which it rarely does. See AutomaticVsManualPlacement
Clean SeparationOfConcerns, objects versus reflective mirrors on objects
When you click inside of a directory, does this select all objects within the directory? No, it does not. Does it select the directory itself, the directory you don't even have the perspective to see in its entirety? It most certainly does not! And the reason why is because such behaviour would be utterly retarded.
It is retarded because the correct behaviour is obviously either to deselect what's been selected or to do nothing. Whatever action it performs must operate on the same objects as every other action performed at that level of abstraction.
Yet Squeak does not behave this way. In fact, it radically violates this principle again and again and again. All too often in Squeak, clicking inside of an object grabs the object itself. Or better yet, clicking ON an object utterly fails to grab it. For instance, clicking on the background of a project grabs the project itself. And also, clicking on the background of an application (eg, Freecell) grabs the application itself.
- It sounds like there are implementation bugs here, not just design defects alone, yes? Or did I misunderstand?
- Oh no, the implementation bugs mean that it hangs all the time. What I'm talking about here is a design defect. The fact that you can select an object by clicking inside of it is a symptom of the massive architectural defect that there is no zoom out capability to let the UI decide that "inside" actually means ON the object in that particular context. Because inside actually DOES mean "on" an object when the object is sufficiently small that the user can't usefully differentiate its subparts. But there is no way to make an object "sufficiently small" in Squeak because there is no zooming. As a consequence, the two radically different meanings of "inside" get conflated. And that's the defect.
There never is any clean separation between object operations and meta-operations in Squeak. There can't be, since its makers are apparently too stupid to appreciate the power of such an obvious thing as zooming. The right way to access meta-operations in a GUI is to allow the user to zoom out until they can visibly access an aggregate of objects as a single object. Rather than allow zooming, which was present in Self's UI, the various functions are thrown together randomly.
Finally, the easiest way to pervert direct manipulation is by SlavishlyImitatingPhysicality
I'm sure this page is saying something interesting but it seems to have been written by a 13 year old child who has consumed too many artificial food additives. Any chance it can be rewritten by an adult?
See also DirectManipulation
: convert this page to a neutral tone, RenameMe