Cocoa and Carbon

If Mac OS X wouldn't then be a break with the past for users, it certainly would for developers. Well, at the start, anyway. It was initially envisaged that software writers would begin using OpenStep's object-oriented application programming interface (API) - the methods by which application communicates with operating system - which became known as Cocoa in the Rhapsody era.

Classic case: Running OS 9 under OS X
Click for full-size image

Cocoa uses Objective C, a version of the C programming language tweaked to support the modular object-oriented (OO) programming. Many Mac OS programmers were already using C++ to write OO apps in C, so that wasn't a huge leap. Learning an entirely new API, however, was another matter, and a fair few developers rebelled, among them some majors, including Adobe.

The result was a compromise: Rhapsody would incorporate a "legacy" API, dubbed Carbon, to allow coders to migirate their existing apps more quickly, though with a view to migrating to Cocoa in due course. Apple would later add a Java API layer to OS X and, eventually, allow apps to be coded in Mac OS' own scripting language, AppleScript.

Ironically, Mac OS most central user-facing feature, the Finder, implemented in OS X as a standalone application, was initally released as a Carbon-coded program. Initially, a single-thread app, Finder's use of Carbon was blamed by outsiders for its seeming poor performance. It was a frequent displayer of Aqua's 'I'm busy doing something' pointer icon, the so-called "spinning beachball of death".