What does "com.developer.application" mean?

I'm editing a plist file on my Mac for the QuickCursor app. I'd like to try to add Aquamacs to the list of available editing applications. In any case, all the other editors listed in the plist are called with something that looks like com.developer.application. For instance:

BBEdit => com.barebones.bbedit
MacVim => org.vim.MacVim
Smultron => org.smultron.Smultron

I've noticed all the "processes" or "applications" on my Android phone follow a similar naming scheme. So what the heck do I call those things? Reverse-URI's?

And more to my purpose, how do I find the "reverse-URI" for any arbitrary Mac application? (I'm cool with using the terminal if that's the easiest way.)

Please feel free to tag this with better tags so others can find it in the future.


Solution 1:

These bundle identifiers uniquely identify an application.

Apple explains these (for Dashboard widgets) here:

The reverse Internet domain style identifier for the bundle.

If you want to access these programmatically on a Mac, see here.

Java has the same naming convention for packages.

In general, a package name begins with the top level domain name of the organization and then the organization's domain and then any subdomains listed in reverse order. The organization can then choose a specific name for their package.

This is what you see on your Android system.

The reason for this format is that a domain name uniquely identifies an organization or developer, and within an organization people should be able to avoid conflicts. Since Domain Names are based on a hierarchy, representing these identifiers the same way makes sense: The element order is rather arbitrary, and reverse order also allows for proper sorting, so that all com.apple.[etc] files are grouped.

How to find out the bundle identifier for a given application:

  1. Right-click the application bundle (the thing with the icon) and select Show Package Contents.
  2. Open Contents/Info.plist with Property List Editor (part of the Apple Developer Tools). You can also try opening the file with a text editor, if it doesn't start with bplist, you can read it.
  3. Look for CFBundleIdentifier in this file. What follows is what you want. It looks something like this:

<key>CFBundleIdentifier</key>
<string>com.culturedcode.things</string>

or this:

CFBundleIdentifier = "com.macromates.textmate";

Solution 2:

You can be playful with this and try for example, org.quickcursor.QuickCursor or other variations until you get it right. org.hogbay.QuickCursor is another possibility. Unfortunately I do not have a mac to play with (I'll probably get down-voted for this!).