Slash and Burn
or
Why the Gale Category Separator Should Be the Slash and Not the Dot
Background
There has of late been dissention within the ranks of the loyal
Gale populace - a faction of troublemakers
has formed and mounted a jihad against the faithful. These troublemakers
insist that gale adopt the lowly dot as the separator between the
components of gale categories ('pub.jihad.death-to-slashes') rather than
the traditional mighty slash ('pub/freedom-fight/death-to-dots'). For an
example of the heretics' rhetoric, see
John The
Reese's Delimiter Manifesto.
Cognitive Dissonance
Much of the argument for dots involves avoiding metaphor skew. The
argument is that the structure and usage of gale categories is more similar
to that of conventional names which use dots than to conventional names
which use slashes. I disagree. Let's examine the common cases:
- Usenet
- Usenet newsgroups use a dotted convention in which dots seperate
words, but there is no leading dot. This jives well with Gale.
However, newsgroups are not a true hierarchy - they are a flat
namespace. Thus, if I subscribe to 'rec.motorcycles' I do not see
articles posted to 'rec.motorcycles.harley' (thankfully). By
contrast Gale categories are a true hierarchy - subscribing to
'pub/motorcycles' will get me messages to 'pub/motorcycles/ysr'.
Thus Usenet's name convention is a close but not exact analog to Gale's
name convention.
- Zephyr
- At Caltech, people using Zephyr tended to use hierarchical instances
seperated by dots (e.g. 'ugcs.announce'), but as above this was a
flat hierarchy. Most other institutions using Zephyr do not use
dot-seperated instances. MIT effectively uses a two-level hierarchy:
class provides the top level, and instance denotes the more specific
subject (exact usage subject to the conventions of the particular
category).
- DNS
- Internet hostnames are a series of components seperated by dots, but
in reverse order from gale - the most general component comes last,
rather than first. Because most internet newbies see a lot more
hostnames than Usenet newsgroup names, this may be confusing. It
also presents a problem because one may want to embed hostnames in
categories.
- Filesystems
- Filesystems tend to use slashes (either forward or backward) as
component separators in pathnames. A filesystem is a true hierarchy:
entering /usr gets you access to /usr/bin, /usr/lib, etc.
Paths have some differences from Gale categories. Paths must begin
with a leading slash, or else they are considered relative to a
working directory; Gale categories have no analog. The root of a
filesystem is '/'; the root of Gale is ''. Also paths refer to
either directories, which contain other paths, or files, which
contain data. Gale categories can contain data (puffs) or
subcategories.
Paths are a close but not exact analog to Gale categories.
In my opinion, the above favor neither slashes nor dots. Dots do not map
well to DNS, the case with which most net newcomers will be familiar. They
map decently to Usenet. Slashes map well to filesystems, with a few
exceptions, about which newbies occasionally become confused. I think a
cogent discussion of how Gale categories differ from paths in the
documentation would effectively clear up newbie confusion.
Typographical
A slash is a relatively heavyweight character with directionality. The
weight of the character seperates words more clearly than a dot. For
example, compare 'pub/market/pork-bellies' to 'pub.market.pork-bellies'. The
slash slants to the right, implying that the roles of the components on
either side of the slash are not symmetric - one dominates the other. One
also thinks of division; pub/comp/lang/dylan makes one think
which clearly denotes 'pub' as most general and 'dylan' as most
specific.
It is important that the category component seperator be easy to
distinguish from the seperator used between categories in subscription
lists - otherwise subscription lists are very difficult to read. Gale uses
':' to seperate categories in subscription lists, and rightly so - the
character has a long tradition of being used to seperate elements of
similar lists (Unix PATH is the primary example). A dot is not easy to
distinguish from a colon. A slash is quite easy.
I could argue further, but I'm sick of this whole mess. Bleah.