Re: Dselect novice mode proposal
I finally got a chance to take a good look your dselect proposal today.
I think it is a very big improvement. I think this "novice" mode might be
powerful enough to replace the existing dselect. Is there anything that
the existing expert mode offers that the proposed novice mode doesn't?
Looks real good!
Here are some of my opinions, comments, and recommendations. There are
four of them. Shoot em'down or praise them... ;-)
1) The program should ask the user to confirm any action that starts the
actual download, check, un-pack, install, or remove process.
If the user chooses not to proceed, give a message something along the
lines of:
+------------------------------------------------------------------------+
| You chose to defer making the specified changes to your system. The |
| changes you asked for will be remembered. If you wish to go ahead with|
| these changes at a later time, select "commit" from the Startup menu. |
+------------------------------------------------------------------------+
| Press <Return> to continue... |
+------------------------------------------------------------------------+
This implies there will need to be something like a "commit" or "do it"
menu item somewhere.
2) When selecting by Priority or Section, put in another menu layer,
rather than requiring the user to cycle through all the options. This
would be especially useful when people want to upgrade, install, or
remove just a few packages.
Something along the lines of:
+------------------------------------------------------------------------+
| Install and/or upgrade package(s) or system |
| Which section do you wish to upgrade ? |
| +------------------------------------------------------------------+ |
| | * base Base system | |
| | mail Mail utilities, etc.., | |
| | x11 etc... | |
| | etc... etc... | |
| +------------------------------------------------------------------+ |
| Press <Return> to choose section, <Esc> to Exit |
+------------------------------------------------------------------------+
Where the "*" could indicate that changes have already been requested
in the base section.
3) My screen style preferences:
I think that a dialog box style without a mouse is not as intuitive
as other options. Namely, tabbing between screen sections doesn't
seem obvious. Assuming that a mouse is not required, I prefer another
style of interface.
Here is my prefered style:
<Esc> always back's out of the screen. (Except for the top level menu,
which should have a Quit menu item.)
<Return> always activates the selected menu item.
Select the menu items with up and down arrows. Also support vi, emacs,
and other popular cursor movement keys for traversing menu items. And
where appropriate support the Page-up, Page-down, Home, and End keys.
This style requires that the user remember just a very few simple
concepts. These concepts can be described on each screen with little
use of screen real-estate.
To conform to this style, the Individual Package selection screen
could place "Go Back" and "Concise List" on the menu, And the
"Concise List" could make the "OK" or "Done" action Accessible
with a Hot Key, and putting the followin message in place of the
dialog buttons:
Press <D> when done, <Return> for details on a package, <Esc> to Exit.
4) It would be nice for the startup screen to display the access-method
information as well as the other information. I still like having a
separate menu item for selecting the access method.
Over all, I like very much what you have proposed. I think it will be
a big improvement.
(I just started reading debian-devel a couple of weeks ago. Ian, you
must be putting in tons of time on this! Thanks to you and many others
for the time and excellent work that you are putting into project!
>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: