Link to original article - link
This is a really good rundown of the problems faced by package managers.
I am personally very interested in the idea of allowing packages to mark their dependencies as either “shared” or “internal”. We could then disallow shared dependencies from duplicating, but allow internal dependencies to duplicate freely.
This is what Nix and Guix do. Haven’t looked at the Nix terminology, but in Guix there are inputs and propagated-inputs, where inputs are things that the package can make use of simply by hard-coding references to them (hashbangs, subprocess calls, rpaths etc), and propagated-inputs are things that for some reason need to be in PATH or similar environment variables, and/or symlinked into any created profile/environment.