From fea3734e129972c35701fd92619b3215e1d03b0b Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Fri, 20 May 2022 15:55:10 -0500 Subject: [PATCH 01/11] CEP for deprecation policy --- cep-deprecation.md | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 cep-deprecation.md diff --git a/cep-deprecation.md b/cep-deprecation.md new file mode 100644 index 00000000..d6e16f63 --- /dev/null +++ b/cep-deprecation.md @@ -0,0 +1,62 @@ + + + + + + + + +
Title Deprecation Policy
Status Draft
Author(s) Ken Odegard <kodegard@anaconda.com>
Created May 20, 2022
Updated May 20, 2022
Discussion NA
Implementation NA
+ +## Abstract + +Describes a deprecation policy to properly warn about upcoming removals from the codebase. This policy will be applicable to the following: + +- `conda/conda` +- `conda/conda-build` + +Other [conda](https://github.com/conda) or [conda-incubator](https://github.com/conda-incubator) projects may choose to adopt this policy in the future but if they do this CEP should be updated to reflect that adaptation. + +## Specification + +We propose a deprecation policy slower than the release cadence (see CEP-?). This is in acknowledgement of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). + +All deprecations are to be: + +1. initially marked as **pending deprecation** (e.g. using Python's `warnings.PendingDeprecationWarning`) and remain in a pending state for at least 3 releases/months +2. at the start of the quarter (i.e. in the X.Y.0 release) all **pending deprecations** that have been pending for 3+ releases/months are marked as **deprecations** (e.g. using Python's `warnings.DeprecationWarning`) and remain in a deprecated state for 3 more releases/months +3. at the start of the following (i.e. in the (X.Y+1).0 release) quarter all **deprecations** that have been deprecated for 3 releases/months are removed + +To summarize, features may be marked as **pending deprecation** in any release however **deprecations** and **removals** only occur in the first release of a quarter. + +Occasionally there may be code changes that we feel warrant a longer deprecation schedule. If that occurs the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. + +In an effort to standardize the deprecation messaging we propose the messaging should look something like the following: + +- `f"{__name__}. is pending deprecation in X.Y.0."` +- `f"{__name__}. will be deprecated in (X.Y+1).0."` + +## Motivation + +Help prevent unexpected breakage of downstream tooling as the codebase evolves. + +## Backwards Compatibility + +This is backwards compatible and will also encourage better backwards compatibility. + +## Alternatives + +1. Mark as **pending deprecation** in one release, mark as a **deprecation** the next release, and **remove** in third release. + - Rejected for being too rapid given the sprawling ecosystem and unknown number of downstream applications. + +## Resolution + +This section contains the final decision on this issue. + +## Reference + +- [Django's Deprecation Policy](https://docs.djangoproject.com/en/dev/internals/release-process/#deprecation-policy) + +## Copyright + +All CEPs are explicitly [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/). From 379db432374403e368c6e21524eba66ead7d5693 Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Wed, 6 Jul 2022 18:47:13 -0500 Subject: [PATCH 02/11] Update per Conda Release Schedule changes --- cep-deprecation.md | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/cep-deprecation.md b/cep-deprecation.md index d6e16f63..db4e330c 100644 --- a/cep-deprecation.md +++ b/cep-deprecation.md @@ -1,16 +1,16 @@ - + - +
Title Deprecation Policy
Title Conda Deprecation Schedule
Status Draft
Author(s) Ken Odegard <kodegard@anaconda.com>
Created May 20, 2022
Updated May 20, 2022
Updated July 6, 2022
Discussion NA
Implementation NA
## Abstract -Describes a deprecation policy to properly warn about upcoming removals from the codebase. This policy will be applicable to the following: +Describes a deprecation schedule to properly warn about upcoming removals from the codebase. This will be applicable to the following: - `conda/conda` - `conda/conda-build` @@ -19,23 +19,19 @@ Other [conda](https://github.com/conda) or [conda-incubator](https://github.com/ ## Specification -We propose a deprecation policy slower than the release cadence (see CEP-?). This is in acknowledgement of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). +We propose a deprecation schedule that is slower than the Conda Release Schedule (see CEP-?). This is in acknowledgement of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). All deprecations are to be: -1. initially marked as **pending deprecation** (e.g. using Python's `warnings.PendingDeprecationWarning`) and remain in a pending state for at least 3 releases/months -2. at the start of the quarter (i.e. in the X.Y.0 release) all **pending deprecations** that have been pending for 3+ releases/months are marked as **deprecations** (e.g. using Python's `warnings.DeprecationWarning`) and remain in a deprecated state for 3 more releases/months -3. at the start of the following (i.e. in the (X.Y+1).0 release) quarter all **deprecations** that have been deprecated for 3 releases/months are removed +1. initially marked as **pending deprecation** and remain in a pending state for at least three (3+) `MINOR` releases +2. January (`YY.1.0`), May (`YY.5.0`), and September (`YY.9.0`) are deprecation releases where: + - all **pending deprecations** that have been pending for at least three (3+) `MINOR` releases are marked as **deprecations** and remain in a deprecated state for four (4) `MINOR` releases + - all **deprecations** that have been deprecated for four (4) `MINOR` releases are removed To summarize, features may be marked as **pending deprecation** in any release however **deprecations** and **removals** only occur in the first release of a quarter. Occasionally there may be code changes that we feel warrant a longer deprecation schedule. If that occurs the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. -In an effort to standardize the deprecation messaging we propose the messaging should look something like the following: - -- `f"{__name__}. is pending deprecation in X.Y.0."` -- `f"{__name__}. will be deprecated in (X.Y+1).0."` - ## Motivation Help prevent unexpected breakage of downstream tooling as the codebase evolves. From 96c29e6cd2d3ab84892e482346d18a0200298926 Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Thu, 7 Jul 2022 12:33:05 -0500 Subject: [PATCH 03/11] Add Gantt chart for proposed schedule --- cep-deprecation.md | 98 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 80 insertions(+), 18 deletions(-) diff --git a/cep-deprecation.md b/cep-deprecation.md index db4e330c..3d101afe 100644 --- a/cep-deprecation.md +++ b/cep-deprecation.md @@ -10,27 +10,89 @@ ## Abstract -Describes a deprecation schedule to properly warn about upcoming removals from the codebase. This will be applicable to the following: - -- `conda/conda` -- `conda/conda-build` - -Other [conda](https://github.com/conda) or [conda-incubator](https://github.com/conda-incubator) projects may choose to adopt this policy in the future but if they do this CEP should be updated to reflect that adaptation. +Describes a deprecation schedule to properly warn about upcoming removals from the codebase. This policy expands on ideas and terminology defined in the Conda Release Schedule (CEP-?). ## Specification -We propose a deprecation schedule that is slower than the Conda Release Schedule (see CEP-?). This is in acknowledgement of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). - -All deprecations are to be: - -1. initially marked as **pending deprecation** and remain in a pending state for at least three (3+) `MINOR` releases -2. January (`YY.1.0`), May (`YY.5.0`), and September (`YY.9.0`) are deprecation releases where: - - all **pending deprecations** that have been pending for at least three (3+) `MINOR` releases are marked as **deprecations** and remain in a deprecated state for four (4) `MINOR` releases - - all **deprecations** that have been deprecated for four (4) `MINOR` releases are removed - -To summarize, features may be marked as **pending deprecation** in any release however **deprecations** and **removals** only occur in the first release of a quarter. - -Occasionally there may be code changes that we feel warrant a longer deprecation schedule. If that occurs the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. +We propose a deprecation schedule that is slower than the Conda Release Schedule (CEP-?). This is in acknowledgment of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). + +We define a new type of release, deprecation release, to augment the regular release. A deprecation release occurs three (3) times every year in January, May, and September: + +| Version | Release Type | +|---|---| +| `YY.1.0` | regular, **deprecation** | +| `YY.2.0` | optional | +| `YY.3.0` | regular | +| `YY.4.0` | optional | +| `YY.5.0` | regular, **deprecation** | +| `YY.6.0` | optional | +| `YY.7.0` | regular | +| `YY.8.0` | optional | +| `YY.9.0` | regular, **deprecation** | +| `YY.10.0` | optional | +| `YY.11.0` | regular | +| `YY.12.0` | optional | + +All deprecations will need to transition through 3 states: + +1. **pending deprecation**: when a feature is marked for future deprecation + - any feature can be marked as *pending deprecation* in **any release** +2. **deprecated**: when a feature is marked for future removal + - all *pending deprecations* that have been through at least one (1+) **regular release** (3-6 months after being marked as *pending deprecation*) are relabeled as *deprecated* in the next **deprecation release** +3. **removed**: when a feature is removed from the codebase + - all *deprecations* are removed in the next **deprecation release** + +This would result in the following schedule: + +```mermaid +gantt + dateFormat YYYY-MM + axisFormat %y.%m + title Deprecation Schedule + + section Feature 1 + Pending : 2022-07, 2023-01 + Deprecated :active, 2023-01, 2023-05 + Removed :milestone, 2023-05 + + section Feature 2 + Pending : 2022-08, 2023-01 + Deprecated :active, 2023-01, 2023-05 + Removed :milestone, 2023-05 + + section Feature 3 + Pending : 2022-09, 2023-01 + Deprecated :active, 2023-01, 2023-05 + Removed :milestone, 2023-05 + + section Feature 4 + Pending : 2022-10, 2023-01 + Deprecated :active, 2023-01, 2023-05 + Removed :milestone, 2023-05 + + section Feature 5 + Pending : 2022-11, 2023-05 + Deprecated :active, 2023-05, 2023-09 + Removed :milestone, 2023-09 + + section Feature 6 + Pending : 2022-12, 2023-05 + Deprecated :active, 2023-05, 2023-09 + Removed :milestone, 2023-09 + + section Feature 7 + Pending : 2023-01, 2023-05 + Deprecated :active, 2023-05, 2023-09 + Removed :milestone, 2023-09 + + section Feature 8 + Pending : 2023-02, 2023-05 + Deprecated :active, 2023-05, 2023-09 + Removed :milestone, 2023-09 + +``` + +Occasionally there may be code changes that warrant a longer deprecation schedule. If that occurs the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. ## Motivation From c314e06e59696cdffc343f69a7545048d0f60b34 Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Wed, 20 Jul 2022 14:23:36 -0500 Subject: [PATCH 04/11] Update cep-deprecation.md --- cep-deprecation.md | 109 ++++++++++++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 37 deletions(-) diff --git a/cep-deprecation.md b/cep-deprecation.md index 3d101afe..6fd21f4b 100644 --- a/cep-deprecation.md +++ b/cep-deprecation.md @@ -3,7 +3,7 @@ Status Draft Author(s) Ken Odegard <kodegard@anaconda.com> Created May 20, 2022 - Updated July 6, 2022 + Updated July 20, 2022 Discussion NA Implementation NA @@ -33,7 +33,7 @@ We define a new type of release, deprecation release, to augment the regular rel | `YY.11.0` | regular | | `YY.12.0` | optional | -All deprecations will need to transition through 3 states: +All deprecations will need to transition through three (3) states: 1. **pending deprecation**: when a feature is marked for future deprecation - any feature can be marked as *pending deprecation* in **any release** @@ -47,49 +47,82 @@ This would result in the following schedule: ```mermaid gantt dateFormat YYYY-MM - axisFormat %y.%m - title Deprecation Schedule - - section Feature 1 - Pending : 2022-07, 2023-01 - Deprecated :active, 2023-01, 2023-05 - Removed :milestone, 2023-05 - - section Feature 2 - Pending : 2022-08, 2023-01 - Deprecated :active, 2023-01, 2023-05 - Removed :milestone, 2023-05 - - section Feature 3 - Pending : 2022-09, 2023-01 - Deprecated :active, 2023-01, 2023-05 - Removed :milestone, 2023-05 - - section Feature 4 - Pending : 2022-10, 2023-01 - Deprecated :active, 2023-01, 2023-05 - Removed :milestone, 2023-05 - - section Feature 5 - Pending : 2022-11, 2023-05 - Deprecated :active, 2023-05, 2023-09 - Removed :milestone, 2023-09 - - section Feature 6 - Pending : 2022-12, 2023-05 - Deprecated :active, 2023-05, 2023-09 - Removed :milestone, 2023-09 + axisFormat YY.%_m + title January-April Deprecations - section Feature 7 + section Jan Pending : 2023-01, 2023-05 Deprecated :active, 2023-05, 2023-09 Removed :milestone, 2023-09 - section Feature 8 + section Feb Pending : 2023-02, 2023-05 Deprecated :active, 2023-05, 2023-09 Removed :milestone, 2023-09 + section Mar + Pending : 2023-03, 2023-09 + Deprecated :active, 2023-09, 2024-01 + Removed :milestone, 2024-01 + + section Apr + Pending : 2023-04, 2023-09 + Deprecated :active, 2023-09, 2024-01 + Removed :milestone, 2024-01 +``` + +```mermaid +gantt + dateFormat YYYY-MM + axisFormat YY.%_m + title May-August Deprecations + + section May + Pending : 2023-05, 2023-09 + Deprecated :active, 2023-09, 2024-01 + Removed :milestone, 2024-01 + + section Jun + Pending : 2023-06, 2023-09 + Deprecated :active, 2023-09, 2024-01 + Removed :milestone, 2024-01 + + section Jul + Pending : 2023-07, 2024-01 + Deprecated :active, 2024-01, 2024-05 + Removed :milestone, 2024-05 + + section Aug + Pending : 2023-08, 2024-01 + Deprecated :active, 2024-01, 2024-05 + Removed :milestone, 2024-05 +``` + +```mermaid +gantt + dateFormat YYYY-MM + axisFormat YY.%_m + title September-December Deprecations + + section Sep + Pending : 2023-09, 2024-01 + Deprecated :active, 2024-01, 2024-05 + Removed :milestone, 2024-05 + + section Oct + Pending : 2023-10, 2024-01 + Deprecated :active, 2024-01, 2024-05 + Removed :milestone, 2024-05 + + section Nov + Pending : 2023-11, 2024-05 + Deprecated :active, 2024-05, 2024-09 + Removed :milestone, 2024-09 + + section Dec + Pending : 2023-12, 2024-05 + Deprecated :active, 2024-05, 2024-09 + Removed :milestone, 2024-09 ``` Occasionally there may be code changes that warrant a longer deprecation schedule. If that occurs the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. @@ -104,7 +137,9 @@ This is backwards compatible and will also encourage better backwards compatibil ## Alternatives -1. Mark as **pending deprecation** in one release, mark as a **deprecation** the next release, and **remove** in third release. +1. Ad hoc deprecations. + - Unpredictable and unreliable. +2. Mark as **pending deprecation** in one release, mark as a **deprecation** the next release, and **remove** in third release. - Rejected for being too rapid given the sprawling ecosystem and unknown number of downstream applications. ## Resolution From 6c37c406b9aa845be9d237fb3c83b28d3bd153ec Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Wed, 20 Jul 2022 17:06:41 -0500 Subject: [PATCH 05/11] Grammar Co-authored-by: Travis Hathaway --- cep-deprecation.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/cep-deprecation.md b/cep-deprecation.md index 6fd21f4b..63bdd61c 100644 --- a/cep-deprecation.md +++ b/cep-deprecation.md @@ -10,13 +10,13 @@ ## Abstract -Describes a deprecation schedule to properly warn about upcoming removals from the codebase. This policy expands on ideas and terminology defined in the Conda Release Schedule (CEP-?). +This CEP describes a deprecation schedule to properly warn about upcoming removals from the codebase. This policy expands on ideas and terminology defined in the Conda Release Schedule (CEP-?). ## Specification We propose a deprecation schedule that is slower than the Conda Release Schedule (CEP-?). This is in acknowledgment of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). -We define a new type of release, deprecation release, to augment the regular release. A deprecation release occurs three (3) times every year in January, May, and September: +We define a new type of release, a deprecation release, to augment regular releases. A deprecation release occurs three (3) times every year in January, May, and September: | Version | Release Type | |---|---| @@ -35,12 +35,12 @@ We define a new type of release, deprecation release, to augment the regular rel All deprecations will need to transition through three (3) states: -1. **pending deprecation**: when a feature is marked for future deprecation - - any feature can be marked as *pending deprecation* in **any release** -2. **deprecated**: when a feature is marked for future removal - - all *pending deprecations* that have been through at least one (1+) **regular release** (3-6 months after being marked as *pending deprecation*) are relabeled as *deprecated* in the next **deprecation release** -3. **removed**: when a feature is removed from the codebase - - all *deprecations* are removed in the next **deprecation release** +1. **Pending deprecation**: when a feature is marked for future deprecation + - Any feature can be marked as *pending deprecation* in **any release** +2. **Deprecated**: when a feature is marked for future removal + - All *pending deprecations* that have been through at least one (1+) **regular release** (3-6 months after being marked as *pending deprecation*) are relabeled as *deprecated* in the next **deprecation release** +3. **Removed**: when a feature is removed from the codebase + - All *deprecations* are removed in the next **deprecation release** This would result in the following schedule: @@ -125,11 +125,11 @@ gantt Removed :milestone, 2024-09 ``` -Occasionally there may be code changes that warrant a longer deprecation schedule. If that occurs the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. +Occasionally, there may be changes to the codebase that warrant a longer deprecation schedule. If that occurs, the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. ## Motivation -Help prevent unexpected breakage of downstream tooling as the codebase evolves. +This CEP will help prevent unexpected breakage of downstream tooling as the codebase evolves. ## Backwards Compatibility @@ -139,7 +139,7 @@ This is backwards compatible and will also encourage better backwards compatibil 1. Ad hoc deprecations. - Unpredictable and unreliable. -2. Mark as **pending deprecation** in one release, mark as a **deprecation** the next release, and **remove** in third release. +2. Mark as **pending deprecation** in one release, mark as a **deprecated** in the next release, and **remove** in third release. - Rejected for being too rapid given the sprawling ecosystem and unknown number of downstream applications. ## Resolution From 12ff9ed7a249d17182ca555f44e06373400ce80b Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Wed, 20 Jul 2022 18:43:10 -0500 Subject: [PATCH 06/11] Scope --- cep-deprecation.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cep-deprecation.md b/cep-deprecation.md index 63bdd61c..25501d01 100644 --- a/cep-deprecation.md +++ b/cep-deprecation.md @@ -12,6 +12,9 @@ This CEP describes a deprecation schedule to properly warn about upcoming removals from the codebase. This policy expands on ideas and terminology defined in the Conda Release Schedule (CEP-?). +> **Note** +> This CEP is only applicable for projects that have adopted the Conda Release Schedule (CEP-?). + ## Specification We propose a deprecation schedule that is slower than the Conda Release Schedule (CEP-?). This is in acknowledgment of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). From b1d1df1900bdfa77e69f141909624457bf4d602f Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Thu, 21 Jul 2022 08:46:56 -0500 Subject: [PATCH 07/11] Switch to bi-annual deprecation policy Co-authored-by: Jannis Leidel --- cep-deprecation.md | 121 +++++++++++++++++++++------------------------ 1 file changed, 57 insertions(+), 64 deletions(-) diff --git a/cep-deprecation.md b/cep-deprecation.md index 25501d01..b8042ce0 100644 --- a/cep-deprecation.md +++ b/cep-deprecation.md @@ -19,15 +19,15 @@ This CEP describes a deprecation schedule to properly warn about upcoming remova We propose a deprecation schedule that is slower than the Conda Release Schedule (CEP-?). This is in acknowledgment of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). -We define a new type of release, a deprecation release, to augment regular releases. A deprecation release occurs three (3) times every year in January, May, and September: +We define a new type of release, a deprecation release, to augment regular releases. A deprecation release occurs twice every year in March and September: | Version | Release Type | |---|---| -| `YY.1.0` | regular, **deprecation** | +| `YY.1.0` | regular | | `YY.2.0` | optional | -| `YY.3.0` | regular | +| `YY.3.0` | regular, **deprecation** | | `YY.4.0` | optional | -| `YY.5.0` | regular, **deprecation** | +| `YY.5.0` | regular | | `YY.6.0` | optional | | `YY.7.0` | regular | | `YY.8.0` | optional | @@ -41,7 +41,7 @@ All deprecations will need to transition through three (3) states: 1. **Pending deprecation**: when a feature is marked for future deprecation - Any feature can be marked as *pending deprecation* in **any release** 2. **Deprecated**: when a feature is marked for future removal - - All *pending deprecations* that have been through at least one (1+) **regular release** (3-6 months after being marked as *pending deprecation*) are relabeled as *deprecated* in the next **deprecation release** + - All *pending deprecations* that have been through at least one (2+) **regular release** (4-9 months after being marked as *pending deprecation*) are relabeled as *deprecated* in the next **deprecation release** 3. **Removed**: when a feature is removed from the codebase - All *deprecations* are removed in the next **deprecation release** @@ -51,81 +51,74 @@ This would result in the following schedule: gantt dateFormat YYYY-MM axisFormat YY.%_m - title January-April Deprecations + title June-November (YX.6-YX.11) Pending → March (YY.3) Deprecations → September (YY.9) Removals - section Jan - Pending : 2023-01, 2023-05 - Deprecated :active, 2023-05, 2023-09 - Removed :milestone, 2023-09 + section Jun + Pending : 2023-06, 2024-03 + Deprecated :active, 2024-03, 2024-09 + Removed :milestone, 2024-09 - section Feb - Pending : 2023-02, 2023-05 - Deprecated :active, 2023-05, 2023-09 - Removed :milestone, 2023-09 + section Jul + Pending : 2023-07, 2024-03 + Deprecated :active, 2024-03, 2024-09 + Removed :milestone, 2024-09 - section Mar - Pending : 2023-03, 2023-09 - Deprecated :active, 2023-09, 2024-01 - Removed :milestone, 2024-01 + section Aug + Pending : 2023-08, 2024-03 + Deprecated :active, 2024-03, 2024-09 + Removed :milestone, 2024-09 - section Apr - Pending : 2023-04, 2023-09 - Deprecated :active, 2023-09, 2024-01 - Removed :milestone, 2024-01 + section Sep + Pending : 2023-09, 2024-03 + Deprecated :active, 2024-03, 2024-09 + Removed :milestone, 2024-09 + + section Oct + Pending : 2023-10, 2024-03 + Deprecated :active, 2024-03, 2024-09 + Removed :milestone, 2024-09 + + section Nov + Pending : 2023-11, 2024-03 + Deprecated :active, 2024-03, 2024-09 + Removed :milestone, 2024-09 ``` ```mermaid gantt dateFormat YYYY-MM axisFormat YY.%_m - title May-August Deprecations + title December-May (YX.12-YY.5) Pending → September (YY.9) Removals → March (YZ.3) Deprecations - section May - Pending : 2023-05, 2023-09 - Deprecated :active, 2023-09, 2024-01 - Removed :milestone, 2024-01 - - section Jun - Pending : 2023-06, 2023-09 - Deprecated :active, 2023-09, 2024-01 - Removed :milestone, 2024-01 - - section Jul - Pending : 2023-07, 2024-01 - Deprecated :active, 2024-01, 2024-05 - Removed :milestone, 2024-05 + section Dec + Pending : 2022-12, 2023-09 + Deprecated :active, 2023-09, 2024-03 + Removed :milestone, 2024-03 - section Aug - Pending : 2023-08, 2024-01 - Deprecated :active, 2024-01, 2024-05 - Removed :milestone, 2024-05 -``` + section Jan + Pending : 2023-01, 2023-09 + Deprecated :active, 2023-09, 2024-03 + Removed :milestone, 2024-03 -```mermaid -gantt - dateFormat YYYY-MM - axisFormat YY.%_m - title September-December Deprecations - - section Sep - Pending : 2023-09, 2024-01 - Deprecated :active, 2024-01, 2024-05 - Removed :milestone, 2024-05 + section Feb + Pending : 2023-02, 2023-09 + Deprecated :active, 2023-09, 2024-03 + Removed :milestone, 2024-03 - section Oct - Pending : 2023-10, 2024-01 - Deprecated :active, 2024-01, 2024-05 - Removed :milestone, 2024-05 + section Mar + Pending : 2023-03, 2023-09 + Deprecated :active, 2023-09, 2024-03 + Removed :milestone, 2024-03 - section Nov - Pending : 2023-11, 2024-05 - Deprecated :active, 2024-05, 2024-09 - Removed :milestone, 2024-09 + section Apr + Pending : 2023-04, 2023-09 + Deprecated :active, 2023-09, 2024-03 + Removed :milestone, 2024-03 - section Dec - Pending : 2023-12, 2024-05 - Deprecated :active, 2024-05, 2024-09 - Removed :milestone, 2024-09 + section May + Pending : 2023-05, 2023-09 + Deprecated :active, 2023-09, 2024-03 + Removed :milestone, 2024-03 ``` Occasionally, there may be changes to the codebase that warrant a longer deprecation schedule. If that occurs, the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. From 430c59ececdd1edd7992e12c36595b2dd346ab94 Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Tue, 20 Sep 2022 16:24:05 -0500 Subject: [PATCH 08/11] Update CEP-8 links --- cep-deprecation.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/cep-deprecation.md b/cep-deprecation.md index b8042ce0..c5e10360 100644 --- a/cep-deprecation.md +++ b/cep-deprecation.md @@ -1,23 +1,27 @@ - + - +
Title Conda Deprecation Schedule
Status Draft
Author(s) Ken Odegard <kodegard@anaconda.com>
Author(s) Ken Odegard <kodegard@anaconda.com>, Jannis Leidel <jleidel@anaconda.com>, Travis Hathaway <thathaway@anaconda.com>
Created May 20, 2022
Updated July 20, 2022
Updated September 20, 2022
Discussion NA
Implementation NA
+ +[cep8]: https://github.com/conda-incubator/ceps/blob/main/cep-8.md +[django]: https://docs.djangoproject.com/en/dev/internals/release-process/#deprecation-policy + ## Abstract -This CEP describes a deprecation schedule to properly warn about upcoming removals from the codebase. This policy expands on ideas and terminology defined in the Conda Release Schedule (CEP-?). +This CEP describes a deprecation schedule to properly warn about upcoming removals from the codebase. This policy expands on ideas and terminology defined in the [Conda Release Schedule (CEP-8)][cep8]. > **Note** -> This CEP is only applicable for projects that have adopted the Conda Release Schedule (CEP-?). +> This CEP is only applicable for projects that have adopted the [Conda Release Schedule (CEP-8)][cep8]. ## Specification -We propose a deprecation schedule that is slower than the Conda Release Schedule (CEP-?). This is in acknowledgment of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). +We propose a deprecation schedule that is slower than the [Conda Release Schedule (CEP-8)][cep8]. This is in acknowledgment of our diverse user groups (e.g. everything from per user per machine installs to multi-user installs on shared clusters). We define a new type of release, a deprecation release, to augment regular releases. A deprecation release occurs twice every year in March and September: @@ -41,7 +45,7 @@ All deprecations will need to transition through three (3) states: 1. **Pending deprecation**: when a feature is marked for future deprecation - Any feature can be marked as *pending deprecation* in **any release** 2. **Deprecated**: when a feature is marked for future removal - - All *pending deprecations* that have been through at least one (2+) **regular release** (4-9 months after being marked as *pending deprecation*) are relabeled as *deprecated* in the next **deprecation release** + - All *pending deprecations* that have been through at least two (2+) **regular release** (4-9 months after being marked as *pending deprecation*) are relabeled as *deprecated* in the next **deprecation release** 3. **Removed**: when a feature is removed from the codebase - All *deprecations* are removed in the next **deprecation release** @@ -144,7 +148,7 @@ This section contains the final decision on this issue. ## Reference -- [Django's Deprecation Policy](https://docs.djangoproject.com/en/dev/internals/release-process/#deprecation-policy) +- [Django's Deprecation Policy][django] ## Copyright From 3421a641eb1e38f386c76ba574a3e673a627d264 Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Tue, 4 Oct 2022 15:02:40 -0500 Subject: [PATCH 09/11] Add comment period & disputing process --- cep-deprecation.md => cep-9.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) rename cep-deprecation.md => cep-9.md (83%) diff --git a/cep-deprecation.md b/cep-9.md similarity index 83% rename from cep-deprecation.md rename to cep-9.md index c5e10360..45163fae 100644 --- a/cep-deprecation.md +++ b/cep-9.md @@ -11,6 +11,7 @@ [cep8]: https://github.com/conda-incubator/ceps/blob/main/cep-8.md [django]: https://docs.djangoproject.com/en/dev/internals/release-process/#deprecation-policy +[voting]: https://github.com/conda-incubator/governance#enhancement-proposal-approval ## Abstract @@ -44,8 +45,10 @@ All deprecations will need to transition through three (3) states: 1. **Pending deprecation**: when a feature is marked for future deprecation - Any feature can be marked as *pending deprecation* in **any release** + - This state is also a comment period where community concerns or disputes may be raised, see [Disputing a Deprecation](#disputing-a-deprecation) 2. **Deprecated**: when a feature is marked for future removal - All *pending deprecations* that have been through at least two (2+) **regular release** (4-9 months after being marked as *pending deprecation*) are relabeled as *deprecated* in the next **deprecation release** + - This state is considered final, the deprecation **will** occur, disputes are no longer possible, see [Disputing a Deprecation](#disputing-a-deprecation) 3. **Removed**: when a feature is removed from the codebase - All *deprecations* are removed in the next **deprecation release** @@ -127,6 +130,19 @@ gantt Occasionally, there may be changes to the codebase that warrant a longer deprecation schedule. If that occurs, the deprecation warning will clearly specify that a deviation is occurring and what the expected schedule will be instead. +### Disputing a Deprecation + +The **pending deprecation** state is also a commenting period whereby disputes for the deprecation may be raised. + +To raise a dispute open an issue on the relevant repository with the following details: + +1. Which **pending deprecation** feature to dispute +2. Details and explanation for why the **pending deprecation** shouldn't proceed + +It's then up to the repository maintainers to engage in the discussion, resolve concerns, or ultimately revert the **pending deprecation** status. + +Should the dispute reach an impasse it will be elevated to the steering council for a vote following the [standard voting procedure of an enhancement proposal][voting]. + ## Motivation This CEP will help prevent unexpected breakage of downstream tooling as the codebase evolves. From 3a384f148e922a2d27866416de36892b4b01f274 Mon Sep 17 00:00:00 2001 From: Ken Odegard Date: Tue, 4 Oct 2022 15:09:27 -0500 Subject: [PATCH 10/11] Update grammar --- cep-9.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cep-9.md b/cep-9.md index 45163fae..7db58c7f 100644 --- a/cep-9.md +++ b/cep-9.md @@ -132,16 +132,16 @@ Occasionally, there may be changes to the codebase that warrant a longer depreca ### Disputing a Deprecation -The **pending deprecation** state is also a commenting period whereby disputes for the deprecation may be raised. +The **pending deprecation** state is also a comment period whereby disputes for the deprecation may be raised. -To raise a dispute open an issue on the relevant repository with the following details: +To raise a dispute, open an issue on the relevant repository with the following details: 1. Which **pending deprecation** feature to dispute 2. Details and explanation for why the **pending deprecation** shouldn't proceed -It's then up to the repository maintainers to engage in the discussion, resolve concerns, or ultimately revert the **pending deprecation** status. +It's up to the repository maintainers to engage in the discussion, resolve concerns, or ultimately revert the **pending deprecation** status. -Should the dispute reach an impasse it will be elevated to the steering council for a vote following the [standard voting procedure of an enhancement proposal][voting]. +Should the dispute reach an impasse, the steering council must vote on the resolution following the [standard voting procedure of an enhancement proposal][voting]. ## Motivation From e62e4b51b26a479d1b300e5d15fc3feaae5a7619 Mon Sep 17 00:00:00 2001 From: Jannis Leidel Date: Tue, 11 Oct 2022 11:33:50 +0200 Subject: [PATCH 11/11] Updated metadata after vote. --- cep-9.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cep-9.md b/cep-9.md index 7db58c7f..3ed44396 100644 --- a/cep-9.md +++ b/cep-9.md @@ -1,10 +1,10 @@ - + - +
Title Conda Deprecation Schedule
Status Draft
Status Accepted
Author(s) Ken Odegard <kodegard@anaconda.com>, Jannis Leidel <jleidel@anaconda.com>, Travis Hathaway <thathaway@anaconda.com>
Created May 20, 2022
Updated September 20, 2022
Discussion NA
Discussion https://github.com/conda-incubator/ceps/pull/27
Implementation NA