The Watershed: From Mac OS to iOS to Android, and the Linux Thread Running Through All of It
A watershed is where the water decides which way to flow. The technology watershed was never the moment the best system won. It was the moment commodity caught up — when the platform that could be built cheaply and replicated everywhere crossed the threshold where it was good enough, and everything above the waterline followed for free.
The same threshold crossed four times. The same thread running through all of it.
1991: The 386 Makes Ugly Intel Nice for C
The Motorola 68000 was the PDP-11 reimagined for the microprocessor era. Unix was written in C for the PDP-11 — 1971, Ken Thompson and Dennis Ritchie, the language and the OS designed together on the same hardware. The 68000 took those lessons and built a chip that was clean, orthogonal, and forward-looking: 32-bit registers from the start, separate address and data registers, flat address space, no segments. C compiled to the 68000 beautifully because C was designed around the PDP-11 and the 68000 was the PDP-11’s spiritual successor. The Unix ports to 68000-based machines were clean precisely because the architecture was ready for them.
The 8086 was a kludge. Segments were a workaround that became a burden. Near pointers, far pointers, huge pointers. The DOS memory model was archaeology through successive workarounds for a fundamental architectural mistake. The 68000 was correct. The x86 was everywhere.
The 386: bypass the dead end, accept the waste.
Intel did not fix segments. They added a new mode — protected mode, flat 32-bit — that simply ignored them. The segment registers still exist in the 386. They still do in x86-64 today. They are just not used. The dead end was not removed. It was bypassed. The waste was real — two levels of indirection to achieve what the 68000 did natively. The waste was acceptable. The flat address space was the goal. The threshold crossed.
Crucially: Intel did not deprecate the old mode. DOS programs kept running. The installed base was preserved. The new mode was better — flat, 32-bit, Unix-ready — and developers moved to it when it was ready, not because they were forced. The 286 had tried protected mode first and got it wrong — the mode transition was a one-way trap door, you could not return to real mode without a hardware reset. Developers ignored it. Intel did not force adoption. They went back, fixed it in the 386 so you could switch modes freely, and tried again. Use-Pull on silicon.
IBM ignored Moore’s Law and put its money on OS/2 for the 286.
IBM saw the 286 protected mode and built OS/2 around it. Genuine engineering effort — preemptive multitasking, proper memory protection, everything DOS was not. Technically correct for the hardware they targeted. But the 286 protected mode was the one-way trap door. OS/2 on the 286 could not run DOS programs without rebooting. The entire installed base of DOS software — the reason anyone bought a PC — was unreachable.
IBM ignored two signals simultaneously. The Moore’s Law signal: the 386 was already shipping, the flat 32-bit mode already there. OS/2 for the 286 was optimising for hardware that was already being obsoleted by the chip that fixed the problem OS/2 was working around. The 90% signal: the corporate buyers IBM heard were the <1% who commissioned machines. The 90% who needed their DOS software to keep running were not in the room.
Microsoft kept DOS running under Windows. Not deprecated. Not removed. The installed base preserved. The new mode better. The market moving when ready. OS/2 eventually moved to the 386 — OS/2 2.0 in 1992 was genuinely better than Windows 3.1 in almost every measurable way. By then Windows had the installed base, the developer ecosystem, the feedback loop. The 90% had already chosen.
The 486: sheer performance ends the argument.
Not a new architecture. Not a new memory model. Just faster — FPU on-chip, doubled cache, improved pipeline, 50MHz by 1992. When the 486 outran the 68040 on real workloads, the architectural elegance debate was over. Not because the 486 was more correct. Because performance is the one metric users feel directly.
The 68000 family kept improving — 68020, 68030, 68040, 68060 — each cleaner and faster. But Motorola was selling to a shrinking market of design wins while Intel was selling to the entire PC industry. Volume is the 90% signal at hardware scale. The chip that ships in millions gets optimised by millions. The chip that ships in thousands gets optimised by thousands.
Two moves, not one. The 386 made Unix workable on commodity hardware. The 486 made the argument irrelevant. Linux arrived exactly at the threshold.
Linus Torvalds wrote Linux in 1991 on a 386 specifically because the 386 protected mode was finally usable. The GPL kept the waterline open. The 90% signal arrived immediately — patches came back faster than he could review them. Pothole fixes compounding. The kernel that would run the world, started on hardware that was worse than what the Amiga was running.
2001: Apple Admits the Iceberg Has Moved
The old Mac OS was beautiful. Cooperative multitasking, no memory protection, a human interface genuinely ahead of its time. Completely fused to its own substrate — the Mac toolbox, the resource fork, the cooperative scheduler woven together into one system that worked brilliantly and could not be separated.
When the hardware kept improving, the old Mac OS could not follow. The iceberg moved. The sealed box could not steer.
Jobs came back with NeXT, which was already a Unix derivative, already sitting on a clean waterline. OS X was worse than Mac OS 9 in several ways that mattered to existing users — Classic apps broke, early versions were slower, the Unix underpinnings were visible in unfamiliar ways. Worse. Deliberately. Intentionally trading perfection-for-yesterday for portability-through-time.
What it gained: the underwater layer — Mach kernel, BSD userspace, Darwin — could follow Moore’s Law freely. When 64-bit arrived, Unix knew what to do. When multicore arrived, preemptive multitasking was already there. When Apple Silicon replaced Intel, the transition took two years and was essentially invisible to users. Rosetta 2 ran Intel apps natively. The waterline held. The submarine iceberg swapped completely. The semantic layer above it never noticed.
The BeOS engineers were not wrong. They built something genuinely better — preemptive multitasking, a 64-bit filesystem, real-time audio years before anyone else. Beautiful, complete, correct. And fused to its own brilliance with no commodity floor. When the substrate moved, BeOS could not follow. It runs in emulators now, maintained by people who will not let it die. Correct about everything except the part that mattered.
The Atari ST and the Amiga before them. The same lesson, ignored twice. The 68000 was right. The PC out-evolved it anyway because the feedback loop was open and Moore’s Law compounded on the commodity substrate.
2007: The Doom Moment
John Carmack’s rule was never officially stated as a rule — it was observed. Every platform that could run Doom became a serious platform. When Doom runs, the Gutenberg layer has crossed the threshold: fast enough for real computation, real interaction, real software.
The 2007 iPhone was the Doom moment for mobile Unix.
Not because anyone ran Doom on it first — though they did — but because the ARM chip crossed the threshold where Unix could run properly. The JIT compiler could compile. The database could query. The browser could render. OS X on ARM. The waterline that Apple had cleaned in 2001 reached your pocket in 2007.
Jobs’s instinct was to keep it closed. No third-party apps at launch. The 90% signal arrived immediately and unmistakably: developers wanted to build native apps. The App Store arrived a year later — Jobs relented, but kept the 30% toll booth and the review gate. The seam between developer and user owned entirely by Apple.
Android was the PC clone moment.
Google took Linux — the commodity Unix waterline that had already won on servers, on desktops, on embedded systems — and put a decent user interface on top of it. Not a beautiful interface. A good-enough interface on a substrate that any manufacturer could use, any developer could target, and Moore’s Law could improve freely underneath.
The Android/iPhone split is the Amiga/PC split exactly:
- iPhone: beautiful, correct, complete, controlled, fused to Apple’s decisions
- Android: rougher, more fragmented, open, commodity, everywhere
Android won market share because the 90% could afford an Android phone. The feedback loop was open because any manufacturer could ship Android. Samsung, HTC, Huawei, Xiaomi — the Gutenberg layer improving on every manufacturer’s schedule, compounding faster than Apple’s controlled cadence.
Jobs tried to stop it with patents. Rounded rectangles. Slide to unlock. The legal system as the last resort of the Def-Push tribe when the market has already spoken. It did not work. Android shipped on two billion devices.
Apple kept the premium market. The iPhone is still the better experience for the user who can afford it and wants the controlled garden. But Android put a decent UI on a better-evolving Linux track, and the 90% who could not or would not pay the Apple premium got smartphones.
2024: Your Phone Outruns the Old Workstation
In December 2024, the DuckDB team published a benchmark: can a modern smartphone run TPC-H SF100 — a standard analytical database workload on 100GB of data — and complete it faster than state-of-the-art research systems on big iron machines twenty years ago?
The answer was yes.
An iPhone 16 Pro completed the benchmark in 615 seconds at room temperature. Put in a box of dry ice to prevent thermal throttling — the battery died from the cold — it completed in 478 seconds. A Samsung Galaxy S24 Ultra, with its vapor chamber cooling and 12GB RAM, running DuckDB compiled from source in Termux on Android, completed it in under 400 seconds. Faster than the 2004 research cluster that introduced vectorised query processing.
The SQL is unchanged. The query that ran on racks in a data centre in 2004 runs in your pocket in 2024. The semantic layer — the query, the schema, the analytical intent — travelled untouched across twenty years of Gutenberg improvement. The waterline held.
This is Moore’s Law as an architectural principle demonstrated on a smartphone with optional dry ice. The phone is the new workstation. The workstation is the new cluster. The cluster is the new mainframe. Each transition: the semantic layer preserved, the Gutenberg layer replaced with something faster, cheaper, and more widely distributed.
The Linux thread runs through all of it. The kernel Linus posted to comp.os.minix in 1991, on a 386 that was worse than the Amiga, is the kernel running DuckDB on Android in 2024. Worse than the 68000. Ages better than everything.
The Thread Nobody Planned
Linux made internet-based development possible. Not by design — by structure.
The GPL forced the waterline open: distribute the binary, distribute the source. The source was always available, always forkable, always improvable by anyone with a connection. Linus posted to comp.os.minix because he wanted feedback. The internet sent him patches. The patches were better than what he could have written alone. Use-Pull at civilisational scale, by accident.
Linux development outgrew every version control system available. In 2005 BitKeeper withdrew its free licence. Linus wrote git in two weeks — distributed, no single server, every clone a full copy, merges cheap and fast. Git is the external resolver for code identity. The SHA is the Gutenberg identifier — content-addressed, immutable. The branch name is the semantic identifier. Clone anywhere, push anywhere, the content is the same because the SHA is the same. The internet is the transport. Git is the waterline.
GitHub made the waterline social. The 90% who could not navigate mailing list culture could now contribute. The feedback loop opened wider.
The training data for every large language model is the accumulated output of that feedback loop. Stack Overflow answers. GitHub commits. Wikipedia edits. ArXiv papers. Every sticky note the internet ever wrote about every system that ever confused anyone — accessible because the waterline was kept clean, the GPL kept the source open, and git kept the history intact.
Nobody designed this. Each step opened the waterline a little further and the next thing arrived that nobody planned. Clay Shirky called it “Here Comes Everybody” — when the cost of group coordination falls below a certain threshold, entirely new kinds of things become possible. The series traces the Gutenberg layer that made the cost fall: the 386 that fixed the segments, Linux that kept the source open, git that made merging cheap, the internet as the transport. Shirky named the effect. The waterline explains the mechanism.
The unbroken thread:
- PDP-11 shaped C and Unix (1971)
- 68000 reimagined the PDP-11 for microprocessors (1979)
- 386 bypassed the segment dead end (1985)
- 486 made it undeniable (1989)
- Linux on 386 (1991) — internet-based development begins
- Git (2005) — distributed external resolver for code
- GitHub (2008) — the 90% signal opens the feedback loop wider
- Open source internet (1991–2020) — the training corpus accumulates
- Large language models (2020–) — learning from everything the open waterline made accessible
- DuckDB on Android in Termux (2024) — SQL unchanged, substrate unrecognisable
The semantic layer at the top — C, Unix, SQL, the web — is recognisable from 1971. The Gutenberg layer underneath has been replaced completely, three or four times. The waterline held. The improvements compounded. The next thing arrived that nobody planned.
The water flows toward commodity. It always has.
The watershed is not the moment the best system wins. It is the moment the commodity system crosses the threshold — good enough, cheap enough, open enough — and the feedback loop opens. The 90% signal starts arriving. The pothole fixes compound. Moore’s Law improves the substrate while the semantic layer above it stays stable.
The 386 crossed the threshold in 1991. The Mac OS crossed to Unix in 2001. The phone crossed to Unix in 2007. The phone crossed to workstation-class computation by 2024.
The next threshold is already moving. The question is always the same: which semantic layer is sitting on a clean waterline, ready to collect the gains when the Gutenberg layer crosses? And which one is fused to a substrate that will not follow?
Keep the waterline clean. Let the water flow.
This post is part of the Gutenberg/Semantic series. The DuckDB mobile benchmark: Running TPC-H SF100 on Mobile Phones. Related: Moore’s Law as an Architectural Principle on collecting the gains for free, Don’t Go Down With Your Iceberg on the cost of fusing to the substrate, and After 25 Years SQL Still Wins on why the semantic layer above the waterline travels unchanged.