| > The closest comparison outside of the browser would be to the container ecosystem And as someone who has worked on both, I can tell you that the container ecosystem is way better and way more deterministic. `Dockerfile` from 10 years back would work today as well. Any non-trivial package.json written even a few years ago would have half the packages deprecated in non-backward compatible way! There is another similar ecosystem of mobile apps. That's also way superior in terms of the developer experience. > Other languages don't need to dynamically load code via http requests, they generally run under the assumption that all of the code is available before execution. And that's not what I am objecting to.
My concern is that the core JS specification is so barebones that it fragments right from the start. 1. There isn't a standard project format
2. There isn't a single framework that's backward compatible for 5+ years.
3. There isn't even an agreeement on the right build tools (npm vs yarn vs pnpm...)
4. There isn't an agreement on how to do multi-threaded async work You make different choices and soon every single JS project looks drastically different from every other project. Compare this to Java (older than JS!) or Go (newer than JS but highly opinionated). People writing code in Java or Go, don't expect there builds to fail ~1-5% of the times. Nor are the frameworks changed in a backward-compatible way every few years. |
I highly doubt that any Dockerfile from back then would work if it runs `apt-get` (as many do), as the mirrors for the old distribution versions aren't online anymore.
Dockerfiles can be made to be quite deterministic, but many use `FROM` with unpinned tags and install from URLs that can and do go away.