As a sometime software designer, it annoys me no end when I see software that has really fundamental errors. One of the fundamental characteristics of software is that applications (as opposed to, say, daemons) are run by users. If the application can be run by users, it can be run by more than one user. On a multi-user operating system, an application could theoretically be run by several users at the same time.
This leads to an interesting problem: how do you keep separate what's happening to an application when different people are using it? For example, if two users are running an email program how do you differentiate between the mailboxes of each user?
This is not a new problem, and was solved many, many years ago. (UNIX is 35 years old, and was not the first multi-user OS.) But still, application designers can forget this fundamental truth: more than one person might want to use the same application, and might want to use it at the same time. The basic design strategy to overcome this is to separate an application into up to three parts: the core, which doesn't change from machine to machine or user to user; the system-specific configuration which is different based on the configuration of the machine the software is installed on, but is shared by all users of that machine; and the user-specific configuration, which is specific to a particular user.
With that in mind, here are some MacOS X apps which are particularly annoying offenders. (Why MacOS X? It's what I use at home, so I'm seeing these issues. I suspect that Windows will have the same problem the moment that they come up with something like Exposé.)
Age of Empires II - When you install AoE II, it apparently creates some files in your user space. When you attempt to run the game as another user, the game just dies. If the program needs to store information on a per-user basis, it should check for that information at run time, and create it (with appropriate defaults) if necessary. Crashes are not user-friendly.
Eudora - Eudora creates a directory for each user, with their prefs, mail files and so forth. However, there is apparently some file which cannot be shared between users. If one user is running the application, no other user on the machine can do so. Eudora will crash in generally less than a minute for any user that was not the first to start running it. Crashes are not user-friendly.
AOL Client - Cannot be run by multiple users. It simply exits out with a non-useful message (that is, the error message displayed does not tell you what the problem actually was, that another user was already running AOL). It's arguable that AOL should not be run by multiple users at the same time, since they would be contending for hardware, though I have a hard time believing that it would be difficult to allow for this, simply by running a daemon (launched with the client the first time only) to schedule requests to the network ports in question. Error messages which don't identify the problem are not user-friendly.
Those are a few I've noticed. I'm sure that there are many more. The lesson here is that if you are doing software design, you should avoid cheap shortcuts like assuming that you have the system to yourself, and the user has your application to himself. Otherwise, you look stupid when other software designers run your apps.
Posted by Jeff at February 18, 2004 12:40 AM | Link Cosmos