IMGUI is a non-retained mode of graphical interface programming. IMGUI is useful when the interface structure is implicit in the program behavior, rather than being an a priori externalized artifact, and is common in games and possibly other soft real-time graphical applications.
The GUI toolkit is responsible for drawing and reporting i/o, but does not retain a model of widget structures itself. It may or may not track internal state over time, or have a stateful interface (like OpenGL), or be object-oriented, but in all cases the GUI structure and i/o is driven by application-side processes at runtime.
A typical use might be to attach GUI elements to 3d objects during rendering, interleaving calls to the IMGUI widgets with the 3d rendering calls, so as to produce all graphical output with a single traversal of the data structures. In cases where organization is needed across multiple GUI elements (for example, name labels that should not overlap), the toolkit may build a representation over time and then be asked to draw everything at once.
Casey Muratori has an IMGUI video presentation and discussion forum here: https://mollyrocket.com/forums/viewforum.php?f=10
I grew up in the GEOS/64 and AmigaOS (pre-MUI) days. I've only recently come to appreciate the beauty of the GEM environment. I have to admit that GTK, MUI, and all these other "modern" widget sets just confuse the #### out of me, and I concur with the author of the video that even the simplest of my GUI applications with these toolkits are horribly and intractibly complex. I'm thoroughly, 100% unproductive with them. For this reason, I now tend to write most of my interactive applications as console applications in Forth, which allows me to write trivial interactive applications. But I lose a lot doing it -- I lose the ability to use the mouse, the ability to draw graphics, etc.
I'm glad to see that there is some lingering (growing, even if slowly?) interest in IMGUIs again. The creator of the video is clearly ignorant of the older 8-bit GUIs, but that's not necessarily a bad thing; I feel that his presentation actually formalizes a lot of otherwise ad-hoc conventions used in the 8-bit era into something truely useful for the modern-day 32-bit era.
--SamuelFalvo?
I think a lot of us miss some the simpler GUI tools of yesteryears. The new stuff seems like it was designed by buzzword- and architectural-zealots who are paid per line of code you have to use. One has to spend a lot more time on GUI's for the same functionality than they had to in the past.