Ages ago, in the long-forgotten year 2002, I was working on a viewer utility for Granny 3D . In those days, cross-platform toolkits for any purpose were much less mature, and far less plentiful, than they are today. If you were one of the comparatively few people shipping GUI applications across a wide variety of platforms, you were probably going to have to roll your own UI if you didn’t want to suffer mightily with one of the existing solutions.So, in the course of developing the viewer utility, I wrote a GUI layer. As I was writing it, I began to realize that “retained” GUI code design has all the same drawbacks that typically cause us to avoid using retained-mode APIs in graphics. I experimented with having the GUI code operate in a more immediate fashion, like an immediate-mode graphics API, and found that everything was simpler, more powerful, and could span the gamut of both 2D and 3D interaction seamlessly.Excited about the results, I reported on the technique to a private mailing list in the fall of 2002. To describe it, I coined the term “Single-path Immediate Mode Graphical User Interface,” borrowing the “immediate mode” term from graphics programming to illustrate the difference in API design from traditional GUI toolkits. I continued to use the technique for several years, until I finally put up a super rough public video describing the basics in 2005: