Tuesday, January 23, 2007

The dumbing down of OS X (and Vista): indirection is too hard

MacOS Classic was built by the gods. They tossed it off to mere mortals and then retired to Olympus. OS X isn't all bad, but it's clearly the work of mortals, not gods.

Witness the decline of indirection, a slippery concept that's probably too hard for mortals to manage. In MacOS Classic "files" (bounded collections of bits perceived by users as entities) had a visible name that could be changed and a system name that was fixed. Hierarchy was separate from identity. You could move the file anywhere and no references broke [2]. Any application that referenced the file would find the file. In OS Classic you could rearrange your applications an utilities at will.

Genius. Simple, but slippery. If you've used OS X for a while, you know things are trickier now. Aliases used to resolve themselves based on the unique file identifier, but in 10.2 the hard-coded path name ruled. Today paths matter, and you rearrange things at your peril [1]. It's hard to find any mention of the indirection that was once the pride of Apple. This is one of the few references I found today (emphasis mine):
File System Overview

... On HFS and HFS+ file systems, each file and folder has a unique, persistent identity. Aliases use this identity along with pathname information to find files and folders on the same volume.

In versions of Mac OS X before 10.2, aliases located a file or folder using its unique identity first and its pathname second. Beginning with Mac OS X 10.2, aliases reversed this search order by using the pathname first and unique identity second. This means that if you move a file and replace it with an identically named file, aliases to the original file now point to the new file. Similarly, if you move a file on the same volume (without replacing it), aliases use the unique identify information to locate the file.

When a file or folder moves, the alias may update either its path information or unique identify information to account for the change. If a file moves somewhere on the same volume, the alias updates its internal record with the new path information for the file. Similarly, if the original file is replaced by a file with the same name, but a different unique identity, the alias updates its internal record with the unique identity of the new file.

Label/identity indirection is so hard to grasp that a current Wikipedia article on file systems never even mentions this as a core feature.

I write about this because my current XP work environment is a complex mass of file references, including about fifty references to Access data sets embedded in other Access datasets. The result is I can't move or rename anything for fear of breaking everything. The file system is now a locked set of interdependent relationships.

So, to organize work, I have to mix full-text search (Yahoo Desktop Search is still the least worst option) and a peculiar alternate ontology. I treat my existing relationships as a fixed structure, and create a new, mobile, information organization structure consisting strictly of folders and aliases. Data lives in the old, locked, ontology (it can grow but never change or shrink), but I can rearrange the folders and aliases as needed. So I have a fixed data store and a dynamic ontology, painfully and manually recreating some of the genius of the original Mac Classic.

We didn't deserve the gifts of the gods. We are only mortals.

[1] XP does something peculiar and, as near as I can tell, almost undocumented to try to avoid breaking 'shortcut/alias' references to files. I think when you move a file it tries to patch up the shortcuts that reference it. Sometimes it fails, sometimes it works, sometimes it does very odd things. When you have a very complex environment XP can bog down trying to fix things. I suspect Vista was supposed to support Mac Classic like indirection, but I gather they abandoned that dream.

[2] Tim Berners-Lee, being a god, thought the web would work like that. The URLs was to be machine-readable reference, not a semantic identifier. There was supposed to be a directory/reference service to resolve location. Hyper-G did the same thing for Gopher and various directory services (LDAP) were also supposed to provide indirection for everything. All rejected thus far. Instead Google models the web in their servers and creates a search world that enables functional correction of links. A bit like what I end up doing in XP with my "alternate ontology".

No comments: