[Aptitude-devel] Towards better upgrading.

Daniel Burrows dburrows at debian.org
Tue Feb 3 16:12:27 UTC 2009

On Tue, Feb 03, 2009 at 02:30:28PM +0100, Obey Arthur Liu <arthur at milliways.fr> was heard to say:
> The introduction of the Upgrade button was to create a more
> workflow-oriented and less feature-oriented interaction possibility.
> The problem is that we chose the "notification balloon" metaphor: this
> metaphor is usually used to point out informational and optional
> information. Many users pointed out that they don't know what to do next
> because they didn't notice that the notifications were actually (nearly)
> mandatory prompts.

  Yeah, that's also on my radar.  A lot of stuff shows up as
notifications, and so the notification area just gets cluttered.

> Clearly, the usual path is :
> 1) Show upgradable packages
> 2) Display resolver
> 3) Show a preview of the changeset
> 4) Show the download process
> 5) Show the dpkg run

  (2) should not be in the usual path, IMO -- I hardly ever use anything
but safe-upgrade from the command-line any more, and anecdotally I've
heard the same thing from others.

> We need:
> 1) Get the executed steps out of the way
> 2) Highlight the next step
> So, what do you think?
> I like the tab highlighting idea because it can be reused to, for
> example, highlight infotabs which packages changed state (say, to broken).

  Hm, I don't think tab highlighting will solve this problem,
especially if we use it to mean other things too.  If anything, I think
a flashing tab is more cryptic than a popup message.

  Another option: what if "important" / "task-oriented" notifications
appeared at the top instead of at the bottom, and flashed?  That might
seem like a minor change, but I think that we do tend to notice stuff
at the top of the display more than stuff at the bottom, probably due
to cultural conditioning.

  Also: we could add a visual cue that a popup / notification / tab had
to do with a particular task (e.g., carry the "upgrade" icon along in
each step; I'd put it on the left side of a notification or in a tab
header, maybe along with the text "Upgrade:").

  I think that if we really want to be sure that they see the message
and are forced to click on it, we'll need a pop-up dialog, as annoying
as I find them.  (maybe I can add an option to convert them to
notifications, like the one the curses UI has to convert popups to
minibuffer prompts)  I'd like to avoid that if possible, but I think
a popup will be necessary if you want to cater to users who are confused
by plain text telling them what to do next. ;-)

> > >   I'd like to smooth this out and make it more along the lines of
> > > "safe-upgrade".  Here's what I imagine:
> > >
> > >   (a) start aptitude.
> > >   (b) push the upgrade button.
> > >   (b.1)
> > >     if there are broken dependencies, as many packages as possible are
> > >     marked for upgrade.  A notification appears saying something to the
> > >     effect of "some upgrades couldn't be installed without taking
> > >     'risky' actions.  Fix manually?"  (or "no upgrades could be ..."
> > >     as appropriate)
> I'd describe supplementary upgrades as "additional actions" and actual
> downgrades as "risky actions", but fine.

  I said "to the effect of", meaning that is the information that should
be conveyed but not necessarily the wording :-).  But supplementary
upgrades, unless they're from a non-default repository, *are* included
by the safe-upgrade algorithm, as are supplementary installs.  Only
non-default repositories and removals are blocked out, and I'd describe
both as risky.

> > >   I'm looking at whether it's possible to equip the resolver with the
> > > ability to reason about "hypotheticals", so that it can run in the
> > > background without altering the current package states.  I haven't
> > > decided whether this is actually desirable in this case (with
> > > upgrades), but it's not too hard a hack and may be useful in other
> > > circumstances anyway.
> And give us a 3D tree with keeps/upgrades/installs as x/y/z-axis ?  :)


  No, but I do want to put in support for approvals / rejections -- the
main reason I haven't is that the way I envision it happening requires a
nontrivial custom cell renderer.


More information about the Aptitude-devel mailing list