Title: A programming language has a &quot;core language&quot; plus a package&#x2F;module system.
In each successful language, the core language is neat-and-tidy,
but the package&#x2F;module system is a Rube Goldberg machine.
See JavaScript&#x2F;TypeScript, Python, or C&#x2F;C++.<p>Lots of brain cycles are spent on &quot;programming language theory&quot;.
We&#x27;ve roughly figured out the primitives required to express real-world computation.<p>In contrast, we apparently have no &quot;package management theory&quot;.
We have not figured out the primitives required to express dependencies.
As a result, we keep building new variants and features,
until we end up with &lt;script&gt;, require(), import, npm, yarn, pnpm, (py)?(v|virtual|pip)?env, (ana)?conda, easy_install, eggs and wheels ...<p>Is it just a &quot;law of software&quot; that this must happen to any successful language?
Or are there examples of where this it has not happened, and what can we learn from them?
Is there a &quot;theory of package management&quot;, or a &quot;lambda calculus of package management&quot; out there?
Upvote: