-
Notifications
You must be signed in to change notification settings - Fork 18
Add policy to align engines fields with ci #289
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: master
Are you sure you want to change the base?
Conversation
UlisesGascon
commented
Oct 22, 2024
•
edited
Loading
edited
- closes: Discussion: Using engines in the package.json #286
- related: Re-thinking the discussion process #285
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
we need a note in here about the possibility of continuing to run CI in older unsupported node versions so we know if/when a change clearly breaks back-compat. (we do this for express itself, for example) I'll try to come up with good wording for this |
ping @ctcpip |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While I have general concerns about the decision here, I would much prefer this decision over the current state. The only thing I think is missing is the call-out that all more restrictive engines changes can only land with a MAJOR. And that we agreed major versions should not be cut just to change node support.
This means that this policy will take a while to roll out. I do not consider this blocking to merge this ADR, but I think it is something we had agreed on in a few discussions so just wanted to call it out since I didn't see it mentioned in the text of the ADR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As mentioned in jshttp/content-disposition#79 (comment), this proposal doesn’t cover what happens when the engines is incorrect or needs to be added for the first time. I don’t think that belongs in this ADR specifically since it’s about versioning itself vs engines, but it would help to clarify how engines impacts versioning. I.e. if we are clarifying an existing engines support, is it a breaking change?
If we’re releasing majors for only engines changes, this doubles maintenance overhead if there happens to be any issues that need to be back ported to the version with and without engines.
I can think of two options here:
- Consider fixing the engines field a non-major change (it’s a fix after all)
- Document the process of adding it to the “next major”
IIRC we discussed that adjusting engines itself should not be a reason to do a major release, but I can’t recall where that conversation is now.
If a thing worked before, and stops working, it's a breaking change. Adding |
Fair, and that’s a strict take. If you have code that only runs on node 20+ or already has dependencies that restrict engines to node 20+ it seems like it should be safe to add engines documenting this. That’s why the other option I see is deleting engines when it’s wrong. Or are you saying that’s also a breaking change to also remove engines here? |
I think the pragmatic thing is to see the If the description is out of sync with reality then either reality has to adapt to the description or the other way around. If the change of the Bug fixes are always breaking for those reliant on the bugged behavior and it's always a balance of factors where it's primarily a fix or a breaking change. |
Removing |
It’s not, but it’s less desirable to try and release new major versions to fix the supported version range. @voxpelli I agree, it’s the main point of contention. We need to document this somewhere. |