Monday, 5 October 2020

Graphical User Interfaces are evil

Many GUIs have this sort of issue:

Until a recent upgrade, every time I tried to reconfigure a machine on the Kubernetes dashboard nodes page: scrolling to find it, clicking to open the menu, moving to choose the menu item... the page refreshed just a fraction of a second before I could click on the now absent menu item.

Similarly, trying to read labels from the 'show all' dynamic link: before I could read the labels and values properly, the page refreshed with its inexorable 5 second march.

It was like playing Crossy Road, but without the intellectual rigour.

Many other applications have similar problems: long lists of items which are continually re-sorted as more data comes in - forcing me to wait until the list takes several seconds to stop jumping around, despite the item I want having been on the screen in various places from the very start - so this sort of issue is endemic and really should be addressed by UI frameworks: I'm looking at Microsoft, Apple, Gnome, KDE, Chrome, FireFox, etc.

What I expect to happen:
  1. When I scroll or click anywhere on a page (even the background), the refresh/update timer should reset, and animations/updates should pause.
  2. The local configuration should be able to set the refresh time, in addition to changing the background colour (because wall-mounted displays might need faster updates than a human).
  3. The local configuration should be able to prevent the page from jumping to the top on refresh/update - at least, if the user has been active within some locally configurable time. (Again, wall-mounted displays might benefit from jump-to-top behaviour.)
  4. The interface should detect that a press action has landed in a region of the screen where the resulting operation has changed within a normal human reaction time - different machine, etc - and take suitable action, particularly if the region appears similar: proactively alerting the user of the change (e.g. displaying a slowly fading a circle around the pointer, beeping, etc) and/or ignoring the likely accidental operation (but with feedback similar to the proactive alert to explain why the operation was ignored).

No comments:

Post a Comment