As my work laptop has been upgraded to Mac OS Ⅹ 10.5, aka Leopard. I also have installed the new operating system on my private laptop. The upgrade process was a mixed bag, both machines I had were heavily customized, which lead to certain problems, but nothing deadly. It still confirmed the rumours I had heard that the OS was somehow rough and it could certainly have used more β-testing. One core issue, it seems, is that everything is now multi-threaded, and there still a few nasty deadlocks and race conditions present.
The interesting paradox of this release is that while it is simply not mature, most of the features that are present in it are about maturity. Mac OS Ⅹ finally integrates fully its Unix heritage: POSIX compliance, Keberized services, full LDAP integration, Dtrace and a reasonable IDE (Integrated Development Environnement) based on standard components. Even more than the previous versions of OS X, there’s a lot of stuff for geeks. In a sense Mac OS Ⅹ 10.5 is what Solaris failed to become: the Unix OS for a workstation that can also be used on my mother’s machine. It is just a shame it was released to soon, just to accomodate some arbitrary deadline.
Yet in some ways, OS Ⅹ is also leaving the classical Unix design behind, ACL (Access Control Lists) are becoming more and more prevalent and replace the classical permissions, and many old dæmons have been replaced by launchd which is used to launch many services from the ssh-agent (finally integrated in the OS), and the X11 graphical server. As with all the previous releases of Mac OS Ⅹ, you can see a two release cycle: in the first cycle some technology is introduced, or reintroduced, without being used much, for instance hard-links and file access notifications had been implemented in HFS already in 10.4, but were used to build Time-machine in 10.5. Core graphics was introduced in 10.4, but is now used everywhere. So 10.5 is very interesting because it shows the direction Mac OS Ⅹ is taking: the OS now has the ability to sandbox processes, a fast virtual machine (LLVM) and a garbage collected objected oriented language (Objective-C 2.0), does this sound familiar?