Wandering Thoughts archives

2011-12-12

How not to improve your package updater application

Earlier today I tweeted:

Every time I use the Fedora 16 gpk-update-viewer I'm filled with anger for what someone did to a nice, usable program.

Now I feel like explaining that (in the spirit of an earlier entry). First, gpk-update-viewer is the program behind the 'Software Update' information display on Fedora systems; it's part of PackageKit.

In Fedora 15, the (Gnome) interface for it has two relatively minor issues (which you can actually see in the current screenshots on the PackageKit website): it doesn't group the updates into separate sections for security updates, bugfix updates, and regular updates, and it always shows the 'Details' area even if you're not interested in it. In the Fedora 16 version, someone decided to fix these problems. To properly appreciate the result, I must show you a picture (which I am not going to inline here because it's too big): a screenshot of the Fedora 16 gpk-update-viewer.

The Fedora 16 version has certainly fixed those two little problems; the Details area can now be folded away, and updates are now grouped. However this 'improvement' has created all of the following issues, many of them disastrous:

  • the 'Details' area for the details of the updates is not resizable; it's fixed at four and a bit lines, which is completely and utterly inadequate for usefully reading those details without endless scrolling. I am now very glad that I recently contrived a scroll wheel.
  • if you scroll the 'Details' area (and you will be) and then move to another package, the area's scroll position is not reset to the top. It doesn't always stay static either; at least sometimes it shifts oddly.

Since the entire reason I'm running gpk-update-viewer at all is to read the update details, this change alone is a huge usability loss. (I check for and actually apply updates through yum, but as far as I know g-u-v is the only tool for seeing the update text (which is not the same as the RPM changelogs).)

  • there is no longer any indication of if the update will require a system reboot or for you to log out and back in again. Fedora 15 annotated such updates with little icons.

  • Fedora 15 mostly grouped all related binary packages together as a single entry (which you could expand to see the list of individual packages that would be updated). Fedora 16 lists every binary package separately, even in cases where an update to a single source package produces a shower of fifteen or twenty updated binary packages.

    (You can see this in the screenshot; in Fedora 15, there would not be separate entries for 'cheese' and 'cheese-libs'. Fedora 15's version of this was incomplete, but it was still much better than not having this at all.)

  • Those headings for the type of updates you see in the screenshot ('Security updates' and 'Bug fix updates') are actually selectable entries. You can click on them and, more importantly, if you are scrolling through the list of updates you will wind up on those headings too (and have to explicitly scroll past them). This is especially irritating while you are using the arrow keys to scroll to the next entry because your mouse cursor is in the Details area so you can use your scroll wheel to read the update details.

And on a slightly more minor gripe, the Fedora 16 version always starts up with a completely crazy window size when I run it under fvwm in my normal configuration. No other Gnome program seems to have this problem and the Fedora 15 version was (and is) fine.

(Fedora 15 has gnome-packagekit 3.0.0; Fedora 16 has 3.2.1. Sadly the Fedora 15 binary doesn't work on Fedora 16, but maybe I can recompile the old version from source.)

linux/PackageUpdateGUIIssues written at 23:09:03;

What debugging info I want from things like SMF and systemd

I've recently been tooling around in both SMF and systemd, so I've developed some strong opinions on what startup systems like this need to provide to help working sysadmins. It will probably not surprise you to know that neither SMF nor systemd deliver entirely useful information today.

There are two sorts of service startup problems, which I'll call the simple and the complex. The simple question is 'why did this service fail to start'. To answer this sysadmins need to know exactly what was run and what happened to it, ideally including its output and log messages; if the service wasn't started because of missing dependencies, we need to know what they were. SMF and systemd both half-heartedly deliver this today.

(Neither has output that is optimized for making it clear if a service is not enabled at all, is enabled but had missing dependencies, or if it was enabled and failed to start or died later. In fact distinguishing between 'failed to start' and 'seemed to start fine, died later' is actually fairly important but doesn't tend to be reported well.)

The complex startup problems are ordering problems, such as our recent issues with ZFS pool activation and iSCSI disk discovery. To deal with these issues, you need two things: you need to know the actual order that service startup both started and finished in (you need both because in a modern system several services may be starting at once), and you need to know why, ie the service dependency graph. In fact you want several views of the service dependency graph, for example the transitive expansion of dependencies both ways for some service: 'everything that has to be up for this service to start' and 'everything that requires this service to be up'. It's also handy to be able to ask questions like 'does service X depend on service Y in some way, and if so how?'

This is mostly missing in SMF and systemd today, as far as I can see. It's possible that systemd can be coaxed into giving you the information, but if so how to do it has been carefully hidden from harried sysadmins.

(As an example of getting it incomplete, SMF will give you direct dependencies in both ways but not indirect ones, which leads to a frustrating game of 'chase the dependency'.)

sysadmin/StartupDependencyInfo written at 02:04:54;


Page tools: See As Normal.
Search:
Login: Password:

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.