Transitive dependencies produce way too much noise in go.mod files.
I have to scroll up and down just to navigate my configuration file.
Transitives represent a leaky abstraction. They belong in go.sum.
Transitives are not something that I normally expect to control directly most of the time. Only depth 1 nodes in the dependency tree belong in go.sum.
It’s probably risky to try to override transitives. But even when I would want to do that, it should be opt-in for any mention of transitives to appear in go.mod.
No other package manager has this problem. Not cargo, RubyGems, NPM, dotnet, cabal, dub, cpan, conan… Just go mod.
The issue means Go’s go.mod file lists many transitive dependencies, which makes it long and hard to read. You only want to see direct dependencies, while transitive ones should stay in go.sum, since they are usually not controlled manually.
You don’t need to scroll almost anything because file is autogenerated and auto updates via go mod … command. And the things you might need to check or manually update can be done in various subcommands as well. Indirect dependencies are injected for several valid reasons. And “too much noise” is too insignificant to change its behavior. Same goes to mixing and delegate responsibility to go.sum. Both files have two different meanings. IMHO, it’s easier to see indirects exactly where they belong in go.mod. Then go through endless hashes in sum file, looking for what was loaded indirectly.