Apple yesterday withdrew its latest OS X development guidelines after the document raised a storm of protest.
Published four days ago, Apple posted Technical Information Note TN2034 containing advice on good programming practice for Mac OS X. Traffic on the list - usually confined to discussion of arcane programming tips - mushroomed as developers expressed their dissent. And some, with the encouragement of Apple developer support, reported the Technical Note as a bug.
"This technote does not give any advice on programming the Mac OS, only a laundry list of things to do that would definitely hurt the ease of use of my apps," said one Apple developer. "This technote is a joke that should be withdrawn. I'd be embarrassed to be caught doing any of these practices. You should be embarrassed for promoting them."
Yesterday Apple's Technology Manager for Worldwide Developer Relations said the Note was being withdrawn to take account of adverse reaction:
"TN2034 is going to be re-written to include and address the feedback we've been getting, meanwhile the current technote is no longer available on our web site," wrote Xavier Legros.
So what caused this ire?
At first glance TN2034 looks innocuous enough and appears to do little more than aggregate some very generalised good advice that Apple has been giving developers for some time. But the document also re-opens some old wounds, incurred by many Apple developers in what they describe as the takeover of Apple by NeXT in 1997.
The note advises developers to use filename extensions instead of metadata, and to avoid features specific to MacOS' file system HFS, which is uh, metadata again.
The section entitled "Be judicious with C+" [sic] seems to have raised the most angry responses. TN2034 advises developers not to write code destined for shared libraries in C++. Or C+, even:
"Exploiting all the features of C+ in your code can make porting your software to new platforms and new compilers difficult." Apple also suggests "C+" is not particularly portable, a claim hotly disputed on the developer lists.
Ironically the original, post-NeXT acquisition developer roadmapmaintained Windows portability in the form of the Yellow Box APIs, which as Apple explained let you run code on "Rhapsody for Intel, Windows 95, and Windows NT." In its day, this technology (NeXTStep/OPENSTEP) was supported by Sun, HP and DEC too. But after taking the reins at Apple, Jobs ensure applications written for the APIs would remain on Mac hardware.
Oh - unless they are written for WebObjects, which Apple supports on Solaris and Windows 2000. Got that?
The NeXTiles running Apple have always preferred developers to write to Cocoa in Objective C or Java, as the development environment was one of the platform's great strengths. But they've ran into a vast body of Mac code which would have had to be rewritten from scratch.
At first Apple tried a stick, by de-emphasising the backward-compatible "Blue Box", APIs, which morphed in to Carbon. And plenty of carrots, in the form of Yellow Box/Cocoa-only features. But one-by-one these carrots have fallen away. Services, a killer feature of NeXT, is now available to Carbon developers too. So all Cocoa can boast is the rapid application time. Against this developers face lack of portability, and hiring or training Objective C programmers.
Apple's latest guidelines rapidly turned into a NeXT-bashing session, and regardless of how diplomatically Apple phrases TN2034's successor, no one will ever be fully satisfied. NeXT was a fundamentally different animal to the MacOS. It strikes us that Java could offer some a happy compromise, but we don't meet too many Java OS X developers. Anyone out there want to tell us of your experiences? ®