[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

dselect novice mode user interface design



Right, here is the completed version of the message I sent an in-progress
copy of earlier.  It's my proposal for the user-friendly interface to
dselect.  The whole thing is intended to look fairly dialog-ish, as people
seem to be fairly familiar with dialog and its ilk.

Ian.


Startup screen:

+------------------------------------------------------------------------+
|  Debian GNU/Linux `dselect' package handling frontend.                 |
|  +------------------------------------------------------------------+  |
|  |  install         Install and/or upgrade package(s) or system     |  |
|  |  remove          Remove package(s) currently installed           |  |
|  |  fix             Attempt to fix broken packages                  |  |
|  |                                                                  |  |
|  |  expert          Experts' user interface                         |  |
|  |                                                                  |  |
|  |  quit            Quit dselect                                    |  |
|  +------------------------------------------------------------------+  |
|                             +----------+                               |
|                             |    OK    |                               |
|                             +----------+                               |
+------------------------------------------------------------------------+
|  130Mb free disk space (170Mb used out of 300Mb) on /usr               |
|   15Mb of packages are still to be installed;  115Mb will be left.     |
+------------------------------------------------------------------------+
|  200 packages available, 200 selected, 178 installed.                  |
|   20 packages are yet to be installed.                                 |
|    2 packages are on the system, but broken;                           |
+------------------------------------------------------------------------+

`expert' passes the user on to what is curretnly the dselect main
menu.

`install', `add', `remove' and `fix' vary in their details.  Each of
them goes through the access method selection and configuration,
updates the list of available packages, asks the user about some
subset of the packages available and/or installed, and then carries
out the actions they requested.

Each of these options will ask the user about packages whose installed
state doesn't match their desired state, or which have an error flag
set.

Additionally, `install' asks the user about all the packages available
or currently installed; `add' asks the user about packages which are
available but not installed; `remove' asks the user about packages
which are installed.  `fix' asks the user only about packages which
aren't in their desired state, as recorded.

This asking happens as follows:

First, for each `status' of package (eg broken ones, new ones, old
ones they might want to remove, etc), there is an introductory screen
which gives them the opportunity to make the same decision for many
packages.

+------------------------------------------------------------------------+
|  Attempt to fix broken packages                                        |
|  Currently-broken packages - which to retry ?                          |
|  +------------------------------------------------------------------+  |
|  | There are currently 2 packages which have not been correctly     |  |
|  | installed or configured.  You may try installing them again,     |  |
|  | or (using the `individual' and `list' options) choose to remove  |  |
|  | some of them instead of trying again.                            |  |
|  +------------------------------------------------------------------+  |
|  +------------------------------------------------------------------+  |
|  |  all             Retry the installation of all broken packages   |  |
|  |  individual      Decide for each broken package separately       |  |
|  |  list            Go straight to listing of all broken packages   |  |
|  |  none            Don't attempt to fix any of them                |  |
|  +------------------------------------------------------------------+  |
|                     +----------+      +----------+                     |
|                     |    OK    |      |  Abort   |                     |
|                     +----------+      +----------+                     |
+------------------------------------------------------------------------+

`individual' presents a screen for each package, and `list' shows a
one-per-line scrollable listing of the packages involved.  These
screens are the same for all packages which are being asked about,
regardless of status, and are described below.

+------------------------------------------------------------------------+
|  Install and/or upgrade package(s) or system                           |
|  Which new packages do you wish to install ?                           |
|  +------------------------------------------------------------------+  |
|  |  important       Only the most important packages       30Mb     |  |
|  |  standard        Standard text-mode installation        50Mb     |  |
|  |  optional        Full-featured installation, with X11  150Mb     |  |
|  |                                                                  |  |
|  |  priority        Select in more detail, grouped by priority      |  |
|  |  section         Select in more detail, grouped by section       |  |
|  |  list            Go straight to listing of all those available   |  |
|  |  none            Install none of the new packages                |  |
|  +------------------------------------------------------------------+  |
|                     +----------+      +----------+                     |
|                     |    OK    |      |  Abort   |                     |
|                     +----------+      +----------+                     |
+------------------------------------------------------------------------+

For upgrades, the user sees:
+------------------------------------------------------------------------+
|  Install and/or upgrade package(s) or system                           |
|  Which already-installed packages do you wish to upgrade ?             |
|  +------------------------------------------------------------------+  |
|  |  all             Upgrade everything to the latest version        |  |
|  |  priority        Select in more detail, grouped by priority      |  |
|  |  section         Select in more detail, grouped by section       |  |
|  |  list            Go straight to listing of all those available   |  |
|  |  none            Don't upgrade anything                          |  |
|  +------------------------------------------------------------------+  |
|                     +----------+      +----------+                     |
|                     |    OK    |      |  Abort   |                     |
|                     +----------+      +----------+                     |
+------------------------------------------------------------------------+

If the user says `important', `standard' or `optional' then new
packages with at least that priority are selected for installation and
others are recorded as deselected (so that they won't, for example,
count as new next time).

If the user selects `priority' or `section' from the new packages or
upgrade screens then they get a screen for each priority or section,
respectively, which looks like this:

+------------------------------------------------------------------------+
|  Install and/or upgrade package(s) or system                           |
|  Packages with priority classification `optional'                      |
|  Which new packages with priority `optional' do you wish to install ?  |
|  +------------------------------------------------------------------+  |
|  |  all             All of them                            10Mb     |  |
|  |  individual      Decide for each package separately              |  |
|  |  list            Select from a list of the relevant packages     |  |
|  |  none            None of them                           50Mb     |  |
|  +------------------------------------------------------------------+  |
|                     +----------+      +----------+                     |
|                     |    OK    |      |  Abort   |                     |
|                     +----------+      +----------+                     |
+------------------------------------------------------------------------+

When removing, you get the following screen:
+------------------------------------------------------------------------+
|  Remove packages from system                                           |
|  Which already-installed packages do you wish to remove  ?             |
|  +------------------------------------------------------------------+  |
|  |  list            Select from list of all packages installed      |  |
|  |  priority        View packages organised by priority             |  |
|  |  section         View packages organised by section              |  |
|  |  none            None of them                                    |  |
|  +------------------------------------------------------------------+  |
|                     +----------+      +----------+                     |
|                     |    OK    |      |  Abort   |                     |
|                     +----------+      +----------+                     |
+------------------------------------------------------------------------+

`priority' and `section' simply present a scrollable list of
priorities and sections, respectively, where selecting a priority or
section produces a list of the appropriate packages.

The individual package selection screen looks like this:
+------------------------------------------------------------------------+
|               smail - Electronic mail transport system                 |
| +--------------------------------------------------------------------+ |
| | Smail is the recommended mail transport agent (MTA) for Debian.    | |
| |                                                                    | |
| | An MTA is the innards of the mail system - it takes messages from  | |
| | user-friendly mailer programs and arranges for them to be          | |
| | delivered locally or passed on to other systems as required.       | |
| |                                                                    | |
| | In order to make use of it you must have one or more user level    | |
| | mailreader programs such as elm, pine, mailx or Emacs (which has   | |
| +-----=== press space for more, backspace to go back === 80% ===-----+ |
|                                                                        |
| Installed, version 3.1.29.1-12      Available: 3.1.29.1-14             |
| +--------------------------------------------------------------------+ |
| |  upgrade         Upgrade the package to the version available      | |
| |  stay            Stay with this version (do not upgrade)           | |
| |  remove          Remove the package                                | |
| |  purge           Remove the package and all its configuration      | |
| +--------------------------------------------------------------------+ |
|    +------------+   +------------+  +------------+  +------------+     |
|    |     OK     |   |  Go back   |  |Concise list|  |   Abort    |     |
|    +------------+   +------------+  +------------+  +------------+     |
+------------------------------------------------------------------------+

The menu items available vary.  There is space for three items, though
sometimes not all of them are present.

The first item will set the desired state to `install'.  Its
appearance depends on the current state of the package - one of:
| |  install         Install the package
| |  reinstall       Re-install the package to try to fix it
| |  upgrade         Upgrade the package to the version available
for a deinstalled package, a badly installed package (with the error
flag set, or half-installed, unpacked or half-configured), and a
package which is installed but of which a new version is available,
respectively.

The second item sets the desired state to `purge' or to `stay' (this
will do the same as the `hold' flag does at the moment), depending on
whether it is already installed:
|  |  not             Do not install this package
|  |  stay            Stay with this version (do not upgrade)

The third and fourth items are either
|  |  remove          Remove the package
|  |  purge           Remove the package and all its configuration
(for a package currently installed) or
|  |  purge           Remove the package's configuration
(for a package currently removed but with configs) or absent.

The default will be set to the setting required by any previous
choices (conflicts/dependencies), or to the previously-chosen setting
if there is one, or failing that so as to install new packages with
priority Standard or better and not to install others.

If you select concise list (by tabbing, as in dialog) you go from a
package-by-package display to the listing which shows one package per
line:

+------------------------------------------------------------------------+
|       New versions of packages available, priority `important'         |
+------------------------------------------------------------------------+
|  [install]   smail         Electronic mail transport system            |
|  [upgrade]   dpkg          Package maintenance system for Debian GNU/L |
|  [stay   ]   xserver-s3    XFree86 3.1.2 S3 server                     |
.   ...        ...           ... lots more of these ...                  .
|  [not    ]   joe           Joe's Own Editor - A Free ASCII-Text Screen |
+-----=== press space for more, backspace to go back === 90% ===---------+
|        +------------+        +------------+       +------------+       |
|        |     OK     |        |  Details   |       |   Abort    |       |
|        +------------+        +------------+       +------------+       |
+------------------------------------------------------------------------+
|         Use the spacebar to change the setting for a package.          |
+------------------------------------------------------------------------+

When the user has been through all the packages, before dselect
actually does anything, it checks the conflicts and dependencies.  For
each problem it finds it displays a screen looking like this:
+------------------------------------------------------------------------+
|  Install/upgrade - Conflict/dependency check                           |
|  +------------------------------------------------------------------+  |
|  | You have selected to install:                                    |  |
|  |  smail - Electronic mail transport system.                       |  |
|  |                                                                  |  |
|  | This package recommends that you install one of:                 |  |
|  |  pine - An e-mail user agent with MIME and IMAP support          |  |
|  |  mailx - A simple user interface to sending and receiving        |  |
|  |  elm - A full screen ELectronic Mail interactive user            |  |
|  +--=== press space for more, backspace to go back === 85% ===------+  |
|                                                                        |
|  How about installing pine ?                                           |
|  +------------------------------------------------------------------+  |
|  |  ok         Select pine for installation                         |  |
|  |  remove     Choose not to install smail                          |  |
|  |  list       Select which of these packages you want from a list  |  |
|  |  details    Show technical details of the dependency             |  |
|  |  override   Override recommendation - may cause problems later   |  |
|  +------------------------------------------------------------------+  |
|                     +----------+      +----------+                     |
|                     |    OK    |      |  Abort   |                     |
|                     +----------+      +----------+                     |
+------------------------------------------------------------------------+

Overridden recommendations don't stay overridden from one dselect run
to the next.


Reply to: