For introductory purposes, it is better to consider a hypothetical version of segusoLand, where the screen is a bit full of stuff.
When you start the hypothetical version of segusoLand, you are presented with five panels: the verb panel, the file panel, the program panel, the device panel and the time panel:
Please don't scream "the initial screen is too cluttered, newbies could be panicked". The real segusoLand is not like that: it does not have this initial complexity. Just ignore the problem for now.
The program automatically hides the things that don't make sense with the current selection. In other words, the lists have been narrowed to show only the useful things.
Hiding (narrowing) is not the innovation of segusoLand; the concept of information hiding is very old, even in the field of user interfaces: for example, it is common for an application to hide the files it cannot manage. The real innovation of segusoLand is
The actual technique used by segusoLand to treat files, verbs, devices and programs in a uniform way is called "reciprocal incremental list narrowing", or simply "narrowing".
First let me explain the "incremental" part. segusoLand's list narrowing is "incremental" because it acts on the cumulative selection. What does it mean? Select the program "the gimp", leaving the GIF selected, and see what happens:
This explains the use of the word "incremental".
What about the "reciprocal"? This is the most important part. segusoLand's lists are reciprocal because selecting an item from any list triggers narrowing of that list and all the other lists. We have just seen this: selecting Gimp hides some programs but also some files, some verbs, some devices. So, where is the reciprocity? In this case, here:
You are beginning to see the potential of this idea now? ;-) But wait, this is just the beginning.
So far we have been following the traditional "file-oriented" style, where you select a file for first, and then the rest (a verb, a program, a device...).
Now we shall see that segusoLand allows many other styles: task oriented, device oriented, program oriented. We shall also see how an action can be executed.
Suppose you want to view a picture, but you are new to Linux and don't know how to do it. Deselect all, and select the verb "view picture".
Furthermore, a red arrow appeared, showing what is missing in order for the action to be complete. In this case, the program and the file are missing. The red arrow is an invaluable aid to selection.
Of course, if you had selected "Edit pictures" instead, you would only have seen the program "Gimp":
Yes, but how did you find the picture? You had to scan all the files in the folder with your eyes. This is why traditional systems use folders: to organize your files, in order to scan them more quickly with your eyes. Sadly, newbies don't organize their data. They tend to put everything in their home folder (called "MyDocuments" on Windows). Furthermore, even if you are NOT a newbie, and use many well-arranged, hierarchical folders, reaching the folder takes much time, and many clicks. Also, organizing data takes time. Finally, you have to remember where you put your data.
With segusoLand, if you don't organize your data, there is a trick that that greatly reduces the list of files you must scan: selecting the files last. It is better to select the most "meaningful" thing first---that is, the one that "cuts" the most files. For example, if you want to print, it is better to select the printer first. Or the verb. This will hide many files, thus making easier to find the right file.
Example: We want to print a gif. Since we are smart, we decide to select the device first:
See how the files have been narrowed to only those files that can be printed? Wait: don't select the file yet. Select the verb "print picture" instead:
Now you only see the pictures in your computer, therefore it is much easier to find the right one to print. And if you're still not happy, i.e. the pictures are still to many, and you want to see "only the pictures showing Jack Nicholson", you can still do it, by clicking "Jack Nicholson" in the "index of concepts" (described later).
Please notice how important it is to be able to select verbs, devices, programs and files IN ANY ORDER.
Many people have objected that "devices are useless". Nothing could be farther from the truth: selecting the device FIRST makes you spare time LATER, when you must select the file. That's the beauty of narrowing. :-)
Now we shall see how to actually execute an action.
Of course you will select "My computer" for first:
Once again, all the things which don't make sense with this device have disappeared. In particular, all files and programs have disappeared, and only three verbs remain.
Of course you will select the verb "Turn off":
What happened? Why wasn't the action executed? It is obvious because of the red arrow : you need to specify a time. We decide to specify a time in the future. This is useful for example if you want to go to bed while listening to some music but turn off the computer automatically when you are asleep.
Select the time "10 minutes from now", and see what happens:
A "Go" button has appeared beside the verb. This means that the action is complete (i.e. all the necessary informations have been given). The red arrow also notifies it in case you don't notice.
click "Go": your first action was executed.
But wait! Can you see the problem? How do you select the FIRST thing? At the beginning, when nothing is selected, segusoLand shows you everything: every verb, every file, every program, every device. So it's very difficult to select the first thing. You have to scan a long list. (Furthermore, the initial complexity and the big number of choices would scare the newbies away.)
Elsewhere, I said that segusoLand allows you to select the verb first. But the verb list is VERY long, when nothing is selected. So no one would ever do that.
So, we have a problem. We could be tempted to pretend the problem does not exist, and reply
It MUST be so, there is no escape. Nobody can predict what is in your mind, until you "say something". Since you haven't selected anything, it's like you hadn't said anything. Therefore, segusoLand has no choice but to show you everything. Only after, when you select something, we can hide the things that don't make sense.
Strictly speaking, this argument ("there is no escape") is false, because we could organize things in a hierarchical way, when nothing is selected. For example, instead of a flat list of verbs, we could show a hierarchy (i.e. a tree): the first choices would not be verbs, but categories: networking, file management, multimedia, system, settings... and so on.
This is the solution we find in all traditional systems (KDE, Gnome, Mandrake's start menu, Windows, ...): in these systems, if you want to select a file for first, you have to traverse a hierarchy of directories, called the "file system". If, on the other hand, you want to select a verb/program for first, you traverse a hierarchy of verbs/programs, called the "start menu" or something like that.
Unfortunately, this solution has many problems:
"change the mouse cursor theme because I have sight problems"This is what is in my mind. Now, which category must I click? Which is the right one to click? Look&feel, peripherals, or accessibility? You simply cannot tell, a priori, because the above action is related to ALL these categories. So you end up trying all the categories one by one, exhaustively, defeating the whole purpose of having a tree. What's worse, you loose confidence in the system and begin not to read the names of the categories anymore; you just click all possible categories one by one. In conclusion, hierarchical categorizations into trees have an inherent problem.
In conclusion, whatever arrangement I choose, there will be a situation where this arrangement is not appropriate.
So, the dilemma is how to select the first item without forcing the user to scan a long list.
Fortunately, there is a solution. The key is to understand that the user already knows what he wants to do; the idea is already in his brain, translated into english, with a precise wording. For example, "I want to play some good music by Michael Jackson", "I want to browse all the possible configuration options of segusoLand", "I want to burn an MP3 to an audio CD by using a CUE sheet", "I want to format the hard disk", "I want to shutdown the computer".
The only way we can dispense the user from scanning a list linearly is to allow him to express his idea with the words he already has in mind. Just tell me those words. You don't need to scan anything.
So, the mechanism chosen by segusoLand is this: 1) first think what you want to do 2) then tell me one or more words from the sentence you have thought 3) then I show you the panels, already narrowed, containing only the relevant verbs/programs/files/devices.
There is no way to furtherly simplify this without loosing generality. Humans communicate through language, sorry. :-)
How, exactly, does the user communicate those words to segusoLand? By typing them? No, because it is too unpractical in a mouse-driven environment. By speaking? No, speech recognition is too difficult for me to program. So I opted for a compromise: you click the words from an alphabetically ordered list.
This does not mean the user must once again scan a long list, defeating the purpose! I mean: the list is long, but you do not have to scan it linearly. If the number of words in the list is N, finding a word you already know takes time O(logN), not O(N). So you are NOT scanning a list linearly. It is almost like immediately jumping to the right word (like when you use a dictionary). Even if the length N is big, logN is small. So the length of the list is irrelevant.
Of course, the user must be guaranteed to find the word he is looking for. For example, if the user thinks
I want to change the color of the "taskbar"and the list only contains the word "panel", he will be frustrated, and will need to scan the whole list, looking for the word that best matches the word "taskbar". This would be tragic and would defeat the whole purpose. So the list must contain any possible concept, with any possible wording.
You communicate the words via a new panel (alphabetically ordered!) called the "index of concepts":
What are the letters on the left? The index of concepts forces you to click the first letter of each word first. This has two big advantages: 1) you are forced to think before you act. you cannot "just browse" the list. 2) The list is very short.
You decide that the most meaningful words to describe your idea are "Chapman" and "good" (but of course you could also choose something else, say "play" and "Chapman").
So you select those words from the index of concepts:
...and the old panels appear, already narrowed, showing only the things related to "Chapman" and "good".
Advantages of the index of concepts
To sum up, the advantages of having an index are:
In case you are curious about the precise logic: in the file panel you only see the good songs by tracy chapman; in the verb panel, you only see the verbs that could be applied to those files. In the program/device panels, you only see the programs/devices that make sense with those verbs/files.
The rest is as usual. You select things in any order you like, then click "Go".
You may have noticed that segusoLand's "concepts" are a generalization of directories. The differences are 1) a file can be associated to more than one concept, but can be in only one directory (unless you use hard links) 2) concept are not nesteable like directories, which is confusing and useless 3) not only files, but also programs/verbs/devices can be associated to concepts.
Suppose I click the device "My printer". See what happens:
What happened? Narrowing is at work:
Easy, huh? You almost don't need directories anymore. :-)
Also notice that now the verbs that are "complete" have a GO button (in the example, it is "configure printer"). If you click it, you execute the action. Verbs that still need objects to be complete do not have a GO button. You have to select something else in order to see their GO button.
The pictures that follow are older, but still meaningful.
Another example. Deselect everything, and select an mp3 file. See what happens:
Yet another example. Deselect everything, and select "emacs" (which is a text-editor, in case you didn't know). See what happens:
Deselect all and select a PDF:
Now, without deselecting the PDF, select K3B:
As you can see, segusoLand asks you for the cd writer (the red arrow appears).
I hope that's enough. :-)