2005/11/13

Programming memes within Apple

I’ve been very interested to read some pre-release information about Aperture, a professional program for photographers that I will likely never use. Why do I care?

Put simply, Apple is a pretty small company in some ways. It wouldn’t surprise me (in fact, I conjecture) that programmers or small teams of programmers are incrementally assigned to different areas of Apple’s software division. That is, one person will work on more than one application. This is intuitive to anyone that has noticed the discrepancy between the quality of, say, Mail.app & Finder to Pages & Keynote.

I’d bet Mail and (the) Finder are written by the same teams, given the shoddy finish and numerous bugs that boths apps have. (We know already that the iWork apps are written as one.)

Now, I don’t know to what extent the programmers in the professional apps division cross over to the core side of the fence, but, also given the relatively few updates the professional apps receive, I’d also suggest that some of Apple’s best programmers move around a little bit between various projects. At least, if this were the case, one would hope that the OS itself isn’t being written by the people that maintain (the) Finder.

So when a new professional app comes on the scene, it’s good to take note of whatever built-in goodness this application contains, for it often turns up at a later date within Mac OS X itself. In fact, this needn’t be restricted to the pro apps; in Mac OS X 10.2, Preview was crappy. Come 10.3, it had been re-written, was ace, but had no programming interface to access all the goodness (I mentioned this previously, now that I think about it). Finally, Apple rolled nice PDF features into PDFKit in 10.4, which was one of my most compelling upgrade reasons.

This isn’t an isolated example. Apple applications can sometimes be considered functionality test-beds, where they implement some new features and see how they go. This gives a snapshot of where Apple’s minds are looking at this particular time. If all goes well, the other apps will want to use the goodness as well, and it is baked into Mac OS X itself. Or similar trends continue in other areas of application development. Not all programming instances are just something to be eventually rolled into the system.

When Motion was released, it was clear that it was doing something shit hot in order to be able to keep up with the graphical load. After the announcement, we learn about things like Core Image & Video, and Quartz doing ace things with graphics cards. (Described by Siracusa, disabled for good in 10.4.3, for an expected re-appearance in Mac OS X 10.5.)

Similarly, iPhoto’s “darth vader” editing panel seems to be the natural progression of an interface first (I believe) seen in Motion (bottom right on that page).

In the meantime, the moral of today’s story I hope is clear. Apple’s programmers almost always test out their ideas in individual apps first. Let’s call them, “programming memes”, or something. If these premes are successful (mmm, not sure if I like this new word), they’ll start to show up in other areas of development. In the ideal case, the functionality or idea migrates wholesale into the operating system itself, to become a functioning block for future applications to build from.

Therefore, by looking at the forefront of Apple’s development process, which most radically is exhibited, for whatever reason (that’s a whole ‘nother can of worms), in their pro apps, we might be able to glean some insight as to where the company is going in general.

Next time: what’s new in Aperture that I hope will migrate to Mac OS X. Sorry, I hate these announcements. But I simply ran out of time to go into it here.