But is there a way to statically-compile dependencies? Is that even a thing?
(I'm not a go user so forgive me if I need a good RTFM session.)
It seems like a lot of these problems come from two dependencies wanting different versions of a third dependency.
Instead of just depending on a dependency as a semver string, I could (theoretically I think) depend on a statically-compiled version of the dependency so it's free to call whatever libs it wants - effectively eliminate the concept of transitive dependencies.
For projects with large dependency graphs, you may end up with relatively large binaries since you end up with lots of duplicate object-code for common libraries, but I wonder how much of a problem this actually is (and if simple de-duping may solve a huge chunk of it).
We spend lots of engineering effort to resolve dependencies as source just to end up compiling them into our executable anyway.
I'm sure this isn't a new concept, but it struck me as odd that go is fighting with it so much recently considering statically-compiled, "library-free" executables is definitely in go's wheelhouse - why not extend it to libraries?