Back to Eric's Home Page | Up to Site Map | $Date: 1998/05/27 00:53:49 $ |
Note: in developing this model I have deliberately avoided thinking about specific user interfaces or the HTML implementation problems thereof.
Each package has a list of specifications associated with it. A package matches a given specification if the package has some specification of which the given specification is a prefix. (Thus, if a package has the specification /a/b/c/d, any of the given specifications /a, /a/b, /a/b/c, or /a/b/c/d will match it.)
A search is a set of specifications created by the user. The result of the search is the intersection set of all packages that match every specification in the search.
The user's search might be performed by building the following pair of specifications: /topic/graphics/viewers/gif and /interface/toolkit/motif.
On choosing one of these, the user is presented with all keywords which appear in slot 2 of a spec containing the chosen keyword in slot 1. This is browsing down the specs. In addition, any package tagged by a spec consisting solely of the chosen keyword is also displayed. There is also the further option Narrow Search.
Further choices of keywords walk down the spec path, displaying any packages that have been tagged by the currently chosen spec, along with the keywords for the next level. Eventually one reaches a level where there are only packages and no further keywords.
Choosing ``Narrow Search'' returns one to the top level, but now only those keywords and packages that can be located in the catalog consisting of the result of the previous browsing operation are selectable. Packages outside the catalog are ignored; excluded keywords are indicated in a non-selectable mode.
The purpose of `graying out' keywords is to allow the user to see instantly that what is wanted is inconsistent with the currently narrowed search. Narrowing can be iterated, or it can be backed out of (by throwing away rightmost segments of the current spec). At all times the current narrowing list and the current spec are displayed, so that the user doesn't get lost.
In this style, the user can hardly tell the difference between browsing and searching: ideally the delay is always the same, so one does not assemble a ``search string'' and then hit ``Search''; instead, one simply browses and, if the current catalog seems to be too large, narrows. Depending on external considerations, a too-large catalog might elicit a warning such as ``There are 3500 packages available. You can |display| the full list or |narrow| your search.'' (where pipe bars bracket hotlinks).
Choosing Topic, the user is presented with Compilers, Browsers, Graphics, etc. and Narrow Search (henceforth N.S.).
Choosing Graphics, the user is presented with Painters, Drawers, Viewers, etc. and N.S.
Choosing Viewers, the user is presented with GIF, JPEG, PNG, etc. the packages barfoo-2.2, zambaz-3.3 (these are packages that are not specialized as to format), and N.S.
Choosing GIF, the user gets packages foobar-1.2, bazzam-3.4, etc., etc., etc. and N.S. There are too many to investigate in detail, so the user chooses N.S. and is returned to the top level.
Choosing Interface, the user is presented with Dumb, Curses, Toolkit, etc.
Choosing Toolkit, the user is presented with razbaz-9.99 (which uses a standardly available toolkit), Motif, KDE, etc.
Choosing Motif, the user sees only foobar-1.2, the intersection of /Topic/Graphics/Viewers/GIF and /Interface/Toolkit/Motif.
And chooses it.
All of this can be done HTML-style, or using one or more choice boxes, or in any number of other ways - this is an abstract UI.
Back to Eric's Home Page | Up to Site Map | $Date: 1998/05/27 00:53:49 $ |