For those who don’t know, OS X has the concept of a “bundle”. A bundle is basically a folder that allows related resources (software code, graphics files, configuration information) to be grouped together. The most common example of bundles is Mac OS X Applications. Mac OS X applications are often bundles, known as “packages”. To the end user, in the Finder, they appear to be a single object you manipulate. You drag the application around, install it by dragging it to where you want it to live, delete it by dragging it to the trash.
The reality is of course that this is a folder with many sub-folders and many files inside. But these details are hidden from the user. And for good reason – the hiding of this data makes the system more usable – it is one of the reasons why installing and deleting applications on OS X is so easy.
So, what happens when you try and copy a bundle – let’s say an application? Well, as of OS X 10.4, you get a dialog showing progress of the copy operation. For example, suppose I make a copy of the application “Delicious Library”. I get the following dialog:
What you’ll notice is that the progress information shows the internals of the bundle. Internals that the end user should not need to worry about. Internals that the end user shouldn’t even see (without requesting, in the case of an advanced user perhaps).
The odd thing is, Apple did fix this after I reported it in 10.2, so 10.3 showed overall progress, and a disclosure triangle opened information showing progress of the package details. However, in 10.4 Apple decided to go back to the old way, and have ignored bug reports. One can only assume they think this is the way it should work – regardless of the obvious usability problems.
Ok, people might say “Well, that’s confusing for a newbie. But the copy progress dialog does show the icon, so you can still see what is being copied!”.
This is true. So what happens when you try and copy multiple bundles with the same icon. Let’s take a real life example. EyeTV files are video bundles of recorded digital television. To the end user, they look like a single object with extension .eyetv. Internally, they consist of a very large MPEG file (the video) with a seemingly random name (internal details), and some other support files that keep information as to where you are up to in viewing the file, and other details about the recording.
Now, let’s copy both of these EyeTV files to another location. The dialog we see is as follows:
Ok, which file is which? All you can see are the internals being copied – and because the MPEG files inside are so large, most of the copy progress shows the MPEG files being copied. If I want to stop one of them, how do I know which one to stop?
The point is that the end user shouldn’t be seeing these internals at all. I’ve actually been helping Mac OS X users over the phone and had users say to me “It’s telling me I’m copying all these files I’ve never seen before. What are all these TIFF files I’m copying?”.
The solution to this problem is so simple. The progress dialog should really look as follows:
Apple could implement a small disclosure triangle to show the details, though personally I don’t think this is something that the end user requires – even a developer such as myself. Add a developer preference perhaps to show the details. Just don’t have this as a default.
Of course, with Mac OS X Leopard on the horizon, Apple may have fixed this problem completely. I guess we’ll see in the coming weeks (I can’t afford to go to WWDC, so I have to rely on reports from others out there).
Update (22 September 2007): I’ve been informed that this has been fixed in Leopard. Whether it stays fixed remains to be seen, given it was fixed once before.