macOS Internals
macOS probably doesn&#x27;t get enough love from an OS design perspective. Over the years I&#x27;ve had reasons to work pretty closely with the guts of all of Linux, macOS and Windows and macOS is probably my favourite, design wise, although for some tasks you can&#x27;t beat the flexibility and feature set of Linux. A few highlights that are lesser known:<p>- XPC&#x2F;Mach is a pretty reasonable IPC system that avoids the huge complexity of DCOM, whilst being more widely adopted throughout the platform than DBUS.<p>- Bundles are frustratingly ad-hoc in terms of detection and layout but the basic concept <i>does</i> work, and is better than the (rough, not really) equivalents on Windows and Linux.<p>- Launch Services does a pretty good job these days of letting apps be purely declarative whilst still keeping track of all the integration points things (in the past it&#x27;s been a bit rough).<p>- APFS is a very modern FS and the migration of the Apple ecosystem to it was so well executed it was barely even noticed. I can&#x27;t think of any other platform that has managed to do a migration from one FS to another so smoothly.<p>- Ditto for CPU architecture migrations. Apple&#x27;s skill at these has become rather legendary now. I remember a time when the computer industry assumed such transitions were simply impossible, Apple did it twice!<p>- The code signing infrastructure is rather complex but well thought out and flexible, even though Apple don&#x27;t use all that flexibility in practice. They&#x27;ve chipped away at it over the years and by now it delivers concrete and real benefits to end users. In particular it enables apps to be kept somewhat separated even when they aren&#x27;t sandboxed e.g. on Ventura apps can&#x27;t tamper with each other unless you specifically give them that permission, and this works <i>without</i> any notion of admin&#x2F;root escalation or installation, and that&#x27;s true even if apps aren&#x27;t opted in to the app sandbox.<p>- The way Apple live the UNIX spirit by having lots of little CLI tools along with man pages for those tools etc is pretty nice.<p>- The sheer quantity of APIs and frameworks that solve modern high level problems is well ahead of any other desktop platform by miles (e.g. the ML frameworks, data syncing).<p>- The way Apple have managed to slowly migrate code out of the kernel is well executed IMO. Likewise for SIP and their whole security&#x2F;immutable OS posture, something the Linux world is still just experimenting with and Windows isn&#x27;t even trying.<p>- Their integration API for cloud storage is solidly designed, albeit it&#x27;s a pity they don&#x27;t also offer a lower level FUSE-like API for experimental use cases.<p>There are problems too of course. It&#x27;s <i>very</i> weak that the OS has no way to keep apps up to date except via the store, which then introduces tons of other problems. Sparkle does a great job of patching up this gap, but it should really be a core OS service in this day and age. And the lack of any high level GCd&#x2F;managed language for their platform continues to be a major weakness. You can have smooth UI and 60fps whilst still offering GC as Android has now proven, and of course there are large classes of apps where developer productivity matters more anyway. Microsoft always recognized that, even the Linux community understood this hence all the bindings into Python.