Skip to content

Commit ead10e6

Browse files
authored
Merge pull request #7828 from wojtek-t/feature_gates_criteria
Guidance for skipping Alpha for feature gated changes
2 parents 994cba0 + d060ec0 commit ead10e6

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

contributors/devel/sig-architecture/feature-gates.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,30 @@ Feature gates are intended to cover the development life cycle of a feature - th
99
Features generally progress through `Alpha` -> `Beta` -> `GA`. Sometimes we end up deciding that a feature is not going to be supported and we end up marking them as `Deprecated`.
1010

1111
The majority of features will go through all three stages, but occasionally there are features which may skip stages.
12+
While some exceptions may happen, approvers should use the following guidance:
13+
- features that involve [API changes] must progress through all `Alpha`, `Beta`, `GA` stages
14+
- features that are unproven at achieving their goals, have significant complexity,
15+
risk of defects/problematic edge cases, or performance/scalability implications
16+
should progress through all `Alpha`, `Beta`, `GA` stages
17+
- features which achieve their goals with minimal complexity and performance/scalability
18+
implications, but still carry non-trivial risk (e.g. due to changing user-facing behavior
19+
or problematic edge cases) might skip `Alpha` and start directly in `Beta`
20+
(provided the appropriate `Beta` quality is achieved) but should be off by-default until
21+
proven in representative production environment that utilizes the feature with the scale
22+
or variety of use to prove it's working
23+
- more generally, changes that carry a risk of making previously working functionality
24+
no longer work in certain edge cases should always start in off-by-default state
25+
- smaller changes with low enough risk that still may need to be disabled using the
26+
feature gate without introducing a new long term configuration option, might skip
27+
`Alpha` and start directly in `Beta` (provided the appropriate `Beta` quality is achieved)
28+
and can be enabled by-default from the very beginning
29+
- bug fixes that have a sufficient level of risk that being able to turn off the fix via a
30+
feature gate is justified are recommended to go directly to `Beta` and should be enabled
31+
by-default from the very beginning; an alternative for bug fixes that could be perceived
32+
as "removal" is to use Deprecated state, however still ensuring that the fix can be
33+
disabled
34+
35+
[API changes]: https://github.com/kubernetes/community/blob/master/sig-architecture/api-review-process.md#what-parts-of-a-pr-are-api-changes
1236

1337
When we add a feature flag, we basically add if/else conditions to ensure that a feature is ONLY activated when either the default is on or if the deployer has switched it on explicitly. When a feature gate is disabled, the system should behave as if the feature doesn't exist. The only exception to this is [API input validation](https://kubernetes.io/docs/reference/using-api/deprecation-policy/#deprecating-parts-of-the-api) on updates, which should preserve and validate data if and only if it was present before the update (which could occur in case of a version rollback).
1438

0 commit comments

Comments
 (0)