The point against GUIs

This is only a statement of opinion. Every now and then, I undertand I’m fighting windmills. Who knows, maybe I am wrong?

Terminal

A GUI is a terminal, i.e. a human / machine interface.

There ends the machine, i.e. for us in practical terms, the software. Beyond that point, the human is alone, helpless: what you see is all you get. No tools (that you would choose, bring in, design) will assist you. You are at the mercy of the predefined and closed situation. You are a consumer. As dumb as any. Condemned as charged: all is intuitive (abeit not in reference to your intuition, but to theirs).


The philosophy of professional software has always been to decouple terminals from the software itself. To allow the user to bind the two, in order to interpose the tools she thought would help her: maybe a filter (grep), or an input generator (yes), or some sophisticated automation (expect), or interactive assistance (debugger).

This worked best with APIs based on lines of text - a generic basic format, easy to produce, and to consume. Not speaking of versioning (historically based on diff and patch).

The terminal was a tool in which to run the software, not an integral part of it.

Lines of text versus graphics

Beyond the obvious and universal advantages of language in terms of expressivity (‘a word is worth thousand pictures’), concision, potential for communications (e.g. fighting ambiguity), text offers simple support for chunking and ordering ideas, which has probably deeply modelled the human mind over the 5000 years of history.

The human brain is highly parallel, but consciousness is single-threaded.

Communications is mainly built around logos: synchronous (in terms of meeting the same steps in the same order) deployment of meaning in time. Pictures conveying information instantaneously (Napoleon’s famous quote -- in words), is unverifiable. Nothing prevents communications better than the assumption it has already taken place.

Confidence in acquisition of information is grounded in stability, and continuity: the knowledge that data can safely be treated with granularity as small as necessary.

Graphical data on the contrary, is holistic. Its interpretation is subjective.

Even GUIs are usually produced using text based languages.

Regression back to modernity and other topics

Obviously, I have already made some statements leading to the prompt to write my ‘opinion’ down. And already received some counter-arguments (the same team using the software may also improve it, GUIs are ‘modern’, and ‘command line’ is obsolete, etc.) Discussing them would drive us out of the scope of this page.

One point however may be mentioned here: the opacity and closed nature of software bound to a GUI as its only interface may be intentional. Restricting the ability of the user to interact with the software may be thought as making it easier to monitor and control. This is probably correct at first sight. Probably also short-sighted. How far does cutting the wings of chickens affect the foxes?

Disclaimer

This analysis doesn’t prevent me from designing tools that can be invoked from a GUI.