Unless the entire change is absolutely trivial to revert, protect the new code paths with a boolean flag, prefixed with "go117", that can be used to quickly toggle back to the old implementation. It can be a simple bool constant, for example, const go117UseEvenBetterLinker = true. Such flagsĀ must be findableĀ by a simple grep for the string "go117". That way we can find them without missing any, and they can be cleaned up when we get to the Go 1.18 cycle.
Consider how you would answer the following questions for your change:
How risky is the change you're planning to make?
How will you know if it is working as intended?
How much production testing does it need for you to be confident it is working as intended?
At what time should the keep/revert decision be made?
Create a tracking issue in the Go 1.17 milestone with a release-blocker label. This issue will be used to track progress on the feature and make the final decision for Go 1.17.