I've been asking all of this time: where to draw the line between striving for simplicity, and just shipping software? How much complexity is acceptable because it's absolutely necessary, and how much of it is acceptable because we're busy doing more interesting things?
I keep pulling counter-arguments from both sides, because I don't think this line is clear. The closest thing we have to an objective measure seems to be the patience of the humans who have to deal with said software.
> The developer should provide the code open source, and let package maintainers build it and ship it in their distribution.
We're going a bit off topic here, but this has proven to be a poor model for many applications - see Linus' lament on trying to ship Subsurface builds for Linux, and his endorsement for AppImage.
Also: every single proprietary app in existence, which is a many-trillion-dollars industry.
> On the contrary, when the language officially refuses shared libraries, I think it oversteps.
Well that's an example of the practical trade-off that Go has made: they'd probably prefer to live in an ideal world, where you ship a static binary 100% of the time and completely refuse non-Go code, but instead they built cgo, which made C interop easy and practical.