The policy for what does and doesn't get backported is currently documented at https://golang.org/wiki/MinorReleases.
Our default decision should always be to not backport, but fixes for security issues, serious problems with no workaround, and documentation fixes are backported to the most recent two release branches, if applicable to that branch.
Fixes for experimental ports are generally not backported.
A “serious” problem is one that prevents a program from working at all. "Use a more recent stable version" is a valid workaround, so very few fixes will be backported to both previous issues.
This is pretty vague, and it detaches from practice in quite a few ways. We discussed a more complete framework that reflects the current reality with @dmitshur.
I propose we document it at https://golang.org/doc/devel/release.html#policy (in keeping with #34038) with the following text.
/cc @golang/osp-team
Backporting policy
Most recent major release. The following changes are are eligible for backporting to the latest major release.
- Security fixes, in their own release, according to the security policy.
- Fixes for serious problems with no workaround. A “serious” problem is one that prevents a program from working at all. This includes, for example, miscompilation issues.
- Early fixes for regressions and issues in new functionality. As the release matures, the bar for these changes gets higher: while the first minor release in a series will accept most fixes for user-visible regressions, after five months they will be mostly rejected. As more of the ecosystem upgrades, fixing regressions with workarounds becomes less and less valuable, and the tradeoff with stability shifts.
- Documentation changes that fix incorrect public docs.
Fixes for experimental ports are generally not backported.
Previous major release. The only fixes eligible for backporting to the previous major release (for example, to Go 1.10, once Go 1.11 has been released) are those that address external changes that would make the release unusable. This includes security fixes and platform compatibility fixes (for example, if a new version of an OS breaks Go programs).
We consider upgrading to the latest major release a valid workaround, and the purpose of maintaining the previous major release is only not to force users to upgrade unexpectedly, so pre-existing serious issues and regressions are only fixed in the latest major release.
The policy for what does and doesn't get backported is currently documented at https://golang.org/wiki/MinorReleases.
This is pretty vague, and it detaches from practice in quite a few ways. We discussed a more complete framework that reflects the current reality with @dmitshur.
I propose we document it at https://golang.org/doc/devel/release.html#policy (in keeping with #34038) with the following text.
/cc @golang/osp-team
Backporting policy
Most recent major release. The following changes are are eligible for backporting to the latest major release.
Fixes for experimental ports are generally not backported.
Previous major release. The only fixes eligible for backporting to the previous major release (for example, to Go 1.10, once Go 1.11 has been released) are those that address external changes that would make the release unusable. This includes security fixes and platform compatibility fixes (for example, if a new version of an OS breaks Go programs).
We consider upgrading to the latest major release a valid workaround, and the purpose of maintaining the previous major release is only not to force users to upgrade unexpectedly, so pre-existing serious issues and regressions are only fixed in the latest major release.