Comment by ndiddy
15 hours ago
Some former Be employees have commented here in the past saying that Apple made the right decision to buy Next and not Be from a technical perspective, as BeOS had poor code quality and was far behind NEXTSTEP in important areas like networking and printing. They also implemented the OS API directly in C++, which tied them to a specific C++ compiler (some mid-90s version of GCC) due to the ABI getting broken in newer versions. The 32-bit version of Haiku (modern BeOS reimplementation) supports BeOS software, and as a result still needs to be compiled with that mid-90s GCC release.
Beyond that, I'm not sure if buying Be would have fixed the managerial problems at Apple. Would they have been able to add the required features to BeOS to turn it into a production OS without the project turning into another Copland? Would the existing Apple management have slimmed down the massive Apple product line that had dozens of nearly identical models? Would it have gotten rid of dead-end projects like Newton and Pippin? Etc.
Best example of how far BeOs fell short was that for a very long while it lacked printer drivers of any kind --- by contrast, not only did NeXTstep essentially get printing "for free" since it used Display PostScript, the implementation of that was such that Adobe demanded a modification to the user agreement limiting the output resolution so that print shops would not be able to purchase NeXT computers and use them as RIPs for imagesetters.
Ah, Adobe, how I want you to burn in an enormous, abyssal hellfire.
Former Be person here. Excellent summary. To further elucidate the management issue, some of the Be management went to Palm and they weren’t super effective there either. A fun alternative universe would be Apple buying Be, Apple going bankrupt or eaten by the clones, NeXT powering the internet with WebObjects, Microsoft crushed by antitrust and we are all running Linux using Eazel/GNOME.
Yeah it's interesting how similar what happened with Palm OS 6 was to Copland. They had a working, but outdated OS that had been hacked onto a new platform as a stopgap, then they couldn't get the rewrite meant to take full advantage of the new hardware out the door. Palm OS 6 was at least finished, but it never got used on a shipping device. There's an interesting Reddit post going over how the OS design was fundamentally flawed when combined with the ARM processors that were available at the time: https://www.reddit.com/r/Palm/comments/1422bqy/palm_os6/jn5o...
Palm at one point was talking to Symbian about licensing the Symbian kernel for the Arm PalmOS.
I wish that had happened... it might have saved both companies.
Pre-standard C++ is an even worse programming language than C++ 98, but also the big difference wouldn't have been the technology, it was the people. If Apple buy Be Inc they're getting JLG back whereas if they buy NeXT they get Jobs back.
Jobs is what makes or breaks Apple in that critical period. I didn't like him but that's relevant to the success of the company. JLG did not have whatever it was Jobs gave the company.
And Jobs brought an entire team of people with him. Many of the top people at Apple got replaced by people from NeXT. Avie Tevanian, Craig Federighi, Bertrand Serlet and many lesser known names came from NeXT. The joke at the time was that NeXT bought Apple for -$400M.
Yes, the reverse acquisition. Minor correction though, Craig didn’t show up until much later. He missed out on some very tough years and came on when Apple was fully revitalized and printing money. I might even suggest what I consider the decline of Apple software occurred when Avie and Bertrand left and Craig took over.
I recall the C++ "fragile base class" problem already starting to rear its ugly head by the end. Existing base classes couldn't be reasonably extended without breaking compatibility with existing applications, and the BeOS API was routinely designed in a way that promoted subclassing. e.g. to implement a window, you'd subclass BWindow and fill it with your own subclasses of BView. It's difficult to see how they would have dug themselves out of this hole in the long term. Perhaps eventually they would have needed to ship multiple versions of their system libraries corresponding to each ABI breakage.
There were other issues too, no? They went all in on multi-threading of the GUI which is super hard to do well, so apps were often crash prone.
I'm not familiar with Be API, but I did a lot of GUI dev in Java Swing back in the day. It's not that hard in principle, you launch whatever background op in whatever threads you like, and any GUI updates have to be done by sending messages back to the GUI event thread (or something like Swing.invokeLater(closure)).
For release 4, we added private impls with many many virtual declaration placeholders. I still remember the comment in every file: Mmmmmmm, stuffing!
One minor correction: the Haiku developers worked some magic with GCC binary compatibility and modern Haiku builds are done with a modern GCC yet still preserve the ability to run and interoperate with software built using the old release which is important for preserving the use of commercial software built for BeOS without released source code.
This is not quite correct as I understand it.
32-bit Haiku can run old Be apps, but must be built with ancient GCC.
64-bit Haiku is built with modern GCC but it is not binary compatible with old BeOS.
Correct, yes. You can run BeOS apps on 32-bit gcc2 builds.
This is a surprising amount of effort to not break compatibility ;-)
Gee, maybe Linux devs could learn something from them...
It was reported that Apple offered $75M for Be and almost $500M for NeXT and in retrospect those seem like entirely fair valuations. One was a mature OS and the other was a demo of an OS.
JLG countered with a $100 million and I thought Apple offered Steve $400 million at first. There was a moment when Apple was just talking to us (Be) and Steve heard about it. Bummed.
> They also implemented the OS API directly in C++, which tied them to a specific C++ compiler
We paid Cygnus(?) millions for that. The multiple virtual inheritance needed for MediaKit was a real joy to get working.
I'll note that Mac OS X used a C++ ABI in the _kernel_....