Icon-blank

User Feedback Part 2: About Mac OS X Document Icons

As in the past, I like to address public user feedback and how it influences Balthisar Tidy.

User Bucky Junior left a review titled, “This program made undesired changes to my system icons.” Selected excerpts and responses are below.

I opened two files, one an HTML file and the other a PHP file. My very first impression was that it gave a warning about being a 4.1 Transitional Doctype. A warning? Really. It was written that way on purpose.

Yes, it’s true that Balthisar Tidy will inform you about your content type. This is in no way a bug, but rather a feature. Especially given that Balthisar Tidy handles many different versions of HTML, it’s critical to have feedback as to the level of HTML that it thinks you want to work with.

This user is wrong about seeing a warning, though. Balthisar Tidy makes it very clear via both the use of pretty icons and plain English text that what he or she saw was, in fact, “Information.”

Then it said there was no <title></title> when there was.

Thanks for the bug report. This issue is fixed in Balthisar Tidy 2.0.3, which is available now for download, and will be available in a few days from the App Store. This only affected users who opened documents without making changes to the document or selecting any Tidy options. It’s a legitimate complaint, but it’s something that anyone who attempted to use Tidy for more than one minute would have realized was only fleeting.

After returning to BBEdit to get some work done, I found that all of my PHP files’ icons had been changed to Balthisar Tidy icons. NOT what I requested. I was NOT asked, the program changed a system wide setting without my approval. I am not a happy camper.

My first instinct was to become angry and ask where “Bucky Junior” obtained his personal PC operators license, but then I realized that instead of being angry at his ignorance, this is an excellent opportunity to educate everyone about some of the things that Mac OS X does for us automatically that might seem like voodoo.

About Mac OS X document icon assignment

To be clear, Balthisar Tidy does not make undesired changes to system icons. What this poor user experienced is a feature of the operating system, and the source code proves it more than adequately.

Mac OS X requires applications (such as Balthisar Tidy) to declare their relationship to various filetypes via roles. Because Balthisar Tidy modifies HTML, PHP, and other text files, it declares itself to fulfill an “editor” role to the operating system. Note that this doesn’t displace other editors; it simply lets Mac OS X know that Balthisar Tidy is capable of editing certain types of files.

When a user installs a new application capable of editing files, Mac OS X assumes that the user knows what he’s doing — after all, he took pains to sign in to the App Store, download, and install the application. It’s obvious that he wants to use the application for editing files that it’s capable of editing. Mac OS X (not the application, but rather the OS) then has to make a decision as to whether the new editor is the default editor or not.

Where unsophisticated users (such as Bucky Junior) often get confused is the conditions that Mac OS X uses to determine whether a newer application should become the default editor or not. This isn’t Balthisar Tidy’s decision, and there doesn’t exist a mechanism for an application to ask a user whether or not to make this change. If Mac OS X wants to change it, then it will.

When will Mac OS X make this change on a user’s behalf, then?

  1. If a user has never specifically indicated that a file type belongs to an application, then newly installed editors will be appointed the default editor role. (This is very likely what happened to our frustrated reviewer.)
    • Among programmers, web developers, and media consumers this default editor role juggling is, in fact, a common occurrence. Consider that when your Mac is brand new, TextEdit is the default editor for TXT files. However when you install BBEdit, it becomes the default editor. When you next install TextMate, it takes over. All of this happens automatically and without any opportunity for the user to object. You find the same circumstances with media files that both QuickTime and VLC Player try to handle.
  2. If a user tells Mac OS X to assign the editor role to a specific application, then Mac OS X will oblige, and also in the future, it will not automatically change this role to newly installed applications (unless you’ve deleted the assigned application).
    • The way to tell Mac OS X to do this is to use the Get Info window from Finder. The Open with drop-down menu will let you select any other compatible application. The important part of taking control over Mac OS X, though, is to use the Change All… button. Once you’ve done this, Mac OS X won’t give priority to newly installed applications.
  3. NOT what I requested. …the program changed a system wide setting without my approval.

    • I hope that with a broader understanding of how Mac OS X works Bucky Junior now realizes that he did, in fact, implicitly request the change, and it was done completely with his implicit approval. Balthisar Tidy is not guilty of anything malign.

This one goes in my trash.

I wish you could have reached out to me, but be that as it may.

A look at the code

For those that are more interested in the discussion above, this code snippet below is copied directly from Balthisar Tidy’s info.plist file (it’s what tells Mac OS X what Tidy is able to do). This is Balthisar Tidy’s XML. There are many like it, but this one is Balthisar Tidy’s.

<dict>
  <key>CFBundleTypeExtensions</key>
  <array>
    <string>php</string>
    <string>PHP</string>
  </array>
  <key>CFBundleTypeIconFile</key>
  <string>PHP</string>
  <key>CFBundleTypeName</key>
  <string>PHP File</string>
  <key>CFBundleTypeRole</key>
  <string>Editor</string>
  <key>LSItemContentTypes</key>
  <array>
    <string>public.php-script</string>
  </array>
  <key>NSDocumentClass</key>
  <string>TidyDocument</string>
</dict>
comments powered by Disqus