Snow Leopard changes the rules about opening files

Among all the welcome changes in Snow Leopard is one most-unwelcome difference—and it’s something that’s so fundamental to what has been “the Mac experience” that I’m surprised the change was made. The actual change that was made was to a feature that works at a relatively low level of the operating system, and isn’t something the typical user directly interacts with on a regular basis.

This feature, however, does drive a behavior that anyone who has used a Mac for any period of time has come to rely on, probably at a subconscious level. The behavior in question is what happens when you double-click the icon for a file created in some application. Regardless of that file’s name or file extension, your expectation is that the selected file will open in the application you used to create it. In all previous releases of OS X—and every Mac OS before it that I can recall—that’s exactly what happens.

There are some technical explanations for why this works, but it boils down to something called the creator code. Each application includes a creator code with the metadata (data about data) for the files you create. In all versions of OS X prior to 10.6, it’s this information (assuming you don’t override it using the Finder’s Open With contextual menu) that lets the system know which application to use to open a given document, regardless of its extension.

In Snow Leopard, creator codes no longer play this role—while they can still be assigned by the creating application, they (probably) won’t work as you expect them to, especially if you’re a long-time Mac user.

That’s because Apple has arbitrarily changed the role creator codes play in determining what application will open a give document. In Snow Leopard, applications are opened based on the user’s setting in the Get Info window; if that setting hasn’t been changed, then the document is opened by an application deemed to handle that file type, using information maintained by the system’s Launch Services routine.

Application association in Leopard and Snow Leopard

This sounds quite confusing, so let’s look at a real-world example. In both 10.5 and 10.6, I did the following:

  • Created a pure text file in Smultron (a text editor), and saved it as my_text.txt
  • Created a new HTML document (as if I were creating a web site from scratch) in BBEdit, and saved it as web_page.html.
  • Created a new image in Photoshop CS3, and saved it as a Photoshop file named web_image.psd.
  • Exported a web-ready image from Photoshop CS3, saving it web_image.png.

I then switched to the Finder, and double-clicked each file to see what happened. In OS X 10.5, there were no surprises at all—each file opened in the application I used to create that file. As a user, this makes perfect sense, and is the Mac-like behavior I’ve grown accustomed to over all these years.

In Snow Leopard, however, the results were notably different…and quite disconcerting. The Photoshop file opened in Photoshop, but that was the only file that behaved “correctly”—or at least in a manner that made sense to me. The Smultron-created text file opened in TextEdit, the Photoshop-created PNG opened in Preview, and the BBEdit-created HTML file opened in Firefox, my default Web browser. As a user, these results make me say “What the heck just happened here?”

If I launch Smultron, create a file, save the file, then quit Smultron, it seems completely logical that if I return to my Mac later in the day, Smultron should launch when I double-click the file I created earlier. But in Snow Leopard, I get TextEdit instead. Similar expectations apply to the HTML file I created in BBEdit—why would I suddenly want to see what it looks like in Firefox, given I was creating it in BBEdit?

Things get even stranger when I removed the filename extensions from my demo files. The two Photoshop files were unaffected; they still opened in Photoshop and Preview, as before. My Smultron-created text file, though, opened in Smultron after removing the extension. The HTML file, though, opened (as a rendered Web page) in TextEdit after removing the extension. I have no idea why these changes occurred, but as a user, it adds to the confusion—removing a file’s extension shouldn’t have any affect on which program is used to open that file.

Reaction to this change on the various blog posts on the matter has been interesting—most long-time Mac users are up in arms, while other users welcome the change. I can see where it makes sense for a very small subset of files—the PNG file above, for instance. A PNG file is an end result of a Photoshop editing session, and as such, you probably just want to view it when you double-click it (and loading Preview is about 100 times faster than loading Photoshop). The same could be true of other publication-ready image formats, but beyond that, I don’t understand how the system could ever think that a file I created in program X should always be opened in program Y.

Workarounds

If you’re happy with this change in file handling in Snow Leopard, you’re set—things now work as you probably feel they always should have. For others, though, there are a couple of different workarounds, none of which I would describe as ideal.

image
Use the Get Info window to change file associations
If you don’t need granular control over which applications open programs with identical extensions—that is, if you always want BBEdit to open all .html files, you can use the Get Info dialog to make the system do just that. Select one of the .html (or whatever extension you wish) files, then press Command-I to open the Get Info window. In the Open With section, click the pop-up menu and select your preferred application, then click Change All.

Unfortunately, this is a global change, so all .html files will now open in BBEdit. But if you use, say, both Coda and BBEdit to create HTML files, you probably won’t like this solution, as Coda-created .html files will now also open in BBEdit.

For those individual files that you want to open in their creating applications, there’s only solution that I’m aware of—Control-click on the file in question, then hold down the Option key, then select Always Open With, and choose the desired application from the (potentially huge) list of alternatives. You’ll have to do this every time you create a new file; there’s no way to set the creating application as the default opening application.

Is there some way to make both groups of users happy? I can see one possible solution that might satisfy both camps. Assuming things stay as they are now, I’d be happy if there were a system-wide preference that let me toggle between “Open documents with creating application” and “Open documents with default application” (with any Finder-set preference overriding that flag, of course).

Within each program, developers could then offer this same option as both a general preference, and when saving a file. So you could set Coda to always associate its saved files with Coda, but then use an override box in the Save dialog to specify that an individual file be opened with the default application for that file type. Photoshop could offer a similar option in its Save for Web & Devices dialog, so that you could specify PNG files be handled by the system, instead of Photoshop.

Final thoughts

Personally, I think this change in Snow Leopard’s file handling routines is a large step in the wrong direction. Not being able to get to the creating application by double-clicking on a document is a change that has a direct and measurable impact on many users’ daily routines, including mine. The last thing I want to do with my already-limited time is use the Finder’s contextual menu to “tag” every file I create to be opened with the creating application. Sadly, that’s just what Snow Leopard has forced me to do. But maybe I’m overreacting—for those who have upgraded, do you like or dislike the new method of associating documents with applications?

Subscribe to the MacWeek Newsletter

Comments