Go forward in time to March 2007.
This morning, my mom calls me to say, "why can't I upgrade the kernel in my Ubuntu box? The terminal says Could not get lock /var/lib/dpkg blah blah blah blah".
See, my mom is a pretty industrious woman. In her thirties she planted her own tomatoes and lovingly tended the house plants in the apartment — baby tomatoes would crawl up the window bars and my brother and I would pluck them and eat them. She doesn't hire a housemaid. In her forties she had a knack for repairing her washing machine and going camping to thermal spring waters where there were dirt roads and no showers. Now, in her fifties, she likes to do home repairs and to keep her software updated. She gets her daily fix from Ubuntu's Synaptic.
When she told me about the error message, some thoughts crossed my mind:
When pulling the regular updates from Ubuntu (it's like crack for my mom), why does she have to know that there's a new kernel available? Her hardware works fine as it is.
Going further, why does she have to know that meaningless jargon like "binutils", "glibc", "tar" have new versions?
Why doesn't the command-line update tool detect that Synaptic is running, and that's the reason why it can't access the database? Yes, my mom had Synaptic running as well; it's her normal way to get updates. I have no idea of where in the myriad Ubuntu forums my mom picked up the command line she was using (why should she even have to go to the command line at all!? Did Synaptic bring up a terminal and make her do something else? I don't know.)
But the core question is, why do end users have to pick system updates like they were picking fruit at the market?
My mom doesn't care that there's a new kernel available. It is meaningless to her. But, dutiful and industrious woman that she is, she likes to keep her software up-to-date.
When my mom gets her daily fix of software updates, she wants to see things like:
There's a new version of OpenOffice available! (note the lack of the idiotic .org suffix) Compared to the version you have, this one fixes a crash with Word macros, and has a nicer toolbar.
There's a new version of the Gaim Instant Messenger! Compared to the version you have, this one supports file uploads to Yahoo Messenger accounts.
That is, no meaningless crap like "binutils-188.8.131.52.5-23.13 available", nor updates for software which she doesn't actually use, like traceroute, nor for sofware which she doesn't even know that she is using, like glibc.
Take a good read at Jamie Zawinski's recent experience when fixing a Roomba vacuum cleaner. His cleaner was malfunctioning, he called the Roomba company, they sent him a dongle that plugs into the Roomba and updates the firmware, and it works again. That is exactly the kind of painless updates that people want.
There are two kinds of software: the one that users see and use everyday (OpenOffice, Firefox, Gaim), and the one which users don't even know it exists (kernel, glibc, tar, binutils, Xorg, metacity, gnome-panel). That is, there's user software and there's meaningless crap, also known as system software.
Users don't care about system software. They cannot see it. They only know when their computer breaks or works better than before.
System software should be updated transparently, automatically, and without any need for user intervention. You turn on your computer. At some point, when it detects that the network is up, it automatically checks for updates to system software, and does not ask you if you want to update, because those updates have been tested to really work, and to require no interaction when updating. The updater sets up a network traffic shaper automatically so that downloading the updates won't make your net connection really slow. It downloads the updates. If the user turns off the machine in the middle, or the network goes down, or whatever, the system is smart enough to resume downloading when conditions are appropriate again. It is also smart enough to not break horribly if the power goes out in the middle of an update (transactional file system?).
Since users don't know that system software exists, and system software must be kept updated, it follows that users should not notice when system software gets updated. It should be automatic (no asking), painless (no slow network while updates are downloaded), and reliable (things should not break after the update).
(How many times have you updated a package and your running programs started crashing?)
People do care about software which they see and use everyday. They do not care about bug fixes for features which they don't use. They care about bug fixes for things which were problems for them in the past. Users do not really like it when the user interface changes in immediately visible ways from version to version, because it confuses them. They do like it, however, when a whole user interface gets a major overhaul with improvements (better usability, etc.). But having the GUI just change without warning is a very jarring experience: what if tomorrow you stepped into your car, and all the controls and knobs and dials and shifting lever were all in slightly different places!
So, the software should at least tell users if updates to user software will change the graphical interface. Users should be able to know what fixes and improvements the software has. That's why in the example above, the software detected which versions of OpenOffice and Gaim my mom had, and then told her what fixes were in the updated software, relative to the old versions. My mom may not want to update her word processor just now if it comes with a totally different user interface — she needs to do that on a weekend, when she has plenty of free time to explore the new features, without having the pressure of having to turn out a document right now.
There's a lot of user software which people don't use every day, or which they don't use at all. My mom seldom uses gnome-calculator, if at all, and practically never uses the GIMP or GEdit. It is fine to update that software without her knowing, since she won't even remember what the software looks like from run to run, as it is used so rarely.
But for software which she does use every day, like Gaim and Skype and Firefox, she wants to be notified when there would be noticeable changes — those that would cause her to change the way she works.
So what do we do?
We have all the system-level tools that we need to make this happen, except perhaps for a reliable, widely-deployed, transactional file system (reiserfs does not match those criteria). We have network traffic shapers and knowledge of recently used applications. We can know when the network goes up and down.
We probably need metadata for software packages that is more user-friendly ("supports file transfers over Yahoo Messenger" instead of "has new features").
We just need to write all the glue to tie this together.
Jimmac's theme with black mouse cursors is the best thing that has happened to my laptop since I managed to make it suspend. Thanks, Jimmac, this is beautiful!
It is always a battle to get suspend-to-RAM to work correctly on Linux laptops. I finally figured out how to make suspend-to-RAM work on a Thinkpad T41p in Suse Linux Enterprise Desktop 10, which fills me with joy.
Leo links to people who found interesting files in the web server for the Mexican chamber of deputies, including /etc/shadow. I just love feeding these people with my taxes.
Aaron Bockover made a prototype of the font selector I described yesterday, and it's pretty nice! It sparked quite a discussion. Mathias Hasselmann made another prototype. It's great to see so much interest in my little idea. Thanks, guys!
There are some things which I think this dialog needs to have.
It needs to be really simple and minimal. You can't have a lot of explanatory text: what if that text is too small to read?
When you click the plus/minus signs, you should get font samples that are smaller/bigger than all the ones currently in the list. It doesn't help very much to scale the current ones and see only slightly smaller/bigger versions of everything :)
The plus/minus signs need to be just that: big, fat "–" and "+" signs. Fancy icons will invariably be too small or too blurry. These signs need no explanatory text (which could be too small to read).
The "Choose a font size" title needs to be pretty large. Make the dialog use 3/4 of the screen, and fit the text to that.
Oralia was looking over my shoulder today.
Oralia: why the hell are you reading
Federico: this is not my spam, this is my inbox. Look, here are one or two legitimate messages.
Go backward in time to January 2007.Federico Mena-Quintero <firstname.lastname@example.org> Thu 2007/Feb/01 19:25:39 CST