đź“ťInterface is second-class for package managers

When developers code against some library, it is interface they are relying on (both explicit and Implicit interface).

However, most package managers operate on package names, versions, and version constraints, not interface. The interface is second-class and is approximated by version numbers—Version numbers version package interface as a whole.

However, this does not cover all cases and has some shortcomings:

Some package managers allow overriding packages ignoring all constraints (e.g., pulling a package from a github fork, renaming packages, or overriding a version). This is a manual intervention required to fix the above shortcomings.

See also


Want to receive my đź–‹ posts as I publish them?