Anyone with even a passing familiarity with Mac OS X (and iOS) history and internals knows that Gates' (and therefore the book's) claim that NeXT technology wasn't the basis of OS X is laughably false.
In fact I think Gruber himself continued to understate the role NeXT technology played. Gruber writes:
> It is in fact, completely and utterly wrong.
> NeXTStep was not “just warmed over UNIX”.
> Apple did get NeXT’s OS to run on Mac hardware.
> Mac OS X 10.0 was a hybrid of Mac and NeXT
> technology, but it was clearly the NeXT system
> with Mac technologies integrated, not the
> other way around.
Gruber should have gone further and pointed out that Mac OS X wasn't even a hybrid, but rather the latest iteration of NeXT technology combined with new code that reimplemented the Mac experience. The modest quantity of ported or migrated Mac technology (e.g. the Carbon APIs) existed purely to form a compatibility layer with existing Mac apps, and don't form the basis of any future development path.
It would be also fair to say that iOS does not have any legacy "Mac" technology in its stack, and shares its spiritual lineage with NeXT alone.
> The modest quantity of ported or migrated Mac technology (e.g. the Carbon APIs) existed purely to form a compatibility layer with existing Mac apps, and don't form the basis of any future development path.
I dunno. Post-Rhapsody, Apple worked hard to unify Carbon and Cocoa to provide a consistent user experience across applications. IIRC, in a surprising number of cases, the way unification was achieved was to make the Cocoa element be little more than a compatibility layer on top of Carbon. For example, I believe the save and open panels, print and page layout panels, and various dialog APIs worked this way.
It seems to me that if Carbon was viewed as a dead-end from the get-go, embedding it in many cases under Cocoa was a funny way of demonstrating that.
Carbon was a big project, and wasn't modest by any standard. Again IIRC, Apple rewrote the entire Finder in Carbon (and not in Cocoa) in order to test the Carbon library for bugs. Other things came from the Mac while their NeXTSTEP equivalents were abandoned: for example, UFS was blown away and replaced with HFS+. Quicktime was ported, as were 3D facilities and game APIs. NeXT's Soundkit was deprecated in favor of stuff for OS 9. Java, up through 1.3.x at any rate, came from OS 9. I think the font facility, always an ugliness in NeXTSTEP, was replaced with Apple's (including support for OpenType etc.). I think your depiction of this stuff as "modest" is not particularly accurate.
So anyway, Isaacson's depiction of OS X as being basically Mac technologies with a little NeXTSTEP kernel is ridiculous. But don't make the same mistake in the other direction.
IIRC, Apple rewrote the entire Finder in Carbon (and not
in Cocoa) in order to test the Carbon library for bugs.
This may well be true, but my own suspicion is that it had as much to do with Apple having hundreds of core system developers already familiar with the C++ APIs, and a limited timeframe to get Mac OS X released. Either way, both assertions point to Carbon being a compromise choice.
UFS was blown away and replaced with HFS+
In order to maintain compatibility. And it wasn't just ported code -- HFS+ support was rewritten from the ground up as a UNIX file system. Surprisingly, the result wasn't a delicate hack, and the fact that we're still using it today (on iOS too!) speaks to the engineering capability of Apple. (And NeXT, since it's all one big family now.)
Quicktime was ported
QuickTime was also ported to Windows.
as were 3D facilities and game APIs
In order to maintain compatibility. The recommended way to write games on Mac OS X has always been the OpenGL APIs, and you can hardly describe OpenGL as a legacy Mac technology.
Java, up through 1.3.x at any rate, came from OS 9
Java came from Sun. I have no knowledge of how Java was implemented in Mac OS X, but to the extent that any platform-specific or processor-specific hooks were lifted from the OS 9 distribution, that's hardly a Mac "technology".
I think the font facility, always an ugliness in
NeXTSTEP, was replaced with Apple's
Font handling in Mac OS X is part of Quartz, a new technology developed for OS X. Not only was it not taken from OS 9, the whole technology direction was abandoned. (Remember QuickDraw GX?)
There are a whole lot of factual errors here, or at least conclusions kind of pulled out of thin air. To wit:
> This may well be true, but my own suspicion is that it had as much to do with Apple having hundreds of core system developers already familiar with the C++ APIs, and a limited timeframe to get Mac OS X released.
Actually, NeXT already had a perfectly cromulent Cocoa-based "Finder", called the Workspace Manager. This was the program used in NeXTSTEP and later in Rhapsody. Apple threw it away and replaced it with a Carbon Finder built in-house. They were quite specific as to the reason: to guarantee that Carbon was bullet-proof, Apple built the Finder "to eat their own dog food" (though he didn't originate the term at Apple, I think Steve started using it too).
> [regarding UFS] In order to maintain compatibility. And it wasn't just ported code -- HFS+ support was rewritten from the ground up as a UNIX file system. Surprisingly, the result wasn't a delicate hack, and the fact that we're still using it today (on iOS too!) speaks to the engineering capability of Apple. (And NeXT, since it's all one big family now.)
It wasn't just compatibility. Though it was case-preserving :-(, HFS+ had some big advantages over UFS. It supported Unicode. It supported metadata. It supported soft links which were preserved in removable media. It had much better networked file support. And so on.
Also: IIRC HFS+ wasn't rewritten from the ground up. Apple already long had a version of it running on UNIX systems they had developed in-house.
> Quicktime was also ported to Windows.
The point is, NeXT already had a multimedia, sound, and (limited) video system. It was famous for its sound system in particular. But (Carbon) Quicktime was better. So they used it instead.
> In order to maintain compatibility. The recommended way to write games on Mac OS X has always been the OpenGL APIs, and you can hardly describe OpenGL as a legacy Mac technology.
You absolutely can! Porting OpenGL involves a huge number of low-level ties to the operating system. NeXT had its own 3D facilities as well (OpenGL under NeXTSTEP, and Display Renderman), which were entirely tossed out in favor of the "legacy" OS 9 version.
> Java came from Sun.
On early OS X, the bulk of the Java facility came from Apple. Sun didn't support the Java port at all. NeXTSTEP, or more properly OpenStep, had a Java port from Sun which was entirely replaced with the OS 9 Java version.
> Font handling in Mac OS X is part of Quartz, a new technology developed for OS X.
Not correct. Font and typographic engine technology was derived from ATSUI, Apple's advanced typography system. And why wouldn't they? It was the best in the world.
Look, I don't dispute, by any stretch, the notion that the crucial parts of OS X were NeXTSTEP. I'm a NeXTSTEP guy! But your dismissal of Carbon and OS 9 technologies that found their way into OS X is both overly casual and in many cases simply false. To this day OS X still has a huge number of OS 9 technologies embedded in it not because of compatibility, or just because of compatibility, but because they were the best technology. Apple's not stupid.
"It was famous for its sound system in particular."
I don't recall it being a big deal after the black hardware and their DSPs were killed.
"NeXT had its own 3D facilities as well (OpenGL under NeXTSTEP, and Display Renderman), which were entirely tossed out in favor of the "legacy" OS 9 version."
I don't recall NeXT ever having OpenGL. And Display Renderman pretty much lost to OpenGL in the 90s, so that wasn't about to be resurrected.
" NeXTSTEP, or more properly OpenStep, had a Java port from Sun"
As I wrote one of the more popular sound editors as an undergraduate (Resound), them's fightin' words. SoundKit was still quite good, even if MusicKit sorta died with the DSP.
I think I'm mistaken about OpenGL, my memory is fuzzy. As to Java: what I was thinking of was OPENSTEP/NT and NEO both supporting Java (WebObjects had Java as early as '97), but I believe it was never released on NeXTSTEP. I guess that doesn't count.
I do miss Renderman on the desktop. Maybe not very practical, just really cool.
When I was contracting at Swiss Bank in Chicago in 1994, I noticed an HP on the network running NeXTSTEP. I telnet'ed to it from the NeXTStation on my desk, and ran some renders to see how much faster it was. Got a stern email saying "Stop doing that.".
In fact I think Gruber himself continued to understate the role NeXT technology played. Gruber writes:
Gruber should have gone further and pointed out that Mac OS X wasn't even a hybrid, but rather the latest iteration of NeXT technology combined with new code that reimplemented the Mac experience. The modest quantity of ported or migrated Mac technology (e.g. the Carbon APIs) existed purely to form a compatibility layer with existing Mac apps, and don't form the basis of any future development path.It would be also fair to say that iOS does not have any legacy "Mac" technology in its stack, and shares its spiritual lineage with NeXT alone.