Introduction
You know how on TV every piece of software has a UI that is centered around doing something extremely specific and visualizing it in an intuitive and clear way? We all make fun of it, saying āhave these people ever used a computer?ā Sometimes itās bullshit and sometimes whatās being visualized is something we couldnāt reasonably expect to have accurate information about but other times itās like ā why ARENāT our apps like this?
When Iām trying to solve a problem with a CLI, I write a tiny shell script whose UI is extremely specific to the problem Iām trying to solve, and I do it in a minute or less. I do it incrementally. My command line environment really does operate like a hollywood UI.
If we had good graphical composability and the ability to do the kinds of mashups in a graphical environment that are normal in a unix command line, any āpower userā (not just developers) could have a hollywood UI ā not because some developer had used existing shitty UI toolkits to painstakingly develop something for their incredibly specific case, but because you can whip something up out of components quite quickly that will do what you want in a graphical way.
I think we could at least manage general composable interfaces like those shown in Appleās Knowledge Navigator film, if not Starfire, if we tried. The catch is that commercial software (and indeed no software that is meant to be run by more than one person) can do this.
If the average GUI app was like the average shell function (i.e., made in minutes by someone who isnāt an expert, slowly honed over years, and never intended to be able to be used by anyone else), weād basically have that future. The catch is to make doing that kind of stuff as easy as the unix command line is. We only donāt have it because GUI toolkits are so bad that it takes an expert a long time to write a shitty app ā leading to a situation where GUI apps are required to be general-purpose, stable, and unexpressive, in order to make up for the labor that went into them.
A composable graphical system is possible, if we do it from the ground up. The Alto & Squeak environments get close, and so does Tcl/Tkās āwishā interpreter, but weāre not there yet.
Here are some guidelines for a potential composable graphical UI system.
(Adapted from two threads: https://niu.moe/@enkiv2/99366610716102498 and https://niu.moe/@enkiv2/99366404418510312)
This post is also available on gopher: gopher://fuckup.solutions/0enkiv2/composability.txt
A prototype of a system based on these constraints is under development here.
By John Ohno on January 17, 2018.
[Canonical link](https://medium.com/@enkiv2/some-tentative-guidelines-for-gui- composability-2900abead1d9)
Exported from Medium on September 18, 2020.
Rendering context...