The Evolution and Good Practices of User Interface Design

From CLI to VUI

Apple WWDC2020 ended not long before. As a leading company in user interface design, Apple now is giving more and more focus on Siri, the vocal user interface (VUI) as I understand.

The user interface bound to software applications nowadays doesn't take just one step to reach here. It evolves constantly.

The most famous terms we encounter every now and then include CLI, TUI and GUI. So what are they?

On Wikipedia pages at, and, there are the following quotes:

Considering the capabilities of computers, a rough path of UI evolution is from CLI through TUI, GUI and finally to VUI today. And of course, they are not separated from each other. One well-designed software application can take advantages of all these UI designs.

Good Practices

Software products all have their suitable groups of users. Some applications need to be as easy as possible to enable those who have little knowledge about computer to tackle with, while some others can be very complex to enable powerful enough capabilities.

Basically, for the absolute majority of modern software applications, GUI is already more or less a must.

For productivity related applications (or applications developed for software developers), it is also quite common nowadays that CLI is included in one or more ways.

For example, the Qia Web Viewer I made is equipped with a text-input control CLI at the bottom.

The text-input control doesn't only accept URL such as but also accept general commands such as !exit which triggers to exit the running application. Comparing to moving the mouse cursor to the exact location of exit button, entering !exit to the usually focused CLI input can usually be much faster for users like me (or keyboard preferred users).

Worth mentioning, there are also many presentation forms of CLI, such as the currently very popular "Command Palette" in Visual Studio Code, Obsidian and even on GitHub and the "Spotlight" on macOS. Although somehow hidden behind one button or menu item click, or keyboard shortcut stroke, the "Command Palette" as one way of CLI is really one trending design that I see in many applications these days.

Be or not be part of GUI, keyboard shortcuts are usually also very important parts of desktop applications. To be honest, I would prefer to name it KUI. However, the "KUI" seems not to be a popular and well-received term. Being different from mouse button clicks or finger touch gestures, keyboard shortcut strokes are usually not explicitly relate to any graphical elements and also do not require a user to point at a specific area. Together with muscle memories, keyboard shortcuts can boost the productivity a lot for many users in many use cases.

And as just mentioned, fine-tuned mouse button click design and touch gesture design are also very essential parts of modern software applications. What is the older and newer version of mouse pointers and fingers? You probably get it. It is Stylus, although we usually prefer to call the devices as Apple Pencil or Microsoft Surface Pen, and also don't forget the Pens for tabletts such as made by Wacom. What is the big difference? The precision. So for some applications, Stylus related UI tuning is also some thing nice or necessary to have.

Then not last, and also not least, VUI! Would it be hard to implement voice recognition? Yes, it is hard. But if we think that applications usually run on top of a foundation, namely, such as iOS, iPad, macOS and Windows. For applications on Apple OS, enabling the communication channels to Siri, VUI may also be easy to implement. So if VUI helps, having it should of course be a good practice.

Beside all these mentioned above, Applications, especially those designed for developers, can generally adopt more complex UI logic and even provide API for external automation and customization. The presentation again can just like of CLI take many different forms. Just like what I have tried to avoid saying as API, the thing behind what I called "the communication channels to Siri". Another more well-known way is enabling plugins. So why does enabling plugins also means proving API? How plugins interact with the host applications? I think, 99+ out of 100 are via APIs provides by the host applications.

In short, kind of like nothing but still something, good practices of UI design may be a combination of all, incomplete namely, CLI, GUI, VUI, API and possibly also TUI.

* cached version, generated at 2021-11-21 11:07:40 UTC.

Subscribe by RSS