Skip to content

Remove support for Node 18 which is now EOL #1310

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

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Conversation

aomarks
Copy link
Member

@aomarks aomarks commented Apr 30, 2025

It's Node 18 EOL day! Also updates deps and CI image versions.

@aomarks aomarks requested a review from rictic April 30, 2025 16:02
end-of-life. Node 20 is now the oldest supported version. See
https://github.com/nodejs/Release#release-schedule.

Note we will no longer issue breaking semver increments for changes to
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure how I feel about that. Why?

Copy link
Member Author

@aomarks aomarks Apr 30, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure how I feel about that. Why?

Benefits of incrementing:

  • Users on unsupported versions of Node can continue using Wireit without interruption (which would be updating their Node or pinning their Wireit version).

Costs of incrementing:

  • Users are less likely to receive our bug fixes and security patches, because updating to a new major version is usually a manual action that users are slow to perform.

I also offer this principle (which I hold lightly):

If you are maintaining a Node project, you have the baseline responsibility to use a supported version of Node, just as you have a responsibility to use a supported version of your operating system. It should not be surprising that if you are using an unsupported version of Node, the dependencies you download from NPM might not work properly. If you're running an unsupported Node, you have the bigger problem of not getting security updates anymore, and it should not the responsibility of NPM package maintainers to help you defer doing that important update.


Thinking about alternative strategies...

Things we could do when a Node version becomes unsupported:

  1. Update the documented Node versions we support in the README.
  2. Increment the engines field in the package.json. (This warns, but doesn't block, users who are installing on older Node versions.)
  3. Stop testing the unsupported version in CI.
  4. Start using Node features not available in the unsupported version (this is of course what actually breaks users).
  5. Major increment our version.

Some strategies we could adopt:

A. 1-3 (this PR), 4 whenever we want
B. 1-5
C. 1+2, wait for a grace period (e.g. 3 months), then 3+4
D. Don't actually do anything (other than maybe 1) unless there is actually a new Node feature we want to start using, and in that case do 1-5.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good writeup of the options.

IMO, D makes a lot of sense to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants