A recent post by SQL*Kitten has reminded me of an issue I've been talking about with Adam lately, so I think I'll rant about that for a while. Computers are user-unfriendly. This is pretty obvious. It doesn't matter if you're a programmer or a grandmother (or both!), they still have flaws. I'm going to discuss one of those flaws (intentionally; I'll probably ramble on into other things later).
The flaw that irks me the most is UIs. I use computers as a tool, as a means to an end, not an end itself. Sure, when I get a new 'toy', I play with it like a toy, but after that's done, it's all business. Mostly. But the problem I have is when the computer gets in my way, and interferes with my ability to do whatrever it is I'm trying to do.
Open up Outlook 2003 (and probably 2000) when you use an IMAP mail server, but are not connected to the internet, and you'll have an unpleasant experience. Outlook will try to contact the mail server. Specifically, it will send a message to the mail server, which will not get there, and then it will wait for a reply. You cannot stop this process. Once it starts (and it starts once you launch the program), it continues until Outlook gives up, which takes enough time to be frustrating. Ugh. Horrible.
Launch Thunderbird, the latest snapshots of the new Mozilla mail client. On the P3/933 I tested it on, with the 512 megs of ram (a decent machine by any standards), it took about three minutes for the window to come up. Once it did, it was pretty much completely unresponsive for another two minutes, at which point all hell broke loose. Turns out I'd accidentally launched two copies (since you don't know if it launched unless you check the process list or the window opens, and I'd thought the first double-click didn't take). Ugh, bad. Worst part is though, the spam filtering. It requires you to download the messages. All the messages. Then it has to process them. That's fine, except for the several multi-megabyte messages I have in my inbox from when I was on broadband, which I am leaving there until to broadband I return. But it wanted to download them anyway, even though they're probably not spam since they were sent to me in March and have been sitting there, read, ever since. I don't usually archive spam, especially multi-megabyte spam.
So both copies of Thunderbird were trying to download several megs of e-mail, and there was no easy way to stop them, except to force kill the process. This is very similar to Outlook, in that it does the same thing when it starts up, minus the spam filtering. Compare this, as well, to Phoenix/Firebird/Whatever, which, when it's doing a DNS query, refuses to do anything else. If you drag a window in front of it, you can 'paint' it - erase the contents of the Firebird window with whatever dialog you happen to grab. This is a great source of amusement for me when I'm bored, and I'm often bored when running any of these programs, because they insist on doing nothing for such large amounts of time, and for such poor reasons, and they do it so often.
At least they're consistant.
I've never noticed this on OS X, or even the old MacOS for that matter. The interface was always there. You couldn't paint it away, because it would redraw as soon as it was exposed. Nice.
SQL*Kitten had a good bitch about Mozilla. IE users will probably understand his complaints too. It's not known to many computer users, but the technical use of 'stop' in computer user-interface jargon means 'continue doing whatever is wasting CPU cycles, memory, or time, until you're pretty much done, then notice that you were told to stop and throw all that hard work out the window'. It's true. I don't know why it's not in the Jargon file though. I blame ESR.
In Mozilla, when you click stop, nothing happens. It keeps loading the page, or DNSing the server, or whatever the hell else it's doing, UNTIL such a point as any reasonable person would say 'well, it's almost done anyway, may as well let it finish', at which point it will completely throw out the DNS resolution, the page loading, close connections, or whatever, not only having wasted your time, but having wasted it pointlessly. It's as if it flaunts the fact that you have no control, waving your UI (user ineptitude) in front of your face, before robbing you of your dignity and dropping it in the garbage disposal of digital torment. IE does this as well, but unlike Mozilla, whose UI is unresponsive until the very end, in IE the toolbars respond fine, and everything works, except the stop button. Click it all you like, but nothing happens. Ever. I have a colleague at Microsoft who secretly showed me the source code to Internet Explorer, and I verified this myself. There is no actual code attached to the stop button in IE. It's not supposed to do anything. Amazing but true.
Somewhere, something horrible has gone wrong. Back in the 70's, you see, computers were not for people to use. In fact, computers were purchased with the same rationale as trucks. Just like how middle-class city-dwelling husbands will insist on buying the biggest, noisiest, fuel-chugging truck possible, despite the fact that it will only hold two of the five people in their household, is absolutely useless for hauling groceries since it always rains, and will only ever be drive by the man because the wife is terrified to death of the 12.9 litre 8000 Horsepower V63 engine with the 19 speed transmission, and rightly so. Likewise, the first computers were large, ugly, stupid things that took a lot of space, used a lot of power, gave a lot of heat, and made the CS department heads think they had bigger, uh, 'units of measure'.
These creations were like beautiful paintings, they argued. They are not there to make life better, or to solve problems. Mona Lisa never lifted a finger to help liberate Paris from the Germans! It's not the point! They exist for the point of existing, so that people may admire them without understanding what it is that makes them great!
A noble cause, and appropriate for the time. Meanwhile, Steve Jobs and Steve Wozniak got unforgivably rich by making something that people could use to do neat things. But I digress.
This attitude has descended down, through the creation of the first IBM PC ('it doesn't need to be usable, it's cheap!'), to Windows ('It doesn't need to be usable, it's got solitare.'), and even Linux ('It doesn't need to be usable, you need to RTFM you moron, then recompile your kernel with CONFIG_USELESSFOO, which as everyone knows is needed to run, but you'll have to add another #define on line 523 of arch/sparc/header.h even though you're running on x86, because that's just the way it is').
You see, this is the sort of situation which you would describe by saying 'somewhere along the line, x happened', except that the problem is that x didn't happen. People didn't realize that computers could be useful, and when they did realize this, they tried their best to keep other users away from their precious thing. Unfortunately, they failed, and now we have AOL, and they can never be forgiven, but what's passed has passed and we have to look at the here and now.
Computers need to be designed for the users. Linux is built from the bottom up. The kernel was written, then the userspace utilities were added. Then someone said 'wouldn't it be neat if it were usable by everyone!'. That person was lynched, and their head was placed on a pike as a message to others. Then someone else said, more cautiously, 'wouldn't it be a challenge to code a graphical user interface that made sense?', and of course people agreed, but that wasn't enough. The sensible thing to do, they said, was to hack up an old protocol (X11), written by two men who knew full well that they didn't know what they were doing, add extensions to it that no one else would ever support, and then proceed to write the most preposterous graphical toolkit ever concieved by man. They called it the Graphically Torrid Kludge, or 'GTK'. In order to prevent anyone writing anything useful using this, and to prevent anyone from writing patches to make this new software usable by making sensible dialogs and menus, they made sure the documentation was mediocre, the implementation was slow and pathetic, and the code was incomprehensible unless you already knew what it all meant anyway.
A noble goal, shared by all. Meanwhile, Trolltech amassed a huge following by writing an object-oriented toolkit that was simple to program with, was more responsive, and looked nicer in its default setting. But I digress.
Microsoft had a different design strategy, and that was 'oh shit, we have to release this next week, what the fuck are we going to do?' This resulted in an operating system that was written from the hardware up (DOS), a hacked-on shell that was written from DOS up (Windows) and Windows 95, which I won't get into detail about. Somehow, this philosophy of 'we don't know what this does, but we'll charge $200 for it' made them scads of money. On an unrelated note, Adam Smith is spinning in his grave.
Apple has a different design philosophy, which is quite clearly apparant. I call this the user-down approach. If you use a mac for any amount of time (without preconceptions of how things 'should' work based on other, crappier OSes), you will notice this effect. When you see something, you can figure out what it does by thinking about what you think it probably does, and you'll probably be right. I know people who program on the Mac with Apple's toolkit, and they have said, repeatedly, that they don't need to look up functions, they just figure out what they're probably called, and figure out what information they probably need, and they're almost always right. I've seen people write entire applescripts for programs they've never used before, just by writing what would make sense. In the words of Douglas Adams, 'This is, of course, impossible.' It should be noted, too, that Douglas Adams was an avid mac user.
Apple's user-oriented design has allowed them to become friendly with people who don't honestly care about their computer, except as a tool. For the people who want to sit down, do something, then go have a life doing something more interesting, the Mac is a well designed tool. Now, I'm not advocating rabid mac-use (in this paragraph), but merely trying to point something out. Why can programmers not realize that the user's input is the most important thing the computer could ever hope to be involved with. I don't care if I'm processing the cure for cancer, if I have some reason to stop it, then for god's sake, stop the fucking process. If I'm loading a website, or running a Photoshop filter, or printing a document, or sorting a directory by name, I should be able to cancel, pause, or continue any of these actions.
Say it with me now: The user is the point of the computer's existance. I am not there for the computer's edification, it is there for my use. So why can't it be usable?