-
Notifications
You must be signed in to change notification settings - Fork 24
Express LTS strategy #199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Express LTS strategy #199
Changes from all commits
bf4133f
9b928ab
a9c3299
6c17050
06bf8eb
cdb1090
b0cb097
39cff08
b38d3f3
00f261b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| # Express LTS Strategy | ||
|
|
||
| ## Goals | ||
|
|
||
| * 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 | ||
| * 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. | ||
| * Prioritize "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 | ||
|
|
||
| * 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 open for adopting newer patterns and tooling | ||
|
|
||
| ### 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 | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this is the section I want us to discuss more deeply. Ideally we also put together a calendar view like Node does to see in comparison to Node majors how express majors would line up.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah! Having a calendar is one of the best ways to explain the rules for the end users, but currently is very solid 🙂
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we should make a diagram like node has, maybe even overlay our support over the existing node support schedules?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sure, but let's address this in a separate PR
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @wesleytodd @UlisesGascon I think @ljharb strongly objected to having a timed deprecation without a practical justification. We need to have this established unambiguously within the strategy. Do we or not do time schedule-based Node version deprecation?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Either way, but it seems easy enough to do it before merging ¯\_(ツ)_/¯
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @kibertoad if you get to it, awesome. If not, lets try and merge this before EOD so we can start those other PRs to clarify and expand.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. addressed. unless there are major outstanding objections to some of the wording, I would suggest merging it as-is and iterate in follow-up PRs. @wesleytodd Can I get push permissions for the repo?
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I agree and will merge now. I will also really quickly setup a committer team for this repo and add you.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. thanks! |
||
|
|
||
| * 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. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is great, thanks for capturing it |
||
| * 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 | ||
|
|
||
| * 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 | ||
wesleytodd marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| * 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. | ||
Uh oh!
There was an error while loading. Please reload this page.