12 Feb 2012

Netatalk AppleShare Finder Icons

Netatalk is an open-source UNIX implementation of AppleShare, designed to provide services to classic (1984-2001) Macintoshes. Though Apple's own server products have moved on, and no longer support client Macs running the classic Mac OS, Netatalk will still serve files to machines as early as a 512K from 1986.

The late 1980s and early 1990s saw a great deal of development on the problem of Mac/Unix integration, primarily at research universities such as the University of Michigan (where Netatalk was born, around 1990) and Columbia University (Columbia AppleTalk Protocol, circa 1986). As such, it's no surprise that a lot of work went into making Unix-based AppleShare servers fit in as fully as possible on the Mac desktop. CAP and Netatalk didn't just serve files, they also provided centralized print queues for LaserWriters and even supported rare AppleTalk-based time synchronization protocols, such as "timelord."

This attention to detail also extended into the very icons that showed up when a Mac user mounted a shared volume from a Unix machine running software such as Netatalk. But these icons are really only visible on machines running System 7 and older — ever since Mac OS 8, the Finder's own default icons for AppleShare volumes take precedence over the custom icons that were built into the Netatalk dæmon.

These now-lost icons were incorporated into the source code in a very interesting way. Unix software could't easily contain the icons in their native format of Resources — special kinds of information, stored in a separate "fork" of files — because Unix file systems, not to mention non-AppleTalk network protocols, would lose this information by not understanding it. Instead, the raw bits for each of the 128 pixels in each 32 by 32 icon was encoded as hexadecimal information in C-language header files in the source code. A sample from icon.h looked like this:

static const unsigned char apple_atalk_icon[] = { /* default appletalk icon */
    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
    0x00,  0x01,  0x00,  0x00,  0x00,  0x02,  0x9F,  0xE0,
    0x00,  0x04,  0x50,  0x30,  0x00,  0x08,  0x30,  0x28,
    0x00,  0x10,  0x10,  0x3C,  0x07,  0xA0,  0x08,  0x04,
    0x18,  0x7F,  0x04,  0x04,  0x10,  0x00,  0x82,  0x04,
    0x10,  0x00,  0x81,  0x04,  0x10,  0x00,  0x82,  0x04,
    0x10,  0x00,  0x84,  0x04,  0x10,  0x00,  0x88,  0x04,
    0x10,  0x00,  0x90,  0x04,  0x10,  0x00,  0xB0,  0x04,
    0x10,  0x00,  0xD0,  0x04,  0xFF,  0xFF,  0xFF,  0xFF,
    0x40,  0x00,  0x00,  0x02,  0x3F,  0xFF,  0xFF,  0xFC,
    0x00,  0x00,  0x07,  0x00,  0x00,  0x00,  0x05,  0x00,
    0x00,  0x00,  0x05,  0x00,  0x00,  0x00,  0x05,  0x00,
    0x00,  0x00,  0x0F,  0x80,  0x00,  0x00,  0x08,  0x80,
    0x00,  0x00,  0x08,  0x80,  0x00,  0x00,  0x0F,  0x80,
    0x00,  0x00,  0x0A,  0x80,  0xBF,  0xFF,  0xF2,  0x74,
    0x00,  0x00,  0x05,  0x00,  0xBF,  0xFF,  0xF8,  0xF4,
    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,
    0x00,  0x01,  0x00,  0x00,  0x00,  0x03,  0x9F,  0xE0,
    0x00,  0x07,  0xDF,  0xF0,  0x00,  0x0F,  0xFF,  0xF8,
    0x00,  0x1F,  0xFF,  0xFC,  0x07,  0xBF,  0xFF,  0xFC,
    0x1F,  0xFF,  0xFF,  0xFC,  0x1F,  0xFF,  0xFF,  0xFC,
    0x1F,  0xFF,  0xFF,  0xFC,  0x1F,  0xFF,  0xFF,  0xFC,
    0x1F,  0xFF,  0xFF,  0xFC,  0x1F,  0xFF,  0xFF,  0xFC,
    0x1F,  0xFF,  0xFF,  0xFC,  0x1F,  0xFF,  0xFF,  0xFC,
    0x1F,  0xFF,  0xFF,  0xFC,  0xFF,  0xFF,  0xFF,  0xFF,
    0x7F,  0xFF,  0xFF,  0xFE,  0x3F,  0xFF,  0xFF,  0xFC,
    0x00,  0x00,  0x07,  0x00,  0x00,  0x00,  0x07,  0x00,
    0x00,  0x00,  0x07,  0x00,  0x00,  0x00,  0x07,  0x00,
    0x00,  0x00,  0x0F,  0x80,  0x00,  0x00,  0x0F,  0x80,
    0x00,  0x00,  0x0F,  0x80,  0x00,  0x00,  0x0F,  0x80,
    0x00,  0x00,  0x0F,  0x80,  0xBF,  0xFF,  0xFF,  0xF4,
    0xBF,  0xFF,  0xFD,  0xF4,  0xBF,  0xFF,  0xF8,  0xF4
};

This encoding was actually nearly identical to the XBM bitmap format, and if you know what you're doing you can recover the Mac representation of these hex codes using modern tools.

Let's see what they looked like.


This was the default icon for an AppleShare icon, connected through the traditional Datagram Delivery Protocol (in other words, before the advent of AFP/TCPIP.) It appears identical to Apple's own icon for AppleShare servers, and was used if Netatalk wanted to present itself as normal Apple server.


The globe amidst the files and folders on the platter tells you this is an AFP/TCPIP server — a representation of a "wide-area", rather than local, network. This also appears to be the same icon as Apple used for their AppleShare IP product, and was also used when Netatalk servers wanted to fit in and look exactly the same as a real Apple server.


Now things get interesting. This is, obviously, a Sun Microsystems logo, rising from the networked platter. When I was in college in the 1990s, a cluster of SparcStation 20's used similar software (actually CAP, mentioned above) to serve AppleShare volumes to students. Here's the logo is in its 1990s glory:


The Netatalk package checks if the machine its running on reports as Ultrix, and if so displays this charmingly-tilted Digital Equipment Corporation logo. Ultrix was, apparently, in active development between 1984 and 1995, and DEC itself was swallowed up by Compaq in 1998. Its logo looked like this:


I'm not quite sure why a dæmon represents a Digital VAX, but that's what shows up when Netatalk is run on this platform. Dæmons (small processes running in the background and listening for information on specific ports) are more closely associated with Unix, most specifically with BSD. The icon seems an odd choice for a VMS-based system.

Speaking of cartoon characters...


This one takes some explaining. If Netatalk senses its on an "_IBMR2" system, it deploys the "hagar" icon shown to the left. This is probably a reference to IBM RISC systems, specifically the RS/6000 which was advertised in the early 1990s with the following ad campaign:


Last is this generic icon, which Netatalk used if it couldn't determine a specific platform icon from the list above. So to be precise, this is the generic Netatalk icon for situations where the software was not trying to masquerade as an actual Apple server. I'm not sure of the state of thinking about icon design and copyright in the 1990s, but my guess is this icon was developed in case there was a problem with using Apple's own visual representations of servers — thus the option the administrator could set to either use special icons, or the Finder's default ones.


I should finish by saying that all these icons were drawn from the source code to Netatalk 2.2.x, and that it's possible that earlier releases had even more platform-specific icons embedded. But the other thing to keep in mind is that steadily fewer people have seen these icons since 1997 — the release date of Mac OS 8, which stopped supporting custom server icons. (Any guesses as to how many instances of Netatalk are currently running on top of VAX/VMS in 2012?)

For icons that died out nearly fifteen years go, it seems fitting to give them a final resting place on the web somewhere.

Previous: | Next: