Let’s make it “Understand the Dock Day” instead

We’ve just finished reading today’s normal crop of a few hundred stories, blog posts, press releases, and so on—and no one has yet mentioned that today is “iCal day”, the day listed by default in iCal’s application (and Dock) icon because the program was introduced five years ago today, 2002.07.17, as part of Apple’s then-new “.Mac” services.

For some reason, this still grates on some people who can’t seem to understand that an icon is simply an image—in its own format, to be sure, but a static and unchanging bitmap that’s just like any TIFF or PNG image.

“But…but Dock icons change,” you cry plaintively. Sadly, the active voice fails you here. The icons do not change; they are changed by the application to which they belong. At any time while running, an application can tell the Dock, “Hey, use this icon for me instead of my default application icon.” That’s how you get badges in Mail and NetNewsWire, changing colors in Mailsmith, dynamic status gauges in iPulse and Activity Monitor, and the current date in iCal.

When the application is not running, there’s nothing to tell the Dock to use anything other than the static, standard icon located in the application’s bundle, so it doesn’t change in the Dock. If it really really drives you crazy, you can use the donation-ware iConiCal, a program that keeps iCal’s Dock icon updated and can even change its color from red to blue or green?

How? It changes the icons inside iCal’s application bundle. That way, when iCal updates its own Dock icon, it uses the style you prefer. If you want the current date always, iConiCal opens iCal to get the updated Dock icon, then quits iCal again while preserving the icon. No matter how you look at it, either iCal or iConiCal must execute to get the Dock icon updated.

“But…but the iPhone’s home menu always shows the correct date even if iCal isn’t running on the phone,” you cry again. First, the iPhone doesn’t run “iCal,” it runs a new iPhone-specific calendar application. Second, you don’t know that it’s not running; the iPhone may initialize it as part of normal booting.

Third and most important, the iPhone is not the Dock. Since the iPhone isn’t available to third-party developers, you don’t know how that program works or how generic its icon mechanism may be. Since the iPhone’s launcher currently only displays 16 “applications,” it’s possible that it has special-case code for the calendar—code that’s obviously missing even for the clock application, whose icon does not represent the current time even though the top of the display has the current time.

“Why can’t the Dock do the same thing?” You’re essentially asking Apple to change the Dock to have a special case for one application, and for the Dock to decide (on its own) what that application’s icon should be based on the current time. If the Dock does that, though, it really ought to be a more generic mechanism so Now Up-to-Date and Microsoft Entourage and any other application could also tell the Dock how to update its icon even when not running.

In fact, the Dock needs an internal makeover just like that. While an application can tell the Dock what icon to use anytime it’s running, no other application can get access to that icon image from the Dock. The excellent DragThing, for example, cannot display another application’s dynamic Dock icon in a DragThing dock because the Dock won’t let DragThing (or any other program) get access to another program’s current icon, much less be notified when it changes. Similarly, while any application can control the menu that appears when you Control-click (or Right-click or click-and-hold) on its Dock icon, only the Dock can display that menu—not DragThing, not any other program launcher, not even Finder.

Don’t hold your breath waiting for comprehensive Dock access, though. If other applications could have access to these same features, that would mean you don’t have to use the Dock—you could hide it permanently and use a third-party alternative. Yet from the first public descriptions of “Mac OS X” from Apple, the company has made it clear that the Dock is not optional and not replaceable. It’s a poor amalgamation of a program launcher, status center, and application menu/switcher—but Apple has affirmatively acted at every revision to make sure that you can’t do away with it without losing access to exclusive features like badges, notifications, and Dock menus.

People who killed the Dock anyway got a stick in the eye with Tiger because Dashboard is part of the Dock—kill the Dock and you kill Dashboard as well. Leopard’s new “Stacks” feature appears to be another Dock exclusive, too—keep the newly-redesigned (“now with extra ugliness!”) Dock visible at all times or do without the new feature.

It’s fine—heck, it’s expected—that Apple’s utilities won’t meet everyone’s needs. That’s why the OS provides frameworks to allow third parties to develop their own. You can even argue that there wouldn’t be nearly as many QuickTime-savvy applications out there if QuickTime Player had played movies full-screen for free before version 7.2—the capability was always part of the free QuickTime software, but QuickTime Player simply chose not to use it, and dozens of other application stepped into the void with their own unique feature sets.

You can’t do that with the Dock—Apple has steadfastly refused, for close to a decade, to allow any third-party utilities access to the information that the Dock uses to provide its unique features. That’s not concern for the user experience, that’s old-school NeXT Software politics aimed at proving their “Dock” concept was right and by God you’re going to use it whether you want to or not.

So let’s stop treating July 17 as if it’s some proof that iCal is inadequate and focus the attention where it should go—on the Dock, the program that you may not like but can’t live without, the launcher that Apple claims as superior but really knows is so defective that it will not allow third-party competition for it.

We’re not saying third-party replacements would special-case iCal and keep its icon updated every day whether iCal is open or not, but it would be nice if developers and users had that choice.