cutare
August 14th, 2007, 10:26 AM
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. 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 these 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-2.16.91.0.5-23.13 available", nor updates for software which she doesn't actually use, like traceroute, nor for software which she doesn't even know that she is using, like glibc.
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.
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?)
User software
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.
Sorry for the long rant, but this is how I feel about Ubuntu right now. I just had to say it.
See, my mom is a pretty industrious woman. 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 these 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-2.16.91.0.5-23.13 available", nor updates for software which she doesn't actually use, like traceroute, nor for software which she doesn't even know that she is using, like glibc.
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.
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?)
User software
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.
Sorry for the long rant, but this is how I feel about Ubuntu right now. I just had to say it.