RM: OS X arch question
Hi o Drunken-Caffeinated One, big fan of your site here. Got a burning question which I'd like to pose.I've been reading about the history of OS X on kernelthread.org, and the more I study the architecture, the less I understand why the former NeXTies at Apple didn't just use BSD as the kernel, instead of doing the Mach + BSD thing with the increased complexity, funneling and message passing overhead and performance hindrances. Cocoa API retro-compatibility? Ego? NeXT heritage over common sense? SMP issues in BSD?
Thanks,
FZ
This comes up more than you'd think, and you can probably find find a more thorough answer to your question, as much as it can be known without being a fly on the wall at Apple, at these two links...
Still, your question can probably be answered by asking "Why did Mac OS X not have stable sound or printing APIs for the first few versions?" and "Why didn't OS X ship with a DVD Player?". Most probably won't remember that there was a big goofy deal when Mac OS 10.0 shipped, but then sometime in the future (can't recall when) you had to download the DVD Player.app as it wasn't ready when the original shipped...
Something like the DVD Player.app was primarily just some egg on their face, but things like not having stable printing APIs until 10.2 were certainly one of the things that caused people like Quark, whose product depended heavily on printing, to just wait to start development in a serious way until they'd been baked. Similar things happened with some music apps like Finale. (FYI, not defending their apps in general, or the companies, but this aspect of their decisions was valid, just as say, Adobe's decision to go ahead and bypass Apple's unstable APIs and roll their own in order to help their products gain share also made sense)
Some pushed ahead and worked around all the unstable weirdness in those APIs, but it certainly had real costs for the platform, and you'd have to imagine if Apple could have had these things, including a DVD Player, they would have.
Since they didn't, you can imagine they had their hands full, and while in a perfect world exploring certain options could have been cool, actually getting it out the door was even cooler.
Comments (11)
Posted by: Kevin Ballard at August 1, 2005 01:59 AM
"Real artists ship"
Posted by: AkaXakA at August 1, 2005 07:22 AM
Finale is the Spawn of Satan and should be killed off instantly.
Yes, I do have a grudge against it, as it's the worst designed program - ever. (On mac and win, btw)
Yuck.
Posted by: Rich W at August 1, 2005 09:57 AM
Darwin provides a nicer, more stable interface for writing device drivers too - and the ability to load/unload them cleanly during the compile, test, debug cycle.
The question makes about as much sense as asking why MS didn't base Windows on BSD since they used BSD's networking and there is a POSIX layer available (SFU/Cygwin).
Posted by: Ben at August 1, 2005 12:01 PM
Also, a significant part of the draw to NeXTStep was that they had solid, proven ABI compatibility between various revisions of their operating system. They'd even ported between architectures while maintaining ABI compatibility. I don't know the first thing about loading binaries, as that was one of the things that my OS professor said was complicated enough that we couldn't possibly implement it for our class project, but I trust that screwing with their kernel design might have diminished this strength.
click for the most informative Apple-related slashdot post ever.
Posted by: FZ at August 1, 2005 01:38 PM
Ben, reading that /. post made my skin crawl. I really, really hope that guy was joking, or it would paint a pretty depressing picture of the level of actual competence of a typical high-level Apple employee. Chastising people with 20/20 hindsight is way too easy, but still ...
"It was a simple choice, really, between Be and NeXTStep."
Argh. Choke.
Except BeOS was 1 year away to be ready to be deployed on Macs as the real, bonafide be-all end-all OS users were craving for. It took six years for OSX to get to 10.2.6, and they're still chugging at the innards to make it do what they promised it should be doing in 2001. I thought that 'can't even print' was the argument against BeOS, not OSX. Really, by now all the excuses about the supposed advantages of the magical NeXT arch have been nullified by the history of workarounds, patches and developer headaches, which seems to be a constant theme when Apple and the RDF clash. Was getting Jobs back that much of a priority?
I really hope that, on the day that all the world's NDAs will lift, somebody will write an insider piece about what really went on at Apple in choosing NeXT over Be.
Posted by: FZ at August 1, 2005 02:02 PM
AkaXakA: Finale is indeed teh horror. And the sorry state of Core Audio is another rant for another day.
Rich W: didn't know about the driver thing. Thanks. As for the MS analogy, err, not really. 'Borrowing' the BSD networking code for your kernel is pretty different than bolting the whole of BSD over another kernel with its share of added complexities, double set of APIs, etc. It was the rationale of that that I was curious about. And DB delivered, just as you knew he would :)
Posted by: Colin Barrett at August 1, 2005 04:10 PM
AkaXakA: I disagree completely with you about Finale. My father has used it since version 3.0 (back in 1994), and it was actually the reason he made out first computer purchase a Mac (Oh, Quadra 605, how I miss thee). The app is amazingly, amazingly powerful. It has a steep learning curve, but if you understand the musical terminology at work, it's not really that bad.
Posted by: Frog Sex at August 1, 2005 04:42 PM
I was at Apple at the time of the NeXT transition.
1. That Slashdot Post was indeed by Kurt Piersol, who did write the report that recommended NeXT. This was not a decision taken lightly, nor was Kurt the only one involved in the decision. Nor did everyone at Apple agree with the decision. In fact, many to this day believe it was bullshit, given our experience running OpenStep on generic whitebox hardware, where it sucked ass compared to BeOS. And printing? Yes, you could print to raw PostScript. You could also print to PostScript. By the way, have you seen the excellent PostScript printing capabilities? In fact, in NeXTstep, you can print using, wonder of wonders, PostScript.
(It should also be noted that Kurt dug his own grave in writing that report. He was the prime mover behind OpenDoc.)
2. Quark was basically up and running on Carbon before 10.0 was out. Quark's lack of ability to get it out the door had more to do with a desire to "save money" by outsourcing development to India, I suspect.
Posted by: ex-Apple at August 1, 2005 05:05 PM
Face it, this is a simple case of Not Invented Here. Avie Tevanian worked on Mach at CMU. There is no way he would ever have used a kernel other than his own.
When given a choice of Apple technology vs. NeXT technology, he always chose NeXT even when a cross-functional engineering team told him the Apple stuff was better. He claimed that using the NeXT stuff would get OS X to market faster. He was off schedule by a few years.
Very few Apple folks present at that time have nice words to say about Avie. Hell, I'm wondering why he's still collecting a paycheck and annual bonus far exceeding his value to the company.
Posted by: Peter da Silva at August 1, 2005 07:17 PM
Except BeOS was 1 year away to be ready to be deployed on Macs as the real, bonafide be-all end-all OS users were craving for.
No multi-user support, no working networking (remember Bone?), a horrid API (C++ is the Worst Object Oriented Language Evar), no ABI to speak of, it required enough RAM it coughed up blood on machines that both Rhapsody and NT4 ran happily on (yeh, less than OS X, but after they crammed all the eye candy in anything would bog down), and no multi-way wait (no select(), what would THAT do to networking?). Oh, and their networking (such as it was) used the Winsock-style socket model so porting almost any networking software would have been a nightmare.
I've got a NeXTstation mono right here. The CPU is a joke, but the OS was more responsive than my 7600/180 with 1GB RAM running 8.6 (I had them right next to each other for a while), and when you're not trying to do something stupid that the CPU simply isn't up to (like... playing MP3s or running a web browser) it makes it look sick.
Avie was right. NeXTSTeP was already ready for end users the day Apple took it over. It didn't look like a Mac, but it worked better and was... on the same CPU... much faster than Mac OS. Using the NeXT stuff all the way WOULD have gotten the system to market quicker, but the ISVs killed that option and forced them to backpedal and go through the heartbreak of Carbon. And that's what held OS X up for so many years... having to keep software that thought it should be allowed to live in codependency with the horrid old Mac OS with it's '60s-era scheduler. No, that's not fair, most schedulers in the '60s were more competent.
God, I was so hopeful that the Intel switch was going to mean the end of Carbon. Or at least the end of MacOS style Carbon.
BeOS was more than "a year" from being the best anything. But let's say it was: after a year they'd have still looked at it and said "hey, this doesn't look like a Mac" and the ISVs would still go "we're not running in emulation under Shapeshifter or porting to a new API" and they'd have had to go through all the same machinations with the ISVs and coming up with Carbon, but they'd have been later getting out of the starting gate...
Speculating about what would have happened if Apple had shipped *either* BeOS *or* Rhapsody _as_originally_planned_ are as useful and enjoyable as space fans speculating about "what if NASA had been allowed to build the original shuttle design".
But, damn, BeOS was nowhere near "the real, bonafide be-all end-all OS users were craving for".








I'll admit that OS X was a bumpy beginning, but now that it has happened people are better off. I never shared the sentiments about printing. I thought it was just fine. It was like moving in to a new house. You start out with just the basic bed, kitchen utilities, and of course you start putting up the family room last. After that you can start laying out how to organize and fill up the rest of the living space. 10.2 was the end of that moving period.
10.3 was what I considered the hallmark of superiority. Everything past this point is ahead of the game as far as I'm concerned. Faster graphics, superior programming features, and all on top of great stability.
I'm still playing with 10.4. Not sure where I stand on Dashboard, since I use only a few of them. A future update or upgrade will iron out any issues that people have right now. I'm enjoying some of the newer bindings additions and Spotlight works well to search through all the localized documentation. 10.4 isn't a closed chapter, so it will be interesting to see how this little tiger that could ends up.