-
Notifications
You must be signed in to change notification settings - Fork 73
updates engines field to required minimum version #272
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
base: main
Are you sure you want to change the base?
Conversation
jpw
commented
Jul 30, 2025
Thinking some more, it is implied/expected that using e.g. 20 means the latest version of 20... If we want to be explicit, then I'll update the docs to reflect the patch level compatibility required. |
It does seem implied (to me at least) that we assume the latest of each major version. If not, it seems like we'd need to dramatically increase the test matrix. It makes sense to me to be explicit in the package for this type of case, and in the docs so people know the expectation. |
Hello! @jpw Is the plan to release v5.0.0 after this? I'm not necessarily against this change but, to be honest, that's not how I've interpreted it in the past. To me, requiring version 20 means... any version of node JS equal or greater than 20.0.0. We acknowledge that people can run software on platforms that they don't always control, and not everyone is as lucky as we are in that we have a choice of well supported platforms where to run their stuff. There might be reasons why they are not running the very latest (as @jpw's snippet clearly shows). It has always been our policy that we consider upgrading the requirements a breaking change (so in the past, releasing this would require the release of pa11y-ci 5.0.0), precisely to avoid causing breakage on dependants as it has just happened to us. I was curious why these packages would request 20.18.1 or greater as it's a very odd and specific version to request. Apparently there are several critical vulnerabilities that were being actively exploited in the wild that were patched in that version. Apparently when
I think it's unfortunate that we didn't catch this in time before releasing 4.0.0, but if we're not planning to release v5.0.0 immediately this goes against our established policy. I also personally think that it would not be fair on users of pa11y. If we want to establish this as a new policy, fair enough, but it should probably be documented somewhere. |
Thanks @josebolos and @aarongoldenthal - good points! I've updated the PR to add a top limit to the semver range, to explicitly include what we currently test against: 20 - 24. I've also converted the PR to a draft, while we discuss further. My thoughts:
Do we think this is important enough to release soon, or should we wait until there are more changes worthy of a major version release? |
I took a look at the Node release docs to see if they were clear on what they supported under the banner of LTS, but they really aren't and I can see why people have different interpretations. One thing I've noted before is that they do transition a version from Current to LTS with a specific release, so you can see v20.9.0 was the start of LTS for Node 20, v22.11.0 was the start for Node 22, etc. That's probably why I think of LTS really being the latest for that major version, but I can certainly also see the other side. It does seems like in either case we should be specific in engine compatibility to avoid confusion. With that, I wonder if we need to go even further than I wonder if one option as a short-term fix without another major release, and to give time to sort this out, is to revert back to |
Yeah, the way the Node.js project managed LTS versions is bizarre because I don't know any other projects that work in that way. If a project decides that version X is going to be LTS, it's usually from the get go so every version including To be honest we decided to support only LTS versions of node on this project because it became quite clear very early that there was no capacity, and no benefit on having to update supported versions every time a new one is released every 6 months. We made this decision based on how every other open source project manages LTS versions but the fact that Node manages this in a slightly different and, to be honest, unnecessarily confusing way hasn't been much of a problem until now. I'm a fan of keeping things as simple as possible so I think that downgrading undici is probably the simplest and therefore best option. |
As @aarongoldenthal says, we use False positives from security tools are unwelcome noise (
I think so too, looks like we are all agreed! I will prepare a release. |