You’ve probably seen this classic tweet posted by Solomon Hykes …
If WASM+WASI existed in 2008, we wouldn’t have needed to created 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!
This quote gets included in almost ever talk that introduces the potential so many of us are seeing in WebAssembly as a universal runtime.
So, will Wasm replace Docker? Based on this recent announcement, that seems unlikely. The beauty of WebAssembly is in part its simplicity, it is little more than a lightweight virtual machine. Docker iis much more than that. With this in mind, the recent announcement that Docker now supports WebAssembly shouldn’t come as a great surprise.
So what does the Docker+Wasm announcement mean in practice? To answer this question, I’d recommend reading this brief hands-on blog post. And if you’re completely new to Docker and don’t know what an OCI is, I’d read this blog post first.
In simple terms, you can now take a WebAssembly module, package it up as a docker image, allowing you to run it anywhere that hosts docker images. This immediately takes WebAssembly form being a format supported by a small number of serverless / cloud startups, to being a widely supported format.
To quote this blog post:
… the direction is clear and it’s game-changing to be able to use familiar Docker tools and skills to work with WebAssembly apps.
A few weeks back Kubecon was held in Detroit, with a dedicated WebAssembly track. This brief round-up highlighted some of the key themes:
- Docker + Wasm (of course)
- Continued progress on the Component Model
- Improved programming language support
- Wasm as a plugin system
- And finally, wasm as a cloud platform
There are loads of links to great talks too.
With the big news about Docker, this interview is worth listening too. They talk about this news and what it means for the future. To quote Kelsey:
“With this Wasm layer, you can actually have people drop functionality in various languages or in some Wasm compatible thing, and in that situation you can decide does it run in the browser, does it run in your CDN or do you push it all the way back to a serverless platform that supports a Wasm native runtime.”
It really feels like Wasm has taken another major step forwards this month. However, there are still some pretty big problems to solve. Probably the most pressing is, how should WebAssembly modules connect to the various services they need to perform useful functions? e.g. databases, queues, etc …
In this post the Deis Labs team talk about the work they are doing to provide the ‘lego blocks’ we all need to build useful applications with WebAssembly. In future, these will no doubt become standad components that you can just add to your Docker images.
It looks like the long-awaited Garbage Collection proposal has made significant progress recently.