Apple's announcement of the delivery of OS X Leopard (release 10.5 of Mac and Xserve operating systems) marks the public debut of an engineering achievement that dwarfs iPhone, iPod, Windows and Linux. No other PC server vendor, with the notable exception of Sun Microsystems, invests so much time and manpower in its system software. Leopard is magnificent code architected from the user in, rather than from core technology out.
Windows and Linux are designed from the core out, which is to say that they are all about layered kernels, system calls and APIs, with each layer’s purpose being to abstract the layers below it. The layers grow thicker; when a layer gets unmanageably thick, a pretty new abstraction layer is created so that people don’t have to deal with the ugly one.
Programmers end up having endless entry points with identical purpose and having heated debates about which ones are best. But each way of doing the same thing involves varying dependencies, deprecations and peculiarities. Everyone plugs into OS X through the frameworks, and below that lies a stable, thin, simple, and well-documented system stack. It is not the frameworks’ job to abstract lower levels of software.
From a developer’s point of view, the frameworks are OS X. When developers write to Apple’s frameworks, they inherit cross-application integration and operational and interface consistency with no effort. For example, email, the Address Book and QuickTime are smart, autonomous objects available to all Mac apps regardless of language and requiring no optional software. You look in the docs to find the object you need, you shoot a message at it (you can always count on framework objects being present and behaving as documented), and receive a response that you can use directly without marshaling. The whole system is about message-passing among objects.
The system’s hardware configuration and management are exposed as objects. If you want to know the battery’s charge level or get a list of wireless networks within range, OS X has common frameworks to do it.
Sometimes hacks are necessary, and when they are, they take the tidy form of superclasses of existing objects or new objects inserted into a chain of message responders.
The whole thing is easy to grok, and the tools and docs are free. Leopard is beautiful, not merely in appearance but in design, all the way down to its certified Unix core. My own core is Unix certified, and now that Apple has reworked OS X to jump the many hurdles required to bear the Unix trademark, I feel like I’ve returned from a lengthy self-imposed exile.
The debut of Leopard may make you mindful of Vista, an OS that no one begged to get before it shipped and that very few rushed out to get after it shipped. Vista’s penetration is largely incidental, a result of being preinstalled on new PCs. Apple’s customers rush to upgrade, and not because some sticker on a box of software says “designed for Leopard”.
Leopard is a legitimately big deal. It’s underhyped compared to iPhone, and yet unlike iPhone, it’s a genuine triumph of customer-focused engineering.