In the Linux world there’s been a debate going on for some years about how to move forward. One approach is to stick with well-established principles that have worked well for 45 years and the other approach is to attempt to make the largest number of potential users comfortable today. I would argue that ultimately the former should drive the latter but apparently this does not seem plausible to most developers. A great introduction to the GNU/Linux problems of our time is this article that mentions many of the projects that many of us long time users often find annoying. I think fundamentally this debate is more about what constitutes success rather than how to achieve it.

Where my sensibilities lie is relatively simple compared to the subtle complexities of the projects in question. Simply put, I require that my computer not lie to me. Computers are hard enough without someone’s idea of "easy" distorting the truth.

To demonstrate the kind of thing I’m talking about I’ll give a simple Apple example. If you look at the Finder and enable show paths it will tell you stuff like this.

"Macintosh HD" -> "Users" -> "xed" -> "Documents"

But that turns out to be a bit of a lie. If you open a terminal and do this…

ls -d /Volumes/Macintosh\ HD/Users/$(whoami)

You’ll get something like:

/Volumes/Macintosh HD/Users/xed

So if you thought that "Macintosh HD" was the top of the file system tree, you were wrong despite OS X’s Finder/GUI wanting you to believe this incorrect thing. More annoying to me is that the reality is this…

ls -d /Users/$(whoami)

Produces…

/Users/xed

The 2nd level directory is "Users" and the top level is actually "/" but apparently only us Unix fans like that story. You can see the real structure of "Macintosh HD" with this…

ls -l /Volumes/Macintosh\ HD
lrwxr-xr-x  1 root  admin  1 Aug 20 01:30 /Volumes/Macintosh HD -> /

That "Macintosh HD" thing is a symbolic link to the top directory. This can create topological problems. For example, this is valid…

$ ls -d /Volumes/Macintosh\ HD/Volumes/Macintosh\ HD/Volumes/Macintosh\ HD/Users/xed/

Which produces…

/Volumes/Macintosh HD/Volumes/Macintosh HD/Volumes/Macintosh HD/Users/xed/

This kind of nonsense where a filesystem tree has pointless cycles in it drives me crazy. This first annoyed me (to put it mildly) with Windows 95 introducing its graphical file system browser that had My Computer (still there on Windows) which contained C: which, of course, some how contains My Computer.

Another place that OS interfaces lie is with "trash" or "recycle". I’m starting to realize that normal people do not understand that when they "put something in the trash" they are really just moving it to a directory named "Trash". Yesterday I helped someone who was dragging around a huge directory of photos (hope they weren’t "sensitive"!) that had come from the Trash directory of a USB stick. This had the double damage of wasting space/transfer time and dragging around photos that someone thought should be deleted. Of course this isn’t just an Apple problem.

Even Unix has its lies. The one I find most irritating is one of the reasons that aforementioned Trash directory of photos didn’t get caught (OS X is a Unix). The directory was actually named .Trashes which means, by Unix convention (ls, Bash, et al), the leading dot caused this file to not be shown. I hate this convention and have worked around it with aliases and dotglob, etc. as needed (which is why I found this), but I think it is wrong.

What I love about Unix is that even where it fibs, it is not hard to get the truth. It is always foreseen that some people will want to know what’s really going on. Even OS X is pretty decent to work with becuase despite its kaleidescope of deceptions in the GUI, you can always open a terminal and just get to the reality of an issue. When I look at the new developments in software, I judge them mainly on how often and how severely they lie to me and how hard they make it for me to find the truth.