> GUIs represent a machine’s internal state, but that representation is often misleading, especially to users who take it literally.
And that's largely fault of the developers, since they build on layers upon layers of utility libraries, which are not exposed to the user but inevitably pop-up in the form of a broken metaphor or unintelligible error message.
User-facing systems should be defined around powerful data&workflow metaphors, and all the layers in system built around supporting those metaphors in coherent ways.
There is a tradition of people trying to build user systems around simple concepts, easy to combine (starting with Memex, then Smalltalk, Hypercards, and nowadays with mobile OSs). But there's always been a great deal of friction in adopting them:
- first because their experimental nature can't compete with the more polished nature of commercial systems based on legacy conceptual metaphors;
- and second, because up until recently, end-user hardware was not powerful enough to support the complex graphical and computational requirements for the heavy environments required to support these novel interfaces.
Now that computers are powerful enough to build novel experimental interfaces on top of all the legacy libraries required to run generic hardware, we're starting to see again a lot of experimentation of those system-encompassing alternative metaphors for interaction.
And that's largely fault of the developers, since they build on layers upon layers of utility libraries, which are not exposed to the user but inevitably pop-up in the form of a broken metaphor or unintelligible error message.
User-facing systems should be defined around powerful data&workflow metaphors, and all the layers in system built around supporting those metaphors in coherent ways.
There is a tradition of people trying to build user systems around simple concepts, easy to combine (starting with Memex, then Smalltalk, Hypercards, and nowadays with mobile OSs). But there's always been a great deal of friction in adopting them:
- first because their experimental nature can't compete with the more polished nature of commercial systems based on legacy conceptual metaphors;
- and second, because up until recently, end-user hardware was not powerful enough to support the complex graphical and computational requirements for the heavy environments required to support these novel interfaces.
Now that computers are powerful enough to build novel experimental interfaces on top of all the legacy libraries required to run generic hardware, we're starting to see again a lot of experimentation of those system-encompassing alternative metaphors for interaction.