An amazing bit of rumor has surfaced recently: Apple’s “Yellow Box” is supposed to be coming back from the dead, under the codename “Dharma“.
The idea seems to be that writing to a “pure Cocoa” API would enable software to be compiled, unchanged, for both Mac OS X and Windows. Or it could even be published as a universal binary containing both versions.
Indeed, the first aspect was the original idea when the Yellow Box was first published in 1997, when Apple bought NeXT (or vice-versa). Based on OpenStep, both Cocoa and the Yellow Box would have the same API and support programs running on both platforms. The Yellow Box was even included with Rhapsody (later Mac OS X server), although I think actual deployment licenses were sold separately. WebObjects (based on Objective-C) and EnterpriseObjects (ditto) used the same multiplatform philosophy.
However, at the 2000 WWDC Apple backed away from the whole thing. EO was discontinued amidst much weeping and wailing from its devotees, WO was converted to Java, and the Yellow Box was quietly dropped without much explanation.
At the time the reasons were quite unclear, but in hindsight some justifications can be seen. In particular, doing a successful multiplatform technology has turned out to be much more difficult than most people believed at the time; especially as Windows, not being under Apple’s control, would have been a difficult moving target anyway.
Personally I think that, retrospectively, dropping EO and moving WO to Java were mistaken decisions; keeping them both alive using Objective-C and Mac-only would have been prudent. However, the adoption of Cocoa turned out to be much slower than anyone would have thought, and as major companies like Microsoft, Adobe and Macromedia stayed with Carbon, any actual Yellow Box usage would have been restricted to smaller software houses or ISVs – for which the $3000 for 10 seats licensing terms would have been too expensive anyway.
Apple deftly turned away from the idea of Carbon as a short-term transition technology and instead promoted Carbon and Cocoa as equal-strength APIs whose capabilities are converging over time. Now here is an aspect which the recent rumormongers – not being developers – have not thought of. Both NeXTSTEP and OpenStep were the lowest-level API for application programs, but this is not true of Cocoa. The multiple layering of technologies and APIs on Mac OS X means that Cocoa can’t do many things that are possible in other APIs; meaning, in practice, that any reasonably complex software must use a mixture of technologies. My own XRay, for instance, even though it’s nominally a Cocoa program, also calls BSD APIs to handle users, groups, and permissions, as well as Carbon APIs to access many aspects of the file system.
Therefore, were the Yellow Box magically resurrected, programs written for a “pure Cocoa” API would theoretically run on it – but few, if any, existing Cocoa applications can afford to be so pure. The current Cocoa framework would have to be extended quite a lot, and Yellow Box prices would have to be lowered drastically – perhaps even to zero – before any but a handful of software companies would be interested. And for what? To allow interesting applications for Mac OS X also to run on Windows, reducing incentives for users to switch? Sounds extremely unlikely to me…