Tell-tale bundles

by Francois Joseph de Kermadec


A little while ago, Tom Bridge, one of my fellow bloggers on the O'Reilly Network, wondered about the significance of a strange icon he had seen in his Software Update window. Upon reading his blog entry, I readily admit I too was stumped for a second: clearly, the icon of a house seemed, after some thought, to suggest a log out was required but how could I be sure? A quick look through the help files did not reveal anything of much significance, although it is well possible I overlooked the appropriate document.

What was a geek to do, then? In a moment of wondering, I navigated to my CoreServices folder, did a bit of control-clicking and examined the contents of the Software Update bundle. Lo and behold was that little icon, waiting for me, with a rather explicit name of "LogOutReq.tif". From there, confirming that it, indeed, meant a logout was required, was relatively simple.

Of course, I was giving the thing a really random shot here and am by no means implying Tom should have seen it. The truth is, since I started playing with Mac OS X, I have always been amazed at what application bundles enclose. Keeping in mind most system services and components rely on a bundle somewhere, there is a lot of room for exploration.

In fact, some users declare initial copies of Mac OS X already shipped with a photo of the Mighty Mouse months before it was released -- something I did not confirm but seems plausible enough.

As bundle contain easily accessible files, most developers will give them sensical names to remember what goes where, often providing pointers to yet-to-be-developped features. As they are complex, they aren't always cleaned up properly, and this is how many users, including me, discovered iCal was, in fact, called White Rabbit internally at Apple. Mail.app is famous for containing photos of its authors, Grab.app some old NeXT icons. All these bundles tell a story and often reveal how an application evolved and where it is headed. Those who speak foreign languages will have lots of fun reading uncleaned translations in .plist files, that were prepared with the full feature set in mind, then added to a bundle without trimming. Most companies do not disclose the future of products before they are released but they often speak for themselves.