The Myth of the Myth of Cocoa Apps

Wednesday, 2007-08-08; 00:46:00

Via the DFLL, I came across Adrian Sutton's brief article entitled "The Myth of Cocoa Apps":

There's this myth that's existed ever since the beginning of OS X - that Cocoa apps are automatically better than any other type of application. They use less RAM, run faster and are just all round better - you can't dispute it. If you take a lousy carbon app and rewrite it in Cocoa it will become amazing and all it's problems will be solved.

This is of course, complete and utter bull.


Yes, it's easier to create a really "Mac-like" application with Cocoa than with Carbon or other frameworks, but from an end user's point of view it just doesn't matter whether or not the application is Cocoa. Let's get over it and move on.

I've written before about this sort of thing, but I've never specifically addressed the argument itself. I've heard similar things over and over again by various Mac developers and pundits including John Gruber himself, but the argument always strikes me as a little... odd. I never could quite put my finger on it, until today, after re-reading that last sentence: "Let's get over it and move on."

It's arrogant. It's developers dictating to their users what they can (or perhaps more accurately, what they should) complain about.

Now, don't get me wrong, I'm using "arrogant" in a very narrow sense. This doesn't apply to the developer's personality in general, and it doesn't reflect on the quality of their apps; it just applies to this specific situation. I can't think of a better word for it. But "get over it" entirely dismisses what the user is trying to tell the developer about their app.

After six and a half years of working on Mac OS X, I think I'd give any Mac user the benefit of the doubt over what kind of apps they want, and what kind of apps they like to use. And the reason this "myth of Cocoa apps" has persisted and propagated for six and a half years is because, you know what? There's some truth to it!
Someone want to code up a little web app that presents an icon for an app, a radio button each for "Carbon" and "Cocoa", and unleash it upon the Mac community as a little quiz? Might be interesting to see the results.

Let's take a statistically significant sample size of one: me. As I scan across my Dock (which is composed of 55 apps, 1 folder, 3 documents, and a trash can), virtually all of the apps I see are Cocoa apps. I prefer them. What's more, I can probably tell you with 100% accuracy which ones are created in Carbon and which ones are not. (Carbon: Finder, Firefox, iTunes, GraphicConverter, StarCraft.) This is not some amazing ability that I have; I'd bet that many proficient Mac users can do the same.

Back when I wrote "On Intuitivity", I mentioned three features that Cocoa applications get "for free": the dot in the close box of a window indicating that there are unsaved edits, the red underlines that come along with standard Mac OS X spell checking, and services that are accessed via the application's menu. I called these three features the "triumvirate", because they're probably the three most prominent features that set Cocoa apps apart from Carbon apps:

These aren't the only ones that Cocoa gets for free (or relatively easily), and because of all the cool things that Cocoa has to offer, Mac users have started to feel that Cocoa IS the feature, not the triumvirate. [...] And since many Carbon developers don't implement such features because it takes more time, Mac users think that Carbon is the problem.

Again, these three features aren't exclusive to Cocoa apps; they can be implemented in Carbon apps as well. But hardly any Carbon developers implement all of them, even the big-name ones. A few examples off the top of my head: Firefox doesn't implement native Mac OS X spell checking. Carbon app. Microsoft Office doesn't implement services. Carbon app. AppleWorks (which hasn't been updated in years) doesn't implement any of the three. Carbon app.

These three features in particular are getting a little more love from the Carbon developers now, but there are so many more that make Carbon apps stand out, in a bad way. Standard customizable toolbars, a single bundle encompassing the entire app and its contents, command-dragging to select discontiguous text in text area, option-dragging to select a square block of text in a text area, etc., etc. are all features that are given for free to Cocoa apps.

Sutton, Gruber and others seem to think that the desire for Cocoa apps by users is misplaced. But the desire is genuine and it has a real motivation. That the user can't specifically articulate what it is about Cocoa apps that they want is not their fault; it's because they're a user, not a developer. If you want to know why a user wants you to rewrite your app in Cocoa, you've got to play tech support and pry specifics out of him, not dismiss his desire because he's one of those silly Cocoa fanatics.

It's entirely within the hands of Carbon developers to change this perception. (And part of the responsibility may lie with Apple, too, as they could help make it easier to implement the features that Cocoa gets for free.) Implement all those niceties, and I'll bet that your users will start to think that your app is made in Cocoa, not Carbon.

In the end, the myth is that there's a myth about Cocoa apps. By default, Cocoa apps get a head start over Carbon apps, and they're easier to develop anyway. So practically by default, Cocoa apps will end up being better Mac-like apps. There are certainly decidedly crappy Cocoa apps, and there are absolutely awesome Carbon apps, but by and large, Cocoa apps end up being more Mac-like because of all the features they get for free.

Cocoa apps usually are better.

Emphasis on "usually".

Technological Supernova   Rants   Older   Newer   Post a Comment