If WASM+WASI existed in 2008, we wouldn't have needed to create Docker. That's how important it is. WebAssembly on the server is the future of computing. A standardized system interface was the missing link. Let's hope WASI is up to the task!
When we left off last time, we were just about to dig into what "Operating System Support" might mean for a virtual instruction set architecture. Solomon Hykes claimed that if WASI —the WebAssembly System Interface— had existed in 2008, he and his companions at dotCloud1 wouldn't have had to invent Docker. Given the accomplishments of Docker over the last decade, that's pretty wild!
To understand what a "standardized system interface" might do for us, I wanted to first understand system interfaces— how we virtualize them, how they came to be, and how they help us work together.
This is a virtual view of the physical machine's resources: an "extended machine"3. The operating system is responsible for enforcing the illusion that each process operates with independent, full access to the system's resources. This illusion is constructed through the operating system's careful orchestration of the machine's processor features — the processor's memory mapping hardware, interrupts and traps, mode and protection rings, and use of privileged instructions.