https://www.virtuouscode.com/2015/07/08/ruby-is-defined-by-terrible-tools/
Despite the title, this is a good article on the relationship between programming languages, tooling, the resulting ecosystems and our mental models.
miniblog.
Related Posts
One remarkable aspect of the JS packaging ecosystem is that people package individual functions. For example, lodash.sortby: https://www.npmjs.com/package/lodash.sortby
It shows how lightweight the packaging process is. I've not seen this happen in other ecosystems.
Languages with large ecosystems often develop interoperable languages. Scala, Clojure, F# and Typescript all benefit from compatible packages in the "primary" language.
I think Rust will eventually see these too. What will they look
The convergence of compilers, build systems and package managers https://blog.ezyang.com/2015/12/the-convergence-of-compilers-build-systems-and-package-managers/ (superb discussion on how we build lang ecosystems)