@@ -349,6 +349,15 @@ after their announced deprecation for no less than:**
349
349
* ** Beta: 3 months or 1 release (whichever is longer)**
350
350
* ** Alpha: 0 releases**
351
351
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
+
352
361
** Rule #6 : Deprecated CLI elements must emit warnings (optionally disable)
353
362
when used.**
354
363
@@ -361,8 +370,31 @@ rules for deprecation are as follows:
361
370
** Rule #7 : Deprecated behaviors must function for no less than 1 year after their
362
371
announced deprecation.**
363
372
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
366
398
correctness of applications running on Kubernetes or that impact the
367
399
administration of Kubernetes clusters, and which are being removed entirely.
368
400
@@ -405,14 +437,14 @@ feature in the associated feature gate.
405
437
Versioning for feature gates is different from the previously discussed components,
406
438
therefore the rules for deprecation are as follows:
407
439
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
409
441
transitions a lifecycle stage as follows. Feature gates must function for no less than:**
410
442
411
443
* ** Beta feature to GA: 6 months or 2 releases (whichever is longer)**
412
444
* ** Beta feature to EOL: 3 months or 1 release (whichever is longer)**
413
445
* ** Alpha feature to EOL: 0 releases**
414
446
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
416
448
is deprecated it must be documented in both in the release notes and the corresponding CLI help.
417
449
Both warnings and documentation must indicate whether a feature gate is non-operational.**
418
450
@@ -430,13 +462,13 @@ this impacts removal of a metric during a Kubernetes release. These classes
430
462
are determined by the perceived importance of the metric. The rules for
431
463
deprecating and removing a metric are as follows:
432
464
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:**
434
466
435
467
* ** STABLE: 4 releases or 12 months (whichever is longer)**
436
468
* ** BETA: 2 releases or 8 months (whichever is longer)**
437
469
* ** ALPHA: 0 releases**
438
470
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:**
440
472
441
473
* ** STABLE: 3 releases or 9 months (whichever is longer)**
442
474
* ** BETA: 1 releases or 4 months (whichever is longer)**
0 commit comments