UI Breakthrough-Command Line Interfaces

Column written for Interactions, volume 14, issue 3. © CACM, 2007. This is the author's version of the work. It is posted here by permission of ACM for your personal use. It may be redistributed for non-commercial use only, provided this paragraph is included.

Want to know what I think the next UI breakthroughs will be? Here are two, both of which can be considered a return to fundamentals:

  1. Command line languages;
  2. Physicality: the return to physical devices, where we control things by physical body movement, by turning, moving, and manipulating appropriate mechanical devices.

This column discusses the return to command line interfaces. In a future column I will talk about the return to physical controls: physicality.

Command line languages

Once upon a time, computers were controlled by commands. The interaction paradigm was based upon a control language. Commands and their arguments were entered on the line following the (invariably) blinking cursor.

Then graphical user interfaces (GUI) appeared, replacing arbitrary memorized commands with direct manipulation, where actions are performed by moving objects on the screen and selecting from menu displays. GUI has served us well, replacing the need to memorize geeky instructions with the ease of selecting from the visible items on the screen. But GUIs work well only when the number of alternative items or actions is small. When the number of items reaches the level within today's complex operating systems, applications, and the information spaces of the internet, the GUI does not scale well. Even searching one's email records is tedious with a GUI, and when it comes to photographs, music, extremely difficult. The internet, of course, cannot be navigated by just the visible structure.

What is to replace the GUI? Ah yes, journalists are constantly asking me that question, hoping I will speak of virtual reality implants by which we fly effortlessly through hyperspaces, finding just the items of interest, then immediately packaging and caressing it to do our bidding in reports, diagrams, and instant insights of wisdom. Well, the answer is much simpler, and already here: it is search. The real surprise, though, is that search engines have migrated to becoming answer engines, controlled through a modern form of command line interface.

We navigate the internet by typing phrases into our browsers and invoking our favorite search engine. But more and more, we type in commands, not search items. All the major search engines now allow commands to be typed that directly yield answers without the need to go to an intermediate webpage. Consider these three examples, each for a different search engines.

  • Google: the phrase "define:embodiment" directly provides the definition.
  • Yahoo!: the phrase "time in Nagoya" directly provides the time (3:13 AM Friday, when I tried it last).
  • Live.com: the phrase "cars in China" returns with "15 per 1000 people.

Even though these three services are called "search engines," in fact they are becoming "answer services" controlled through their command line interfaces.  The control language seems more ad-hoc than systematic, and the language forms are still spotty and idiosyncratic, but it is nevertheless a form of command line interaction. Each service uses a different language structure, and the three examples al work differently on the different services, or more accurately, fail to work except on the service for which it was developed.

These modern command languages have some major virtues over the ones in the past. They are tolerant of variations, robust, and they exhibit slight touches of natural language flexibility. As a result, the requirement of strict adherence to syntax and form that characterized the earlier control-line languages is not required. If an illegal command format is entered, the system gracefully retreats from the status of answer service to that of search engine, often returning pages that are of direct relevance.

The same power has now appeared within email and operating systems. Google's email system, Gmail, eliminates hierarchical menu structures for storing messages and instead provides a powerful search mechanism: search line interaction rather than GUI. Moreover, the recipient f the email can readily attach labels on individual messages to make simplify the retrieval and to allow different emails to be grouped together by common labels. Labels are the search engine's equivalence of folders. Google is not alone. Microsoft's desktop search within the Vista operating system and Office 2007 provide similar power for files within the computer and Outlook email (although in this case, search is used as a supplement to file structures, so it is possible to  organize and retrieve items though a combination of retrieval with the aid of  search terms or by visually traversing the hierarchical file structure).

Both Apple and Microsoft now provide search thoroughly integrated into their operating systems. Both have pervasive search folders, so that once a folder returns the results of a search, it can be saved and referred to as needed, with the contents dynamically changing as the items in the computer change.  Both have a rich command line format. Thus, to find this document in my Microsoft Vista file system I enter a command into the search bar:

"command line folder:interactions type:doc"

The request finds all Microsoft Word files in any of the folders on my system dealing which has the word "interactions" in the folder name and the words "command line" in the contents or title. Similarly, to find my latest email with the editors of Interactions about the schedule for submitting manuscripts, I replace the search query with

"schedule folder:interactions type:outlook"

I use these examples to illustrate the transformation of search into a truly functional command-line interface. At them moment, their power within the computer is primarily as an aid to search rather than to execute actions and applications (although there is some ability to do these). When it comes to finding documents, these command line control structures really are an advance. We are looking for answers, not intermediary documents. Navigating our way through thousands of hierarchically organized files is a necessary nuisance. Now I seldom try to navigate my file structure, even though it is very efficient and quite well-structured. Why not? Because I have one half a Gigabyte of data in my mail files, 700 folders and 6000 files in my documents folder, and 4,500 photographs. Far too much to search through visually. And now, with powerful search command language, plus labels and keywords that can be added to files, emails, and photos, it is possible to go directly to the desired item - or at least, very close. The old command line interface is dead: long live the new, much improved command line.  

The new command lines are far more flexible and robust than those of the past. Word order is not critical, often we can use synonyms or even related terms. Spelling accuracy is not even required, for the systems can use its own knowledge to correct spelling errors, or at the least, to suggest spelling variants.  Search is never anything I want to do. I don't want to search -- I want to know something. I want an answer engine, not a search engine. The new command line interfaces still have a way to go. They have appeared serendipitously, as system developers slowly expanded the capabilities of search tools. But now it is time to recognize them for what they are - and for how much better they could become.

Command line interfaces. Once that was all we had. Then they disappeared, replaced by what we thought was a great advance: GUIs. GUIs were - and still are - valuable, but they fail to scale to the demands of today's systems. So now command line interfaces are back again, hiding under the name of search. Now you see them, now you don't. Now you see them again. And they will get better and better with time: mark my words, that is my prediction for the future of interfaces.

Isn't progress wonderful?

Don Norman wears many hats, including co-founder of the Nielsen Norman group, Professor at Northwestern University, and author, his latest book being Emotional Design. He lives at www.jnd.org.

Afterward

Turns out that the power of command line interfaces for GUIs has not been lost on developers and enterprising startup companies. Several people have written with pointers to sites that offer interesting command line systems that can be added to existing Operating Systems.

For me, the most interesting, and best done, is Enso, a product of four enterprising folks in Chicago. Worth trying. And read their design philosophy. Gee, sounds awfully familiar, kind of a mix between Jef Raskin and me, but then again, Jef and I were always interacting. (See my eulogy for Jef.) The similarity is not an accident.(Disclaimer: I have no involvement with the company.)

The second company is YubNub. This is a powerful command line interface, which now has over 10,000 commands. Oops. This is for the seriously inclined. For the serious geek among us.