Dependency management in Go: https://research.swtch.com/vgo-principles
There's a tradeoff between work for libraries (declare your minimum version/any incompatibilities) vs work for programs (investigate when dependencies aren't compatible). If programs are more common, should we empower them?
miniblog.
Related Posts
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
Maybe Not by Rich Hickey: https://youtu.be/YR5WdGrpoug
Makes an interesting point on Maybe/Either: they require updating the call site, even for compatible changes! E.g. from returning a Maybe Foo to returning a Foo. Argues for *union* types.
Excellent, interesting blog post on how Rust's cargo does version resolution, why it favours the latest compatible version, and the tradeoffs in this space.
https://aturon.github.io/2018/07/25/cargo-version-selection/