Skip to content
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

API stability level «Locked» is inaccurate #6528

Closed
ChALkeR opened this issue May 2, 2016 · 22 comments
Closed

API stability level «Locked» is inaccurate #6528

ChALkeR opened this issue May 2, 2016 · 22 comments
Labels
doc Issues and PRs related to the documentations. meta Issues and PRs related to the general management of the project. module Issues and PRs related to the module subsystem.

Comments

@ChALkeR
Copy link
Member

ChALkeR commented May 2, 2016

Atm, these modules are listed in the documentation as being Locked: assert, modules, timers.

Update: assert was successfully unlocked in #11304. 🎉
Update: timers was successfully unlocked in #11580. 🎉

Locked is defined as:

Stability: 3 - Locked
Only fixes related to security, performance, or bug fixes will be accepted.
Please do not suggest API changes in this area; they will be refused.

Still we have those changes recently landed (~ 1 year):

And more proposed: #10282, #3384, #6165, #4550 (ok, the last two are not documented).

How Locked is defined does not fall in line with what's actually going on there. It looks more like stability level Stable should be used instead:

Stability: 2 - Stable
The API has proven satisfactory. Compatibility with the npm ecosystem
is a high priority, and will not be broken unless absolutely necessary.

Perhaps we should remove Locked stability level whatsoever?

/cc @nodejs/ctc

@ChALkeR ChALkeR added assert Issues and PRs related to the assert subsystem. doc Issues and PRs related to the documentations. module Issues and PRs related to the module subsystem. timers Issues and PRs related to the timers subsystem / setImmediate, setInterval, setTimeout. discuss Issues opened for discussions and feedbacks. labels May 2, 2016
@Fishrock123
Copy link
Contributor

This has been discussed before. As much as I don't like it, we kinda need to strongly signal we don't take much in terms of features so some modules.

Locked basically means: avoid PRing additions or breaking changes. (In a strong way.)

It's mostly to keep people from willy-nilly proposing anything.

@Fishrock123
Copy link
Contributor

That being said, timers is the least locked in the bunch, but we won't normally take features for it.

@Fishrock123 Fishrock123 added the meta Issues and PRs related to the general management of the project. label May 2, 2016
@ChALkeR
Copy link
Member Author

ChALkeR commented May 2, 2016

@Fishrock123 Well, it doesn't work. It should be either followed, reworded in the docs, or removed completely.

@Fishrock123
Copy link
Contributor

Only fixes related to security, performance, or bug fixes will be regularly accepted.
Please do not suggest API changes in this area; they will probably be refused.

@ChALkeR that wording work for you?

@jasnell
Copy link
Member

jasnell commented May 2, 2016

Only modifications related to security, performance, and bug fixes will be accepted.
Requests for new features or API changes will not be considered.

@ChALkeR
Copy link
Member Author

ChALkeR commented May 2, 2016

@jasnell For example, #639 was clearly a feature, and what's going on with module are API changes.

@a0viedo
Copy link
Member

a0viedo commented May 2, 2016

Rewording in order to reflect more accurately the current flow seems like an improvement for me. @nodejs/documentation

@dlongley
Copy link

dlongley commented May 3, 2016

I think making clear the actual purpose of "Locked" is a good idea. Is it as @Fishrock123 has proposed?:

It's mostly to keep people from willy-nilly proposing anything.

Has "Locked" had that affect vs. modules marked as "Stable"? Has anyone compiled any data on it?

It is a good idea to say that there can never be any improvements (additional features) added to a module? Is that better than saying such suggestions are strongly discouraged and likely to be ignored? Understanding the purpose of marking a module as a "Locked" (especially vs. "Stable") is important with respect to determining how/when it should be used and what documentation should go along with that label. What other systems go out of their way to make that differentiation -- and what has been the outcome?

@ChALkeR
Copy link
Member Author

ChALkeR commented May 3, 2016

@Fishrock123, @jasnell The issue here is that the description of the «Locked» API stability level is actually misleading, given what is actually going on.

New features (new methods, documented), new throws, behaviour changes — all of that has been recently landed to the modules that are «Locked» per the documentation.

It looks more like a form of «Very Stable» to me, but I have no idea yet of how should that be documented.

@Fishrock123
Copy link
Contributor

Fishrock123 commented May 3, 2016

Has "Locked" had that affect vs. modules marked as "Stable"?

Yes. We semi-regularly reject feature requests and/or major changes in those areas.

@ChALkeR
Copy link
Member Author

ChALkeR commented May 4, 2016

@Fishrock123 Even if it works that way, the feature requests and/or major changes that slip through are breaking user expectations there.

@trevnorris
Copy link
Contributor

Should just rename it to LockedUnlessOtherwiseDeemedNecessary

@MylesBorins
Copy link
Contributor

Considering this has come up a few times most recently in #3384 do you think it makes sense to bring this up with the ctc in the next meeting?

@silverwind
Copy link
Contributor

I'd say we should rephrase Locked slightly, if anything. Useful features like 6fc5e95 shouldn't be blocked through a policy like this.

@jasnell
Copy link
Member

jasnell commented May 17, 2016

To be honest I would personally like to see us revisit these levels entirely now that we have a solid LTS process in place. Technically, every API in an LTS release is Locked and the labels make very little sense there. In master, we should have the freedom to make the changes we collective feel are necessary to make while still erring on the side of being overly conservative. I'm not saying that we would get rid of the labels entirely, just that we should take a step back and reevaluate them.

@jkrems
Copy link
Contributor

jkrems commented May 26, 2016

@jasnell On the other hand: especially now that for many people (looking at us for example) there's at least one year where we don't see anything happening on master, having strict stability of certain APIs across LTS versions allows us to trust that we don't have to "rewrite" our apps for the next LTS of node. So far almost every node upgrade across major versions (0.8/0.10/various io.js/4) has been very smooth and only required some limited, straight-forward work ("method X was removed, it's now Y, do this to support both"). Allowing subtle changes to the module system between LTS versions will make upgrades a lot scarier.

@jasnell
Copy link
Member

jasnell commented Aug 5, 2016

Refs: #7964

@ChALkeR
Copy link
Member Author

ChALkeR commented Aug 6, 2016

@jasnell That doesn't say anything about the API stability levels or clarify what changes could be landed there, though.

@jasnell
Copy link
Member

jasnell commented Aug 6, 2016

I know, was just linking the issues. There's more that works need to be done

@ChALkeR
Copy link
Member Author

ChALkeR commented Feb 15, 2017

Status update: #11304 landed, assert is not Locked anymore.
Only module and timers are left.

@ChALkeR ChALkeR removed the assert Issues and PRs related to the assert subsystem. label Feb 15, 2017
@ChALkeR
Copy link
Member Author

ChALkeR commented Feb 15, 2017

Ah, for issue linking purposes: #11200 has the new discussion about changing the Locked description and/or unlocking the Locked API.

@ChALkeR ChALkeR removed timers Issues and PRs related to the timers subsystem / setImmediate, setInterval, setTimeout. discuss Issues opened for discussions and feedbacks. labels Mar 2, 2017
@Trott
Copy link
Member

Trott commented Mar 6, 2017

Fixed in 51cea05

@Trott Trott closed this as completed Mar 6, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
doc Issues and PRs related to the documentations. meta Issues and PRs related to the general management of the project. module Issues and PRs related to the module subsystem.
Projects
None yet
Development

No branches or pull requests

10 participants