What does "com.developer.application" mean?

4

4

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.

jrhorn424

Posted 2010-10-16T19:01:05.697

Reputation: 240

Answers

7

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";

Daniel Beck

Posted 2010-10-16T19:01:05.697

Reputation: 98 421

4

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!).

JohnZaj

Posted 2010-10-16T19:01:05.697

Reputation: 437

1LOL, no downvote from me! – jrhorn424 – 2010-10-18T13:57:11.103

3

I've seen it called reverse domain naming, but the idea is the same. It's useful for avoiding conflicts if everyone uses the system needed on domain names they control so that there's no chance of a name collision across vendors. It's extremely common with Java packages, which is why you see it all the time in Android.

afrazier

Posted 2010-10-16T19:01:05.697

Reputation: 21 316

2

What you see is the bundle identifier of the application. These are required to be unique, and Apple's way of enforcing that was to use a reverse-DN notation. That way, editors use their domain name to uniquely identify their applications, and no name clash should logically arise.

The bundle identifier is used by Mac OS to locate the program wherever it is on your system. One way to find the bundle identifier of a program is by inspecting its property list (there might be less complicated options, but I don't really know them).

zneak

Posted 2010-10-16T19:01:05.697

Reputation: 989