@jadekler and I spent some time talking today about the future of gorelease. Here's what we're thinking.
There seem to be two diverging use cases: 1) checking whether the module in the current directory is ready to be released as a new version, and 2) find what changed between two existing versions, either of the same module, different major versions, or different modules (forks, renames). The code that serves these use cases in nearly the same, but we should think about splitting the CLI.
We eventually want to make gorelease part of the go command. Like go doc, it will run a separate binary (cmd/doc in that case). As part of this, I propose we name the command go mod vet to make it clear this is module-related, and it analyzes something like go vet. The name go release makes it sound like it's performing a release (uploading something), and the GoReleaser project has a similar name.
Comparing APIs of existing versions doesn't seem like it should be part of go mod vet, though it's an important use case. We should move this into a new command, say golang.org/x/tools/cmd/gomoddiff.
To move forward, let's do the following:
Confirm via proposal process in #26420 or a new issue that this is the right approach forward.