GUI vs. UI
I believe words are important.1 I recently caught myself saying something I consider dangerous for the way we think about computing and programming. I found my self saying “UI” (which is short for “User Interface”) to describe a “GUI” (a “Graphical User Interface”). UI is a broad category which encompasses multiple ways a user may interface with a system. A GUI is a specific instance of UI which relies on ‘visual metaphors’ to communicate information to a user and allow the user to interact with the underlying system (the most ubiquitous example of a GUI is a website).
When I use ‘UI’ to describe a GUI, I’m limiting the definition of UI only to GUIs.2 Shrinking the definition of UI is dangerous because it makes it easy for us to forget about all of the other ways users interface with a system. A CLI (Command Line Interface) or API (Application Programming Interface) is just as much a UI as a GUI. All interfaces with a system should be as user-friendly as possible and the first step to accomplish this is to recognize all of the ways a user interfaces with a system.