Designing Good Package Managers: A Brief History
At JSConf EU 2018, day Ryan Dahl (the original creator of Node.js) went over his regrets when designing the language, and introduced Deno, a TypeScript runtime built around V8. One of his regrets was how Node’s package system was designed, and a few issues that arose from it. From the trite (Not appending
.js to imports) to deeper, harder to fix issues (Singular control and point of failure with the NPM registry).
I wanted to expand on his points and genericize it across platforms and dive into how every language or framework does it - from *nix’s
apt to Rust’s
crates to PHP’s
To start we have to actually define what a package manager actually is - what exactly does a modern package manager provide?
Remote package installation
Most common failures
Doing things “right”
These are some links and resources that helped me while I was researching this article.