Skip to content

Commit 083c0aa

Browse files
SergeyKanzhelevwindsonseaTim Bannister
authored
Document that replacement functionality must be the same stability level (#42031)
* the replacement functionality must be the same stability level * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Michael <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Michael <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Michael <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> * Update content/en/docs/reference/using-api/deprecation-policy.md Co-authored-by: Tim Bannister <[email protected]> --------- Co-authored-by: Michael <[email protected]> Co-authored-by: Tim Bannister <[email protected]>
1 parent 09681f9 commit 083c0aa

File tree

1 file changed

+38
-6
lines changed

1 file changed

+38
-6
lines changed

content/en/docs/reference/using-api/deprecation-policy.md

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,15 @@ after their announced deprecation for no less than:**
349349
* **Beta: 3 months or 1 release (whichever is longer)**
350350
* **Alpha: 0 releases**
351351

352+
**Rule #5c: Command line interface (CLI) elements cannot be deprecated in favor of
353+
less stable CLI elements**
354+
355+
Similar to the Rule #3 for APIs, if an element of a command line interface is being replaced with an
356+
alternative implementation, such as by renaming an existing element, or by switching to
357+
use configuration sourced from a file
358+
instead of a command line argument, that recommended alternative must be of
359+
the same or higher stability level.
360+
352361
**Rule #6: Deprecated CLI elements must emit warnings (optionally disable)
353362
when used.**
354363

@@ -361,8 +370,31 @@ rules for deprecation are as follows:
361370
**Rule #7: Deprecated behaviors must function for no less than 1 year after their
362371
announced deprecation.**
363372

364-
This does not imply that all changes to the system are governed by this policy.
365-
This applies only to significant, user-visible behaviors which impact the
373+
If the feature or behavior is being replaced with an alternative implementation
374+
that requires work to adopt the change, there should be an effort to simplify
375+
the transition whenever possible. If an alternative implementation is under
376+
Kubernetes organization control, the following rules apply:
377+
378+
**Rule #8: The feature of behavior must not be deprecated in favor of an alternative
379+
implementation that is less stable**
380+
381+
For example, a generally available feature cannot be deprecated in favor of a Beta
382+
replacement.
383+
The Kubernetes project does, however, encourage users to adopt and transitions to alternative
384+
implementations even before they reach the same maturity level. This is particularly important
385+
for exploring new use cases of a feature or getting an early feedback on the replacement.
386+
387+
Alternative implementations may sometimes be external tools or products,
388+
for example a feature may move from the kubelet to container runtime
389+
that is not under Kubernetes project control. In such cases, the rule cannot be
390+
applied, but there must be an effort to ensure that there is a transition path
391+
that does not compromise on components' maturity levels. In the example with
392+
container runtimes, the effort may involve trying to ensure that popular container runtimes
393+
have versions that offer the same level of stability while implementing that replacement behavior.
394+
395+
Deprecation rules for features and behaviors do not imply that all changes
396+
to the system are governed by this policy.
397+
These rules applies only to significant, user-visible behaviors which impact the
366398
correctness of applications running on Kubernetes or that impact the
367399
administration of Kubernetes clusters, and which are being removed entirely.
368400

@@ -405,14 +437,14 @@ feature in the associated feature gate.
405437
Versioning for feature gates is different from the previously discussed components,
406438
therefore the rules for deprecation are as follows:
407439

408-
**Rule #8: Feature gates must be deprecated when the corresponding feature they control
440+
**Rule #9: Feature gates must be deprecated when the corresponding feature they control
409441
transitions a lifecycle stage as follows. Feature gates must function for no less than:**
410442

411443
* **Beta feature to GA: 6 months or 2 releases (whichever is longer)**
412444
* **Beta feature to EOL: 3 months or 1 release (whichever is longer)**
413445
* **Alpha feature to EOL: 0 releases**
414446

415-
**Rule #9: Deprecated feature gates must respond with a warning when used. When a feature gate
447+
**Rule #10: Deprecated feature gates must respond with a warning when used. When a feature gate
416448
is deprecated it must be documented in both in the release notes and the corresponding CLI help.
417449
Both warnings and documentation must indicate whether a feature gate is non-operational.**
418450

@@ -430,13 +462,13 @@ this impacts removal of a metric during a Kubernetes release. These classes
430462
are determined by the perceived importance of the metric. The rules for
431463
deprecating and removing a metric are as follows:
432464

433-
**Rule #9a: Metrics, for the corresponding stability class, must function for no less than:**
465+
**Rule #11a: Metrics, for the corresponding stability class, must function for no less than:**
434466

435467
* **STABLE: 4 releases or 12 months (whichever is longer)**
436468
* **BETA: 2 releases or 8 months (whichever is longer)**
437469
* **ALPHA: 0 releases**
438470

439-
**Rule #9b: Metrics, after their _announced deprecation_, must function for no less than:**
471+
**Rule #11b: Metrics, after their _announced deprecation_, must function for no less than:**
440472

441473
* **STABLE: 3 releases or 9 months (whichever is longer)**
442474
* **BETA: 1 releases or 4 months (whichever is longer)**

0 commit comments

Comments
 (0)