Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm not sure we're thinking about this the right way. What we want (and have) is:

A) a way to package any bit of functionality in a standardized way

B) run it in any environment.

Docker delivers both, although docker images are large (as they include their own OS) and (contrary to what the article claims) somewhat less efficient than running on bare metal.

Executable files provide A, but are specific to an operating system. They are however much smaller and make better use of the hosts resources as they don't require virtualization.

WASM delivers A for a subset of languages and B in so far as it runs in a browser and specific standalone runtimes.

These are certainly some attractive qualities, but it leaves me wondering: does it make sense to introduce yet another standard into the mix or wouldn't it be better to write a "Kubernetes for executables" rather than having the additional abstraction layer of WASM?



Docker can't "run in any environment": it relies on Linux kernel features, which do not exist on other operating systems.

There are workarounds for invoking Docker containers from some other operating systems (e.g. Docker Desktop for macOS and Windows), but those work by installing Linux into a virtual machine/hypervisor, and using that to run the containers. If that's what counts as cross-platform these days, then the term is meaningless (e.g. there are Gameboy emulators for some OSes, so Gameboy ROMs "run in any environment").

Considering that Docker containers themselves often bundle an entire Linux OS, that results in multiple layers of virtualised Linux operating systems. At which point, why not remove a layer and just ship a VM image?


WASM also can't "run in any environment" since it relies on imports, and different environments will have different things available to import. The only way around that is by only defining very minimal behaviour... like it does on the web. But then you can't do anything useful with it by itself.


I think we say 'run in any environment' when what we mean is 'recreate the environment on any machine'. And this is often more of a continuum than a black and white answer. I can get a lot of things done without low level access to the GPU, or printer, but I can't do everything.


Docker supports Windows-native containers.


So they've even managed to break their own weak definition of cross-platform/run-anywhere, by forking into two incompatible versions? The more I learn about Docker, the more I'm astounded by the sheer scale of anti-patterns being built into the bizzaro-world they're constructing.


Yes it is a joke, but something that is now unavoidable as a reality of DevOps workflows.


Wait until you hear about ARM.


> as they include their own OS

That is not required.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: