Hysteresis (1997)
mackido.com
mackido.com
This is a nuance that has to be implemented by the UI developer, otherwise you're essentially stuck in a multi-step process you cannot get out of, no matter how many steps you have left to change your mind about. This is mostly implemented in a bad way in custom non-native-UIs like browser JavaScript where a button mouse event might be scoped to a click regardless of when the mouse down event and the mouse up event happens.
Native elements have (usually trough decades of legacy development) this down to perfection (in my current OS at least), even here on HN where the "add comment" button really is just the native button, it works flawlessly. But as soon as someone tried to 're-implement' it, things go horribly wrong, and something that looks like a familiar UI element suddenly behaves completely wrong.
With so much time spent interacting with UI widgets, any time you have to take a moment and think about how some new thing might work differently from the millions of other times you have used it is just painful.
Edit: Just tested in windows and realized that it switches between select on mouse down and select on mouse up depending on if you click on the text or if you click on the whitespace part of the file, whitespace it selects on up... Anyway, yeah, few people do this correctly, even Microsoft has many strange things.
This is because the drag action changes.
In the whitespace part, if you do mouse-down, the file gains a faint selection. If you "commit" with a mouse-up, it's selected. But you can instead move the mouse, turning it into an area selection (you draw a square and everything in that square is selected on mouse-up).
If you click on the text, the selection is committed right away on mouse-down. If you move your mouse after mouse-down, you start a drag-and-drop action; which you can in turn abort by dragging the file to its original position and doing mouse-up, leaving you with the selection.
Few people could describe this if asked, but on an intuitive level it seems to work, and it follows the principle of giving you rich visual feedback and letting you back out of an unintended action (just like aborting a button click before the mouse-down)
Wikipedia defines two terms taking the possible lag into account: "Hysteresis can be a dynamic lag between an input and an output that disappears if the input is varied more slowly; this is known as rate-dependent hysteresis. However, phenomena such as the magnetic hysteresis loops are mainly rate-independent, which makes a durable memory possible." https://en.wikipedia.org/wiki/Hysteresis
To begin with, in its introduction the wikipedia page on hysteresis already says: “Hysteresis can be a dynamic lag between an input and an output that disappears if the input is varied more slowly; this is known as rate-dependent hysteresis.”
Thats what the article covers— rate dependent hysteresis.
But the equivalence goes actually deeper!
Even the “magnetic” hysteresis you learnt of (but not about, or else you would not have thought to complain) is in essence a time lag phenomenon..
This goes quite deep, but basically its the converse of the Noether theorem that time (not just reversal, not just a sign change) invariance leads to energy conservation—- in magnetic hysteresis energy is not conserved.
Here is a 2011 article linked from the wikipedia that takes quite a bit of effort to try explaining magnetic hysteresis in a time dependent way.
Nevertheless, this kind of hysteresis is not interesting, it is just the phase difference between an output and an input of a linear network, a.k.a. the phase of the transfer function between that input and that output.
This kind of hysteresis, i.e. such a phase difference between 2 variations, is ubiquitous, it appears in any system described by linear differential equations and also in any system described by non-linear differential equations when only small variations are applied to it.
So there is no advantage in calling it hysteresis instead of using alternative terms, which had been used much earlier than "hysteresis", e.g. "phase difference" or "phase lag" or just "lag".
The interesting forms of hysteresis, for which a new word was useful, because they could not be described using the older theories of linear systems, are those encountered in non-linear systems, e.g. ferromagnetic materials, ferroelectric materials, bistable electrical circuits, bistable mechanical switches, and so on.
In all kinds of hysteresis, an output is a function not only of inputs but also of an internal state (which is determined by the past inputs of the system).
However, in the case of the periodic steady-state analysis of a linear system, the internal state of the system is not considered explicitly, because the trick of replacing a system of linear differential equations in real variables with a system of algebraic equations in complex variables takes into account the internal state implicitly (i.e. the energy stored e.g. in electrical devices like capacitors and inductors, or in mechanical devices like springs and flywheels).
So in the analysis of a linear system, the "rate-dependent hysteresis" does not need any special treatment.
On the other hand, in the case of non-linear systems there is no trick allowing to ignore the hysteresis, it must be handled explicitly, using a state that depends non-linearly on the past inputs.
In conclusion, it is true that the use of "hysteresis" in the parent article and in the Apple GUI is not incorrect from the point of view of the meaning of "hysteresis" in physics, but this is nonetheless a non-recommendable use of the word.
Much less confusing and also shorter would be to say "Menu lag" or "Menu delay", instead of "Menu hysteresis".
Does anyone know of other resources like this that explain easily missed UI best practices?
https://en.m.wikipedia.org/wiki/Hysteresis#Etymology_and_his...
Maybe you are deriving your sense of the word from examples in physics and engineering where hysteresis is referred to that do not look quite like the situation described in UIs here?