Saturday
24 Feb 2007
Command Line for the Common Man: The Command Line Comeback

Command line interfaces are bell-bottom out-of-fashion in the current Web 2.0 boom: I have yet to see an Ajax-enabled glass-reflected command prompt. Let’s face it, command line interfaces are extinct to the masses. The GUI dealt the first blow, and now the Web has nailed to coffin on the old style text interface, and it seems to have been a boon for the user. I don’t know if I can set up a printer on the command line, but I do know that I don’t want to try.
But maybe that isn’t the fault of command line interfaces in general. Maybe it’s just the command lines we’re used to. The hard part of learning Unix is memorizing command names as unfathomable as Stonehenge’s origin. And even if I do remember the command name, remembering its options is like bobbing for apples in a cement mixer. I still have to ask my co-workers what flags are needed for untaring a gzipped file. “tar -xfvz”. How could I forget?
If commands were memorable and their syntax forgiving, perhaps the command line wouldn’t be going the way of the punch card. And perhaps they aren’t. Perhaps, command lines are staged for a comeback.
Language
In the run to abandon command line interfaces for the GUI, we’ve left behind the versatility of language.
Language has an immense amount of descriptive power. Pictionary is a game where you try to represent objects, places, and abstract thoughts in pictorial form. It’s hard. There is no reverse game. Words can capture abstractions that pictures cannot.
The icons that Microsoft Word puts in its standard toolbar are a great example of graphics being used as a poor replacement for words. Can you figure out what each of these icons does?
Similarly, there is a common belief that localization costs can be reduced through the use of icons. According to ENLASO, “Icons and symbols afford global manufacturers design advantages that make products easier to produce, learn, use, and maintain.” Unfortunately, the overuse of icons in liueu of text doesn’t make a program easier to learn while making it language agnostic. Instead, it makes the program equally undecipherable in all languages.
Type What You Want To Do
In the last couple of years, the power of language is once again being harnessed, but this time in more humane ways. The search revolution is a powerful example.
The move back to language started with web search engines in general, with Google placing the capstone when it’s name became the house-hold verb for “typing to find what you want”. In fact, Googling is almost always faster then wading through my bookmark menu (which says there is something wrong with using menus as a mechanism for accessing bookmarks).
After the web, search came home. OSX, Linux, and now Vista have integrated desktop searches that make searching your computer as nice as searching the web. You can now, with a few memorable keystrokes, find what you are looking for. This stands in stark contrast to racking your brain trying to figure out where, in your morass of files and folders, you put a document. This bears repeating: it is often easier to use a desktop search than to find something you placed on your computer. Desktop search is a large step forward towards making computers more humane. With desktop search you no longer have to think the way the computer does.
But “typing what you want to find” is still a far cry from “typing what you want to do”.
On The Web
So, besides search, what does language and command lines have to do with the web?
Imagining using a drop-down menu to select the one web site you want to go to out of the 100 million web sites in existence. Ludicrous! How do we actually surf to a site? By typing an address into the address bar. When we want to go to the mail “application”, we type in “gmail.com”; when we want to open a news “application”, we type in “nytimes.com”. On the old unix command lines, we would type type “pine” and “rn”. See a similarity? The address bar is just a primitive command line. A command line that your grandmother can—and does—use.
As one looks around the net, one can see the power of language being harnessed to amazing effect. The quick-add features of 30boxes.com and Google Calendar are my favorite examples: they forgo the clunky and time-consuming forms (that make you think the way the designers thought) for the utter simplicity of just typing an event’s information. The quick-add feature doesn’t even really feel like an interface, which is the highest compliment an interface can get: the better an interface is, the less it’s noticed.
Standard GUIs, with their drop down menus, check buttons, and tree-lists just cannot compare to the range of options that a text interface gives effortlessly. In just five alphanumeric characters, you can choose one out of 100,000,000 possible sequences. And choosing any one sequence is just as fast as any other sequence (typing five characters takes roughly 1 second). I challenge you to come up with a non text-based interface that can do as well.
The Future
It’s time for new, user-centric command line interfaces to make a comeback. A command line that lets you type or say what you want to do, and the computer does it. That’s what the interfaces of the future will be. And that’s what Enso aspires to.*
Ziad Hussain recently pointed me to this excellent article by Don Norman, UI Breakthrough-Command Line Interfaces. It was now a year ago that Don and I met for breakfast. I demonstrated Enso to him and by the end of the eggs-benedict, our consensus was that it was time for command lines to rise again.
*It has a long way to go to fulfill that vision. But, it is a start.

COMMENTS
34 Voices Add yours below.