Linked by Nicholas Blachford on Wed 11th Aug 2004 07:53 UTC
Editorial Computers are complex systems but it's a mistake to assume they need to be complex to use. However, usability is not as easy as it may first seem. It is a different discipline from software development lacking the strict logic or having a "right way". There are only differing requirements and differing collections of guidelines. Making things easy is difficult.
Permalink for comment
To read all comments associated with this story, please click here.
Hmmm
by Inglorion on Wed 11th Aug 2004 14:05 UTC

I take an interest in usability, and so I read this article. I like it up to "Usability Everywhere" (especially the comment about there not being one right way is good - although the suggestion that there is one right way in software development is a bit misguided).

I don't know where the author gets his belief from that DOS has natural language commands but UNIX does not. As far as I can see, DOS commands are similar to and often identical: mkdir, cd, rmdir, echo, and pipes are all the same; rm/del, ls/dir, cp/copy are different, but it's debatable which language is more intuitive. At any rate, you can easily get make_directory, remove_directory, etc. under either system, but in the end it will only cost you more typing.

The real differences in the command line as provided by DOS and typical UNIX environments all fall out in favor of UNIX: command and filename completion, history, manpages, apropos, which, locate, ... All these could be installed on a DOS system, but (apart from the GNU/FreeDOS system I once built) I've never seen any DOS or Windows system that had them.

After the command-line bloob, the author continues about how libraries should be distributed with software and have working versioning. I think distributing (non-standard) libraries with software is a good idea for software that is distributed on CD or some other medium that can conceivably be used by people without other access to the libraries. If you are distributing the software off your website, you can just make the libraries available from there too. As for versioning, UNIX-like systems that I have seen all have it worked out: simply appending the version number to the name ensures that the app gets a version compatible with the one it was linked against, and allows different versions to coexist peacefully. DLL-hell seems to be pretty much a Windows-specific problem, possibly rooted in the fact that Windows hasn't always properly supported long filenames.

Software installation is indeed a bitch if done the traditional UNIX way. The solution is simple: do what everyone else does and install your package in its own directory. Make some symlinks from standard locations to files in your package directory, and done. Then again, software installation works a lot better on the UNIX-like systems that I have used (especially Debian) than on some supposedly more usable systems.

I completely agree with the author that having a programming language with your system is a Good Thing, and, in fact, most UNIX systems ship with one. However, I think there is no good reason why there should be separate languages for shell and programming (See http://inglorion.net/documents/essays/shellprogramming/ for an unfinished article on the topic). The only systems I have ever seen that had this right are LISP machines, but any system based on a language that is fast enough for programs and easy enough for shell commands (a lot of popular languages fail the latter requirement) would do. I am curious what .NET/Longhorn will be like.