inessential by Brent Simmons

Two types of features

At every WWDC, with each OS upgrade, Apple offers two new types of features to developers.

I’ll use last year’s WWDC as an example (since I can’t talk about this year’s WWDC).

One one hand there are features like SearchKit, which make it easy to add searching to your application. This is an example of an on-the-side feature. You can add it to your application, but it doesn’t affect much of the main body of your code. It doesn’t fundamentally change how you write Cocoa apps.

The best thing about features like this is that I can use them and just have them not show up if you’re using an older OS (Jaguar).

On the other hand there are new features that change how you write apps. Cocoa bindings is an example. This technology allows you to do delete a bunch of user interface code: it makes it easier to bind your user interface to your data and preferences. But this technology goes to the heart of your application. There’s no putting it on the side (as with searching).

So at WWDC I found myself looking at each feature and figuring out if it’s an on-the-side or in-the-heart-of-the-app feature. While I’m grateful for all the cool on-the-side features I can use, I look at the in-the-heart features and dream about them. Someday...

The common wisdom is that you support the current operating system minus one. Right now that means Panther and Jaguar. When Tiger ships, it will be Tiger and Panther.

But what that means is that two years after learning about Cocoa bindings I’d finally be able to use the technology.

So what I wonder is, is the common wisdom wrong? Given all the major new technologies in each OS release, would another rule—a six-month rule, perhaps—make more sense? (Support the current OS plus whatever was current six months ago.)

The obvious benefit is better software. The drawback is that there are people still using operating systems more than six months old.

I’m just thinking out loud here. Feedback is welcome.