Ask HN: Why does every package+module system become a Rube Goldberg machine?
&gt; In contrast, we apparently have no &quot;package management theory&quot;. We have not figured out the primitives required to express dependencies<p>We have a good hunch. The basic theory behind Nix definitely goes in the right direction, and if we look away from all the surface-level nonsense going on in Nix, it&#x27;s conceptually capable (e.g. [0]) of being a first-class language dependency manager.<p>For this to work at scale we&#x27;d need to overcome a couple of large problems though (in ascending order of complexity):<p>1. A better technical implementation of the model (working on it [1]).<p>2. A mindset shift to make people understand that &quot;binary distribution&quot; is not a goal, but a side-effect of a reasonable software addressing and caching model. Without this conceptual connection, everything is 10x harder (which is why e.g. Debian packaging is completely incomprehensible - their fundamental model is wrong).<p>3. A mindset shift to make people understand that their pet programming language is not actually a special snowflake. No matter what the size of your compilation units is, whether you call modules &quot;modules&quot;, &quot;classes&quot; or &quot;gorboodles&quot;, whether you allow odd features like mutually-recursive dependencies and build-time arbitrary code execution etc.: Your language fits into the same model as every other language. You don&#x27;t have to NIH a package manager.<p>This last one is basically impossible at the current stage. Maybe somewhere down the line, if we manage to establish such a model successfully in a handful of languages and people see for themselves, but for now we have to just hold out.<p>[0]: <a href="https:&#x2F;&#x2F;code.tvl.fyi&#x2F;about&#x2F;nix&#x2F;buildGo" rel="nofollow">https:&#x2F;&#x2F;code.tvl.fyi&#x2F;about&#x2F;nix&#x2F;buildGo</a><p>[1]: <a href="https:&#x2F;&#x2F;cs.tvl.fyi&#x2F;depot&#x2F;-&#x2F;tree&#x2F;tvix&#x2F;" rel="nofollow">https:&#x2F;&#x2F;cs.tvl.fyi&#x2F;depot&#x2F;-&#x2F;tree&#x2F;tvix&#x2F;</a>