From bf4133f4f0ee92b6104770153158bacf04f5cb1f Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Tue, 27 Feb 2024 01:56:45 +0200 Subject: [PATCH 1/9] first draft --- docs/LTS-strategy.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 docs/LTS-strategy.md diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md new file mode 100644 index 0000000..39746ee --- /dev/null +++ b/docs/LTS-strategy.md @@ -0,0 +1,38 @@ +# Express LTS Strategy + +## Goals + +* Maintain strict Node.js version support within a single Express major release. +* Provide good ergonomics and developer experience for Express maintainers +* Provide good experience for users who want to keep their Express projects that up-to-date +* Avoid stagnation and blocking innovation that is good for the end users + +## Non-Goals + +* Only support the active LTS releases of Node.js +* Support the widest possible set of Node.js versions. We aim to maintain a healthy balance between backwards compatibility and toolchain modernization. +* Provide timed cadence of Node.js version support dismissal + +### Rationale behind dropping support for old Node.js versions + +* Avoid blocking Node.js core from making progress and removing deprecated parts of the codebase +* Avoid getting outdated bug reports or security issues +* Keep options for adopting newer patterns and tooling open + +### Rationale behind conservative policy of breaking changes + +* Minimize disruption for end users +* Be mindful of the fact that some users are still running obsolete versions of Node in production + +### Guidelines for dropping support of Node.js versions + +* In order to smoothen the experience of users updating to a new semver major Express version, Express should always support at least one even numbered Node.js version above the current lowest supported one before the drop can be considered. For example, if the lowest supported version is 20, Express support for Node 20 cannot be dropped until Express supports at least Node 22. This ensures that Express updates can be done independently from the Node.js version update. +* Version support removal must come with clear benefits for one of the three - Express users, Express maintainers or the Node.js core project. Version support is not dropped on a merely time-based basis. +* Any discontinuation of a Node.js version support is always a semver major release. + +### Active branches + +* Several semver major branches can be maintained at the same time, in case there is a significant userbase for older semver major releases. +* No features are backported to older semver major branches +* Critical bugfixes may be backported to older semver major branches +* High-impact security fixes are very likely to be backported to older semver major branches From 9b928abfaed042fae7a421906c4d81b3ad68c1a5 Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Tue, 27 Feb 2024 08:16:25 +0100 Subject: [PATCH 2/9] Update docs/LTS-strategy.md Co-authored-by: Wes Todd --- docs/LTS-strategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md index 39746ee..eec657f 100644 --- a/docs/LTS-strategy.md +++ b/docs/LTS-strategy.md @@ -17,7 +17,7 @@ * Avoid blocking Node.js core from making progress and removing deprecated parts of the codebase * Avoid getting outdated bug reports or security issues -* Keep options for adopting newer patterns and tooling open +* Keep options open for adopting newer patterns and tooling ### Rationale behind conservative policy of breaking changes From a9c329925e33e123a195dff3c70d7cd37678a1e5 Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Tue, 27 Feb 2024 08:16:39 +0100 Subject: [PATCH 3/9] Update docs/LTS-strategy.md Co-authored-by: Wes Todd --- docs/LTS-strategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md index eec657f..485f5a0 100644 --- a/docs/LTS-strategy.md +++ b/docs/LTS-strategy.md @@ -32,7 +32,7 @@ ### Active branches -* Several semver major branches can be maintained at the same time, in case there is a significant userbase for older semver major releases. +* Several semver major branches will be maintained at the same time while we have overlapping supported versions * No features are backported to older semver major branches * Critical bugfixes may be backported to older semver major branches * High-impact security fixes are very likely to be backported to older semver major branches From 6c170509116c4e06c02c8ba9ec3e00f07cf0a5ce Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Tue, 27 Feb 2024 08:16:51 +0100 Subject: [PATCH 4/9] Update docs/LTS-strategy.md Co-authored-by: Wes Todd --- docs/LTS-strategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md index 485f5a0..0044b1c 100644 --- a/docs/LTS-strategy.md +++ b/docs/LTS-strategy.md @@ -34,5 +34,5 @@ * Several semver major branches will be maintained at the same time while we have overlapping supported versions * No features are backported to older semver major branches -* Critical bugfixes may be backported to older semver major branches +* Critical bugfixes will be backported to older supported semver major branches * High-impact security fixes are very likely to be backported to older semver major branches From 06bf8ebad8ab35be42f6ca87b5ed55d36e263330 Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Tue, 27 Feb 2024 08:17:14 +0100 Subject: [PATCH 5/9] Update docs/LTS-strategy.md Co-authored-by: Jordan Harband --- docs/LTS-strategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md index 0044b1c..787dc07 100644 --- a/docs/LTS-strategy.md +++ b/docs/LTS-strategy.md @@ -27,7 +27,7 @@ ### Guidelines for dropping support of Node.js versions * In order to smoothen the experience of users updating to a new semver major Express version, Express should always support at least one even numbered Node.js version above the current lowest supported one before the drop can be considered. For example, if the lowest supported version is 20, Express support for Node 20 cannot be dropped until Express supports at least Node 22. This ensures that Express updates can be done independently from the Node.js version update. -* Version support removal must come with clear benefits for one of the three - Express users, Express maintainers or the Node.js core project. Version support is not dropped on a merely time-based basis. +* Version support removal must come with clear benefits for one of the three - Express users, Express maintainers, or the Node.js core project. Version support is not dropped on a merely time-based basis, or otherwise arbitrarily. * Any discontinuation of a Node.js version support is always a semver major release. ### Active branches From cdb10901a39b9490791b7234c3bb1f805d13d652 Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Tue, 27 Feb 2024 08:17:48 +0100 Subject: [PATCH 6/9] Update docs/LTS-strategy.md Co-authored-by: Wes Todd --- docs/LTS-strategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md index 787dc07..32c0347 100644 --- a/docs/LTS-strategy.md +++ b/docs/LTS-strategy.md @@ -35,4 +35,4 @@ * Several semver major branches will be maintained at the same time while we have overlapping supported versions * No features are backported to older semver major branches * Critical bugfixes will be backported to older supported semver major branches -* High-impact security fixes are very likely to be backported to older semver major branches +* Security fixes will be backported to older supported semver major branches From b0cb097975364b0c6041ee40e5f72c7df5636c1b Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Wed, 28 Feb 2024 02:09:48 +0200 Subject: [PATCH 7/9] Improve wording --- docs/LTS-strategy.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md index 32c0347..1e62430 100644 --- a/docs/LTS-strategy.md +++ b/docs/LTS-strategy.md @@ -2,16 +2,16 @@ ## Goals -* Maintain strict Node.js version support within a single Express major release. -* Provide good ergonomics and developer experience for Express maintainers +* Maintain strict Node.js version support within a single Express major release * Provide good experience for users who want to keep their Express projects that up-to-date * Avoid stagnation and blocking innovation that is good for the end users +* Ensure good ergonomics and developer experience for Express maintainers ## Non-Goals * Only support the active LTS releases of Node.js -* Support the widest possible set of Node.js versions. We aim to maintain a healthy balance between backwards compatibility and toolchain modernization. * Provide timed cadence of Node.js version support dismissal +* Support an extended set of Node.js versions to the detriment of all other factors. We aim to maintain a healthy balance between backwards compatibility and toolchain modernization ### Rationale behind dropping support for old Node.js versions From 39cff08249caf404cb69590f1563474333697399 Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Wed, 28 Feb 2024 02:42:16 +0200 Subject: [PATCH 8/9] Update docs/LTS-strategy.md Co-authored-by: Jordan Harband --- docs/LTS-strategy.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md index 1e62430..a0b62f9 100644 --- a/docs/LTS-strategy.md +++ b/docs/LTS-strategy.md @@ -11,7 +11,7 @@ * Only support the active LTS releases of Node.js * Provide timed cadence of Node.js version support dismissal -* Support an extended set of Node.js versions to the detriment of all other factors. We aim to maintain a healthy balance between backwards compatibility and toolchain modernization +* Prioritizing "support older Node.js versions" over other factors. We aim to maintain a healthy balance between backwards compatibility and toolchain modernization ### Rationale behind dropping support for old Node.js versions From b38d3f3a2b5a364eb78fc865fdf4fdc9ae886db0 Mon Sep 17 00:00:00 2001 From: Igor Savin Date: Thu, 29 Feb 2024 00:58:48 +0200 Subject: [PATCH 9/9] Add clarity on regular semver major cadence --- docs/LTS-strategy.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/LTS-strategy.md b/docs/LTS-strategy.md index 1e62430..ffdd2bb 100644 --- a/docs/LTS-strategy.md +++ b/docs/LTS-strategy.md @@ -10,7 +10,7 @@ ## Non-Goals * Only support the active LTS releases of Node.js -* Provide timed cadence of Node.js version support dismissal +* Release semver major versions on a regular cadence just for the sake of dropping Node.js version support when there are no clear benefits for doing so, and there are no other breaking changes planned for the release. * Support an extended set of Node.js versions to the detriment of all other factors. We aim to maintain a healthy balance between backwards compatibility and toolchain modernization ### Rationale behind dropping support for old Node.js versions @@ -36,3 +36,7 @@ * No features are backported to older semver major branches * Critical bugfixes will be backported to older supported semver major branches * Security fixes will be backported to older supported semver major branches + +### Release calendar + +* There is a regular cadence of semver major releases (details TBD). However, if no breaking changes were introduced between the last semver major and the scheduled date of the release of the new one, the new semver major release is skipped. \ No newline at end of file