The Walled Gardens
In backend and web development, Linux containers solved the "works on my machine" problem elegantly. You write a Dockerfile, and your app builds identically on a laptop, a CI server, or a cloud VM — all running Linux, all cheap, all ephemeral. This model is so successful that many engineers assume it applies everywhere.
Mobile and desktop development shatter this assumption. Apple requires that iOS and macOS apps be compiled on macOS hardware. Microsoft's ecosystem, while more flexible, still produces the cleanest Windows builds on actual Windows machines. You cannot substitute a Linux container for either of these. The operating system is not just a runtime environment — it is a required build tool.
This constraint has cascading effects. CI/CD pipelines that cost pennies per minute for backend services can cost dollars per minute for mobile. Build queues that spin up in seconds can take minutes. Secrets management that works with environment variables suddenly requires managing cryptographic certificates in system keychains. Understanding why these constraints exist is the first step to building pipelines that work reliably despite them.