The post is about an LWN article on attempts to move Linux beyond the traditional Unix model of creating a process by first cloning the parent with fork() and then replacing it with exec(). That model dates back to tiny early Unix machines, where it was a clever way to start a new program without needing both parent and child fully resident in memory at once. On modern systems, the common case is not "make a copy of me" but "start a different program with a small, explicit set of inherited state". The article argues Linux still lacks a first-class kernel primitive for that cleaner case.
People mostly bought the premise that fork is the wrong abstraction for today's workloads. The key point was not that fork is always catastrophically slow, but that even with
copy-on-write it still has real setup costs and it drags in awkward OS design constraints. Large address spaces mean copying page tables and VMAs. Multi-threaded processes make fork hazardous because only one thread survives into the child, leaving mutexes and allocator state in a bad place until exec(). Non-
overcommit systems get boxed into weird behavior because a process may need enough commit for a full copy of itself just to launch a tiny helper. The practical complaint was that fork inherits far too much by default, especially file descriptors and process state that most children do not want.
The thread converged on "spawn a blank process, then opt in to what it gets" as the useful direction, not on one exact API. Several people pointed out that this is already what
posix_spawn conceptually wants to be, and that some systems like macOS and NetBSD back it with native kernel support rather than emulating it as fork plus exec in userspace. Others argued Linux should keep fork for the cases where it is genuinely powerful, especially zygote and snapshot-like patterns, but add a true spawn path for the dominant case of launching a fresh executable. Windows came up mostly as proof that a non-fork model exists, though not as proof of better performance. A recurring conclusion was that process creation semantics now matter more because people want to use processes as cheap isolation boundaries in places that used to default to threads or in-process libraries, from build tools to agentic tools to fuzzers and sandboxes.