Skip to content

Commit 664d949

Browse files
kibertoadIgor Savinwesleytoddljharb
authored
Express LTS strategy (#199)
* first draft * Update docs/LTS-strategy.md Co-authored-by: Wes Todd <[email protected]> * Update docs/LTS-strategy.md Co-authored-by: Wes Todd <[email protected]> * Update docs/LTS-strategy.md Co-authored-by: Wes Todd <[email protected]> * Update docs/LTS-strategy.md Co-authored-by: Jordan Harband <[email protected]> * Update docs/LTS-strategy.md Co-authored-by: Wes Todd <[email protected]> * Improve wording * Update docs/LTS-strategy.md Co-authored-by: Jordan Harband <[email protected]> * Add clarity on regular semver major cadence --------- Co-authored-by: Igor Savin <[email protected]> Co-authored-by: Wes Todd <[email protected]> Co-authored-by: Jordan Harband <[email protected]>
1 parent e2995a0 commit 664d949

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

docs/LTS-strategy.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Express LTS Strategy
2+
3+
## Goals
4+
5+
* Maintain strict Node.js version support within a single Express major release
6+
* Provide good experience for users who want to keep their Express projects that up-to-date
7+
* Avoid stagnation and blocking innovation that is good for the end users
8+
* Ensure good ergonomics and developer experience for Express maintainers
9+
10+
## Non-Goals
11+
12+
* Only support the active LTS releases of Node.js
13+
* 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.
14+
* Prioritize "support older Node.js versions" over other factors. We aim to maintain a healthy balance between backwards compatibility and toolchain modernization
15+
16+
### Rationale behind dropping support for old Node.js versions
17+
18+
* Avoid blocking Node.js core from making progress and removing deprecated parts of the codebase
19+
* Avoid getting outdated bug reports or security issues
20+
* Keep options open for adopting newer patterns and tooling
21+
22+
### Rationale behind conservative policy of breaking changes
23+
24+
* Minimize disruption for end users
25+
* Be mindful of the fact that some users are still running obsolete versions of Node in production
26+
27+
### Guidelines for dropping support of Node.js versions
28+
29+
* 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.
30+
* 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.
31+
* Any discontinuation of a Node.js version support is always a semver major release.
32+
33+
### Active branches
34+
35+
* Several semver major branches will be maintained at the same time while we have overlapping supported versions
36+
* No features are backported to older semver major branches
37+
* Critical bugfixes will be backported to older supported semver major branches
38+
* Security fixes will be backported to older supported semver major branches
39+
40+
### Release calendar
41+
42+
* 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.

0 commit comments

Comments
 (0)