Avie Tevanian is one of the co-authors of the Mach Kernel and a former senior VP of software at Apple. His work has been used as a foundation to build various technologies used today, for instance, macOS’ current kernel XNU is based on Mach. This kernel is also found on iOS devices, Apple TVs and so forth.
Some years ago he did a very interesting interview at the Computer History Museum (Mountain View, California) where he explains his experiences. The interview is quite long and contains lots of interesting facts, to keep it short I’ve focused on the projects he worked at academia, NeXT and Apple.
Student at the University of Rochester (1979-1984)
- Multiple Xerox Alto computers were sent to Rochester’s computing research labs thanks to Xerox’s sponsorship.
- Among lots of things, the Alto was famous for the incorporation of Smalltalk, however it was also capable of being programmed using microcode (lowest layer of instructions, below assembly), as a consequence, the machine could physically break due to programming errors.
Building Mach at Carnegie Mellon University (1984-1987)
- The Mach kernel started as a research project with the goal to build an OS designed for parallel computing. It’s important to point out that at that time parallelised computing was still a unsolved problem.
- Avie Tevanian joined the project under the leadership of Richard Rashid as its first member.
- To fund this project, the computer department at Carnegie Mellon successfully requested a grant from DARPA. At the same time, Digital Equipment Corporation (DEC) was planning in produce a parallel computing using four interconnected VAX 11/780 known as the 784, however they lacked a proper OS for it, so they contributed to the department by providing new MicroVAX machines.
- The project evolved to the point where they decided to base Mach on BSD UNIX due to its popularity in academia and its known usability.
- The Mach kernel was not the only kernel being developed at Carnegie Mellon: The Accent kernel had been in development for some time and it targeted workstation machines (then referred as 3M computers). Accent defined the paradigm of message passing to communicate with multiple processes efficiently. Mach used these paradigms and adapted them for multi-processors systems.
- Mach was also conceived as a micro-kernel instead of a fully-fledged (monolithic) Kernel, this is because the project focused on fundamental issues (parallelisation) and planned to distance itself from the rest of services conventional kernels incorporated (Drivers, Networking, etc). In practice however, for performance reasons these services had to be embedded alongside the low-level functions. Only Mach 3.0 fulfilled this requirement as a pure micro-kernel, although by then the original members, including Avie, already left the project.
Evolving Mach into a commercial product (1986-1988)
- When the project matured into a functional product, it rapidly gained popularity thanks to its compatibility with BSD UNIX.
- Moreover, when the resulting research was presented at USENIX conferences, it came bundled with a copy of the kernel so everyone could get their hands on. Some NeXT employees noticed the project.
- Mach additionally evolved to become portable: Now it was meant to be compatible with more than a single architecture. This also made it a very attractive product for commercial purposes.
- NeXT ended up expressing their desire to include Mach into the first NeXT machine (initially targeted for education) and they offered Avie a job, prompting him to finish his PhD. He was also offered a job at Microsoft (possibly to develop NT), although he was persuaded by the growing possibility of a startup like NeXT.
- While the Mach project didn’t end up being commercially implemented beyond NeXT/Apple and OSF, other mini-computers manufacturers worked with Carnegie Mellon’s computer department to implement their own OS.
Joining NeXT (1988)
- Avie joined NeXT to work as an engineer in the NEXTSTEP OS division.
- Objective-C was chosen as a primary programming language for NEXTSTEP due to the requirement of a fully-featured object-oriented language. Other languages like C++ and SmallTalk were also taken into consideration.
- Implementing Objective-C was done by extending the GCC compiler with the collaboration of Richard Stallman.
- Objective-C++, a combination of Objective-C and C++, was built to please certain customers who needed to use C++.
- Avie commented that transitioning from academia now meant that deadlines were hard and products would be used by people.
Change of direction (1989-1996)
- NeXT’s target market slowly shifted from education to businesses and, as a consequence, Sun became their main competitor.
- NEXTSTEP was initially designed for the 68k architecture (The original NeXT Computer had a 68030), later years saw the platform being ported to more architectures like x86, PA-RISC, POWER, SPARC and 88K, the latter one never shipped. The existing portability of Mach made this task easier.
- Eventually NeXT abandoned the hardware market.
- While original founders started to leave the company, Avie Tevanian climbed all the way up to become VP in software.
- NEXTSTEP also extended its APIs to work with other existing platforms such as Windows and SunOS, AppKit’s source code had to be licensed to Sun so they could port it to their platform.
- A new success came from WebObjects, a product that enabled the early days of web-server applications.
- WebObjects originated from the idea of a NeXT employee that showcased a server that receives data and returns updated HTML.
- Another important framework being developed was Enterprise Objects Framework or ‘EOF’, it was initially conceived as DatabaseKit to simplify database access.
Acquired by Apple (1996-1997)
- NeXT had been keeping an eye at the press when Apple was considering acquiring Be due to their need for a next-gen OS. While Apple wasn’t their main competitor, NeXT saw itself as a candidate due to their offering of NEXTSTEP/OPENSTEP.
- NeXT’s CEO, Steve Jobs, was slowly losing interest in NeXT since its market shrank down to mere enterprise software and the fact that his other company, Pixar, was enjoying a lot of success.
- Apple finally acquired NeXT in 1996 and right after that, they pre-announced a major loss. This took the NeXT team by surprise.
- Later it was discovered that the acquisition of NeXT was done after winning a secret bake-off between NeXT and Be. When NeXT presented their case to Apple, multiple demos were shown using a range of productivity apps (including Apple’s Quicktime), where as Be already assumed that the deal was done so they didn’t spend the same effort. After finishing the demos, Avie and Steve ran into one of the judges who told them “You guys won”.
- As part of the acquisition, NeXT VPs joined Apple’s executive board. Avie joined as VP of Software Engineering.
Fixing Apple (1997 - 1999)
- Once Avie started analysing the current management of his division, he noticed that the staff, while some of them very talented, weren’t working as a team: One part was spending effort on side-projects while the rest was competing against each other. Changes were made to restore focus on products with high priority, this also meant firing lots of people who didn’t agree with the new strategy.
- Advanced Technology Group (Apple’s R&D division) was shut down in order to focus on the most important products. He commented that, after all, Apple was losing money and couldn’t afford R&D.
- Lots of new technologies coming from NeXT were being chosen as a replacement for the current ones at Apple, this obviously came with criticism by lots of Apple staff. For instance, the network protocol AppleTalk was to be replaced with TCP/IP due to the simple reason that it was a worldwide standard by then, this prompted Apple staff to threaten Steve to sink the company if they end up implementing it. While this resulted in major layoffs, remaining engineers expressed their concern for the increased complexity of TCP/IP. As response, Avie ordered TCP/IP on Mac to be as simple as AppleTalk was. This is why Mac OS X (and future revisions) came bundled with zeroconf services that simplified the process of setting up a network.
- Key people at Apple (Gil Amelio and Ellen Hanckock) were eventually fired with more NeXT executives taking over their positions.
New generation of products (1999 - 2002)
- While designing the next generation OS (Rhapsody, later renamed to Mac OS X) part of the plan was to inherit NEXTSTEP (which is based on UNIX), however it generated a conflict between the amount of functionality of UNIX and the simplicity of Mac OS. An example of this was the login system: Mac OS lacked any multi-user functionality and Avie knew that it was fundamental to include, however Steve rejected with the reason that ‘if it’s your computer why logging in?’. Ultimately there was a compromise: Both agreed to include login with the condition of ‘keeping it simple’. This resulted in the auto-login feature, something macOS still incorporates.
- A new API named Yellow Box based on NEXTSTEP was presented to replace the ‘classic’ Mac OS API (referred as Blue Box). Inside Rhapsody, Yellow Box applications would run natively while Blue Box ones would run inside an emulator. This seemed straightforward, yet porting current applications to Yellow Box resulted in a lot of work (not only the API was completely different but it would also require to learn Objective-C), this prompted companies like Adobe and Microsoft to reject this design. Apple then presented a new solution: A new ‘hybrid’ API called Carbon which would only emulate the lower layer of Mac OS (called Toolbox) and allowed apps to some native resources, like UI elements. Porting apps to Carbon required a lot of less effort than re-writing them for Yellow Box.
- The concept of Carbon actually started when Quicktime was ported to Windows, this app was still using Toolbox routines so a layer of abstraction had to be implemented on Windows.
- Yellow Box was also meant to run on Windows and OPENSTEP, however this was discarded as it wasn’t part of the company’s strategy. This API was eventually renamed to Cocoa.
- Cocoa kept being advertised as the main API, Carbon was eventually deprecated and then made unavailable for 64-bit applications.
- WebObjects also became an Apple product and was used to build their online store. Nonetheless, it never attracted a high amount of attention and it was eventually discarded.
More inventions (2002 - 2005)
- While Apple announced their switch from PowerPC to Intel in 2005, Avie’s division was already internally testing their software on x86, they had a feeling it was meant to happen someday.
- Before the iPhone was conceived as a project, in the early 2000s multi-touch tablet prototypes started to internally circulate with an UI based on the now-old Dashboard widgets. The prototype was described as ‘interesting but not useful yet’, they made emphasis on the lack connectivity options of that time. It was eventually shelved.
- During 2004-2005, the project was revived as an iPod-like project. A decision was made to avoid a physical keyboard, with the condition of ‘making it work well’ (recall the old discussion with the login system).
Later years (2003 - 2006)
- Avie was promoted to Chief technical officer, a role with less managerial task and more consultancy, after almost three years he resigned from Apple in March 2006. Scott Forstall took over the software division.
- Curiously enough, Avie just left Apple before the main inflection point where the company achieved massive success. It was also accompanied by a short-term stock controversy, nonetheless.
- Obviously the content comes from the interview published by the CHM.
- Computer photos were taken by me when I visited the museum on June-2019 (really exciting place!), I went to San Jose to attend the WWDC but there was so much to see around.