What about KUI -- Keyword User Interface?
By HUNG Chao-Kuei on Saturday, August 29 2009, 22:21 - Permalink
I wanted to share this idea for a long time. Upon reading "Linux guru: interface innovation is the challenge" from linuxtoday, I realize that I can postpone no longer. My suggestion is simple: give users a simple entry box much like a google search box with cues (or possible keyword completions that get automatically displayed, if you are inclined to use command-line-interface phrases like me). That will be much simpler than either GUI or CLI and will be much more compatible with future ways of commanding a computer (or its new relatives) such as using voice, gesture, or thought.
The GUI lovers really should read Locutus's article: Just because it's pretty, doesn't mean it's easier. One of the reasons that some people (including me) prefer sticking to CLI is that you don't have to get into the labyrinth of layers of menus when the GUI changes, either because of software upgrades or because of moving from one's own computer to someone else's running a different distribution, etc. Finding the right entry in an unfamiliar menu tree really isn't more user friendly than using a terminal.
Then what about finding it in a menu graph instead of a menu tree? There is no technical reason why the scriptable fun educational math program drgeo should be accessible only from "edutainment => math => drgeo" (as is the case with my slax mixed with ubuntu packages) and not from "development => scripting => drgeo" at the same time. If it makes some sense for a program to be categorized as belonging to more than one group, then why not do it?
But this is really nothing new. It can be seen as tagging. Categorizing books or articles into non-overlapping groups of subjects (and non-overlapping subgroups, etc.) is the old way of organizing information. Tagging a bookmark or a blog entry with as many relevant tags as possible, is the more civilized way of doing it in the 21st century. But I don't know why the idea that a menu should be structured as a tree seems to have failed to evolve along with everything else.
When you have too many alternatives to reach each and every program, the menu and submenus become lengthy and/or deep. A text search box becomes a more natural alternative. As a user, I would like to be able to type "pppoe connection" and be prompted with a list of all possible programs (preferably just one) each with a short line of description. That way I don't have to know that it's pppoe-setup in my slax bootable usb key, and pppoeconf in ubuntu (my second favorite distro). Actually for a total newbie, he would type "adsl network" or something even less technical and arrive as fast as I do at a small number of choices of relevant programs no matter he is using GNOME, KDE, or LXDE. That's also one less reason to argue for unifying under one and only one distro for the sake of bringing Linux to the masses. Frequently used combinations of options can have separate entries, e.g. searching for "convert odt html" would bring up "unoconv -f html" while searching for "convert xls ods" would bring up "unoconv -f ods". It will be even better if a suggested list of possible keywords is constantly refreshed as he types through a keyword -- just like what google does for a search. We can conduct a user-friendliness competition among GUI, CLI, and KUI for a group of computer newbies. Or maybe the likely outcome is too obvious for the competition to be held at all in the first place :-)
This idea can be applied within a single complicated application, for example gimp. Searching for "cut subject" (or a more accurate English phrase to express that I want to isolate this cute tux mascot from its background) would bring up a list of dialogs containing "Foreground Select Tool" and "Intelligent Scissors tool", etc. Extending this idea, the unoconv example can be simplified by wrapping the command inside a simple GUI dialog. Ditto for ffmpeg and ImageMagick's "convert" command. In these cases, the process of invoking a command may become a two step keyword search, or a keyword search plus GUI dialog filling.
Old timers can always be given the option of falling back to GUI and/or CLI, of course.
Now think about how you would like to use your computer in the future. I imagine to be able to navigate a computer using speech and/or gesture. Well these are already somewhat feasible now. Even brain-computer interface has come to existence. (Please search. I hope one day Bug Labs would sell such an input module) I no longer do serious programming for a decade or so, but I used to program in my youth. If you ask me, I would vote for implementing these interfaces using KUI rather than GUI or CLI.
And I don't mind sharing this idea with Microsoft and Apple if they care to read this. We will not only see from which camp the innovations come, but also which camp implements it faster and better ;-)
Comments
I'm glad you blogged this. This is something that I, too, have been thinking a lot about in recent years. I absolutely agree that more things need to be tag-able and searchable by tags (menus, commands, etc)... This honestly shouldn't even be that hard to implement just by forking gnome-panel (gnome-session maybe?), Enlightenment or any of these and just adding tagging to the menu system. Obviously it would take an entire community of like-minded individuals to keep it up because once the ball got rolling it could easily become a huge project from what started as a quick and dirty hack. Though I guess that's how these things usually start.
Anyway, great post and hopefully someone who is reading it will decide to take that first step.
A lot of what you're describing sounds like Gnome Do:
http://do.davebsd.com/
In case you haven't heard of it, you press a keyboard shortcut (usually Super + Space) and a little window pops up in the center of your screen. Then you can type things like application names, file names, and keywords like 'define'. It auto-completes what you type.
In some cases, you can go through multiple layers. For example, you enter the name of a file. As soon as it recognizes which files you are talking about, you press tab. Then you select between different actions, such as copy, move, etc. Then you press tab again to select the new location.
As you suggest, it is a very speedy interface, however I think a GUI system is still necessary to help new users out, at least for now.
Nepomuk-KDE (http://nepomuk.semanticdesktop.org) and Gnome Tracker (http://projects.gnome.org/tracker/) have, AFAIK, implemented file tagging creation and search. From here to tagging executable files there's only a small step - which could easily be done in cooperative manner. Think of it as Digg for desktop users - the community maintains tag clouds for apps.
One other thing: It would also be nice if some tags had some visual representation next to them (icon?)
to ch3mical fusi0n: Yes, the implementation should be easy. It requires more thought being put into design details and collaboratively building a list of keywords for each app (or for each use case of each app) than coding. It may not even need forking -- adding a function to the desktop env should work. Glad to know that there are other people who see the usefulness of this.
To Linux Loop and Bogdanbiv: Thank you very much for bringing these to our attention. Indeed I haven't tried any of these interesting projects. Yes, the idea is like Digg for desktop users. Any of gnome-do, Nepomuk-KDE, Gnome Tracker might be close to what we want. But the project leaders may want to think about it more from a "computer novice user" perspective rather than from a "accelerated mode for experience linux user" perspective, so much so that one of these projects eventually becomes a prominent search box in the taskbar of any freshly installed gnome or kde desktop just like the google search box is prominently displayed in any FF.
This may not even require GUI -- an ncurses implementation is possible.
ldn't even be that hard to implement just by forking gnome-panel (gnome-session maybe?), Enlightenment or any of these and just adding tagging to the menu system. Obviously it would take an entire community of like-minded individuals to keep it up because once the ball got rolling it could easily become a huge project from what started as a quick and dirty hack. Though I guess that's how these things usually start
This post's comments feed