Updated About the IMGUI paradigm (markdown)

omar 2021-02-15 12:24:31 +01:00
parent adfe3d79de
commit 4f3f8b65b1

@ -2,12 +2,12 @@
**This is an attempt at explaining what the IMGUI paradigm stands for, and what it could be**. **This is an attempt at explaining what the IMGUI paradigm stands for, and what it could be**.
Proponent of the IMGUI paradigm have noticed it was that over and over widely misunderstood. Proponent of the IMGUI paradigm have noticed that it was widely misunderstood, over and.
As of Feb 2021, even the [IMGUI Wikipedia page](https://en.wikipedia.org/wiki/Immediate_mode_GUI) is completely off the mark. There are reasons for that: As of Feb 2021, even the [IMGUI Wikipedia page](https://en.wikipedia.org/wiki/Immediate_mode_GUI) is completely off the mark. There are reasons for that:
- the acronym may be misleading in the first place? - the acronym may be misleading?
- people didn't do a good job enough explaining or documentation what IMGUI means? - people didn't do a good job enough explaining or documentation what IMGUI means?
- they are different interpretation of what IMGUI means? - they are different interpretation of what IMGUI means?
- many popular IMGUI implementation have made similar design choices, making it more confusing what is actually the soul and backbone of the IMGUI paradigm vs a set of implementation choices. - many popular IMGUI implementation have made similar design choices, making it more confusing what is actually the soul and backbone of the IMGUI paradigm vs a set of implementation choices. In other words, many things haven't been thoroughly explored.
- the naming and success of "Dear ImGui" blurred the line a little bit further (should have used another name). - the naming and success of "Dear ImGui" blurred the line a little bit further (should have used another name).
### History ### History
@ -19,14 +19,12 @@ The acronym IMGUI was coined by Casey Muratori in this video in 2005:
### Do we need a definition? ### Do we need a definition?
Nowadays I am starting to believe that the term has caused more harm than benefit,
because it suggests there are two camps "IMGUI" vs "RMGUI".
The reality is there is a continuum of possibilities over multiple orthogonal axises.
The term effectively has dumbed down the discourse. The fact that we are even trying to put an official definition to a label is dumbing down the discourse and hindering people's imagination about the many possible areas of researches to be done in UI.
_"I kind of wish there was more radical experimentation in this space"_ [tweet](https://twitter.com/pervognsen/status/1361241939593416705) _"I kind of wish there was more radical experimentation in this space"_ [tweet](https://twitter.com/pervognsen/status/1361241939593416705)
Nowadays I am starting to believe that the term has caused more harm than benefits, because it suggests there are two camps "IMGUI" vs "RMGUI". The reality is there is a continuum of possibilities over multiple unrelated axises. Many of them haven't been explored enough, as popular IMGUI libraries have been designed for certain needs and not others.
The existence of those two terms effectively has hindered both discussions and researchs. The fact that we are even trying to put an official definition to a label is hindering people's imagination about the many possible areas of researches to be done in UI space.
### Half of a definition ### Half of a definition
@ocornut's attempt for a definition (WIP, 2021) @ocornut's attempt for a definition (WIP, 2021)
@ -36,8 +34,8 @@ _"I kind of wish there was more radical experimentation in this space"_ [tweet](
- The interface tries to minimize the UI library having to retain data from the app/programmer. - The interface tries to minimize the UI library having to retain data from the app/programmer.
This is in comparison with typical RMGUI which: This is in comparison with typical RMGUI which:
- Often have the app/programmer to retain lots of artifacts from the UI library (references/objects) - Often have the app/programmer to retain lots of artifacts from the UI library (e.g. create objects, maintain references).
- Often have the UI library retain app/programmer data in widgets, requiring synchronization mechanism. - Often have the UI library retain app/programmer data in widgets, requiring synchronization mechanisms.
What it doesn't stands for: What it doesn't stands for:
@ -51,7 +49,7 @@ What it doesn't stands for:
- IMGUI does not means limited layout feature. - IMGUI does not means limited layout feature.
- IMGUI does not means single pass flow. - IMGUI does not means single pass flow.
TODO: Each of those points could be explained with a paragraph. We could also describe how common UI libraries (of all types) stand on a given axis. TODO: Each of those points should be explained with a paragraph. We could also describe how common UI libraries (of all types) stand on a given axis.
### Vurtun's writeup ### Vurtun's writeup