Robert is a student and free software enthusiast. He spends a lot of time in front of a computer screen. He has a decent internet connection at home (ADSL hub), and two x86 boxes running SUSE Linux.
Tanja is an assistent in a small travel agency which makes her feel she “runs the company” most of the time. She uses a computer at work strictly for a limited number of tasks. The agency runs a flight booking terminal application over a modem connection. She is using an Office package to handle correspondence. Tanja has a 6 year old son who is using their home computer a lot. Because he’s into playing games, they have Windows XP at home. Unfortunately due to Billy installing all sorts of games and software on the box, the machine requires a fresh reinstall from time to time due to spyware and viruses. That’s perhaps why she values the fact that the computer at work behaves consistently every time she turns it on in the morning.
Hans is an administrator at the IT department of the University in Erlangen. Mainly Hans is responsible for running Wuerstchen, the department’s Apache+MYSQL server that hosts support materials for lectures and course information.
Irene is a school kid. At school they use MS Windows, but her mom bought her a cheap PC at Wallmart with SUSE Desktop pre-installed.
Apart from all sorts of things Hans is also responsible of managing the two computer labs the department has. Each having twenty x86 machines running SUSE Linux. The default package management interface is only to work standalone, not aiming to manage multiple machines at once.
Robert remembers he wanted to look at sequencing a few loops Trent Reznor released for NIN’s latest single. He doesn’t know the name of any software that would help him to achieve this on his linux box, but he is able to come up with keywords that should get him the results - sequencer, audio, loop.
Robert tries to compile a very recent application that is only available as a source package. One of the dependencies the configure script checks for is libexif. Robert wants to see if there is a package for it and the version number is higher than 0.6.12 which the app requires.
Robert likes to be on the “bleeding edge” of aplication versions. While at SUSE they maintain a huge library of packages, Robert finds an interesting, community maintained, repository of packages for his distribution. He wants to add the resource.
While browsing freshmeat.net, Robert finds an interesting project that has a SUSE package available. As ridiculous as it sounds, Robert thinks he has “the artsy bone” and wants to install Inkscape. The package, however, contains multiple dependencies that Robert’s current system doesn’t have installed (libgc in particular).
Tanja needs to write a letter to a new german customer. Because she’s not very fluent, she needs a german spellchecker for aid. She has the CD media for her system and wants to install the german package for OpenOffice without going online.
Irene is curious about what interesting she could do with her new computer. She wants to discover what applications are available. She isn’t looking for anything specific, just wants to see if there’s anything she would find interesting.
Robert just ate his sandwich and is about to read a bunch of useless information on slashdot. To justify the waste of time he wants to manually check for any updates available and make his system up-to-date while he’s reading. He’d like to know approximately how long the action will take.
Before proceeding with a security update, Tanja wants to read a short summary what the update will do and why does she really need it. In cases when she is certain she is not affected or the download is too big for her modem to handle, she wants to postpone the installation. She gets very frustrated by detailed technical information though, since she does not have much knowledge of the internal works of Linux.
The updater suggest installing a few security updates. Tanja has a modem connection and isn’t willing to install a 20MB java update right now, but she does want the 5MB Firefox fix.
Tanja tries to connect to their netbanking system, but the application complains that the java runtime needs to be version 1.4, and her new 1.5.2 will not work. She wants to revert that update.
Robert wants to have his system updated in the background automatically. He has a decent connection, keeps the computer running most of the time (careful about clocks and notebooks’ hibernation, what about updates requiring a reboot?)
Robert notices his main filesystem is running out of space and decides to look for installed applications that he doesn’t really use.
Tanja had installed a security update for her office software, but unfortunately the version did not work correctly, and she had to revert back to the situation before the update.
Robert had installed a CAD modelling tool from an unofficial package source to try it out. The application had dependencies that caused also a video driver update on his system. Unfortunately the updated video driver causes artifacts on the screen and his mouse pointer arrow is garbled. Robert needs to revert back to the situation before he installed the CAD tool.
A similar situation happens when
Robert tried out a new version of OpenOffice, which was available from an experimental package source. However, the upgrade was far from smooth: The software itself did not work, since the
PDF writing was broken - but what is worse, the experimental package depended on newer versions of several system libraries. Unfortunately the new versions had binary incompatibile with the old ones, so a lot of dependant applications also needed to be updated into versions that were compiled with the new library versions. This all went smoothly of course, thanks to the package manager. But the problem arose when Robert wanted to move back to the old Openoffice that worked. The system libraries needed to be reverted back, along with all those other applications affected.
Hans uses a custom built Apache on Wuerstchen. He doesn’t want the package updated with the stock apache version if there is an update.
Updating system and Installing new software/removing existing software are distinctively different tasks, let’s not combine them into one GUI. Online update requires internet connection. Installing/removing works off-line as well.
An important design decision - Use bundling when pushing updates?
-
-
:) work in progress, just a placeholder section
custom
URI scheme for installing packages without absolute location of the package (bittorrent tracker? etc).
auto-update part of screen-saver settings?
somehow generate statistics on application usage (tag main binary in a package, track number of times executed) to be able to tell which appliucations the user rarely/never uses?
What about integration with indexes like freshmeat.net or gnomefiles.org? In the windows world, such sites are very popular, and installation is straighforward due to the missing concept of package dependencies.