Software design matters: Apple capitalises on NextStep in a big way

It’s well known that Apple have had an amazing resurgence over the last ten years. In 1997 before the return of Steve Jobs, the company was nearly dead. The Macintosh hardware strategy had caused them real problems, and MacOS desperately needed replacing. Apple knew this and tried to develop a replacement – the Copland project – but this took years and ended in failure, bogged down by the requirement of full backwards compatibility with the legacy MacOS.

When Steve Jobs arrived back at Apple, he brought with him a secret weapon – NextStep. Famously, this is the OS that Tim Berners Lee used to develop the World Wide Web. It’s a Unix-like OS but with a microkernel rather than monolithic kernel of Linux and many other Unix variants. The upper layers of the OS are written using object oriented principles and design patterns. Applications are developed in Objective-C, with built-in support for message passing. Available to all applications are cleanly separated libraries to help out with common tasks. These libraries are known as kits. If this sounds familiar it’s because it is exactly the architecture of Mac OS X today, which is essentially a reskinned version of NextStep. An example of a well known kit is WebKit which Safari is built on top of.

In recent years Apple has been massively successful at creating or reinventing certain device classes such as the tablet or smartphone. Their success is largely because they tailor the user interface very well to suit the hardware and usage profile of the device, made possible by an investment in software architecture. Use of OO principles and design patterns such as Model-View-Controller means applications can be quickly redeveloped for new devices while sharing the same underlying code. This removes the maintenance issues of duplicate code.

Compare this to Microsoft. Their OS platform was heavily optimised to run on the limited PC hardware of the 1990’s. Although this was an achievement, it came at the cost of clean design. For example, optimising load times was often the primary reason for grouping code into the same DLL, rather than because of the functions they perform. They had a dependency nightmare.

When Microsoft introduced tablet computers a full eight years before Apple’s iPad launched, they used an OS that was almost unchanged from desktop Windows. They were probably well aware that a small Start button program launcher and window controls are not ideal for small touchscreen devices, but the architecture of Windows made it very difficult to make changes in a maintanabe way.

This is an often-overlooked and very important reason why Apple has jumped so far ahead of Microsoft in the market for new devices.

Note: Microsoft have recently been working very hard on untangling the Windows codebase, and the changes are already in Vista and Windows 7. These changes are already delivering significant architectural improvements to the Windows Server product line.