-
Notifications
You must be signed in to change notification settings - Fork 5k
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
Please don't inaccurately call 1.0 a "stable release" #2961
Comments
I think this is an issue of semantics and I am inclined to agree with your sentiment. This is only stable in the sense that it is relatively more stable than the breaking changes introduced in beta38-onwards. It's obviously not perfect and as you said, there are issues fixed in the past half year that would indicate this not being stable. However, the API is arguably a lot "more stable" than the twists and turns that was introduced in beta38-onwards. Disclaimer: I had no hand in crafting the language of the 1.0 release, I am just happy that we are abandoning calling everything a betaX while making drastic API changes. Just offering my two-cents as a bystander. |
@adrianmcli Thanks for chipping in. However, web3 does not appear to be abandoning that practice. Starting with the release of 2.0.0-alpha, I'm anticipating a 2.0.0-alpha2, 2.0.0-alpha3, etc. with breaking changes likely between (for example) 2.0.0-alpha21 and 2.0.0-alpha22. It is an issue of semantics, specifically semantic versioning. In semantic versioning, a major version number increase does not need to mean stability. It only signifies that there are breaking changes from the prior version. Web3's insistence on conflating the two so strongly, when stability and major version number ought to be independent of each other, is causing the kinds of frustration that we saw with all the breaking changes in the 1.0.0-betaX series, and seriously harming the project. We still do not know why there is such a strong insistence on putting something out as a "1.0.0 stable release," though the insistence is strong enough to have thrown out semver in the first place and now holds up this PR, among other impacts. The insistence seems so strong that there might be a contract somewhere saying "@nivida gets €xxxxx (or a job retention/promotion or other result of value) if and only if a 'v1.0.0 stable release' of web3.js is published by date Y; this contract shall be strictly interpreted according to its text." It wouldn't be that unusual for a poorly worded funder milestone. Maybe there's some PR or marketing angle; maybe we'll never find out. If there's a good technical reason for calling this release "stable," it should be noted here in this discussion. It has breaking changes from 0.x, which is sufficient technical reason to call it 1.x, so that part isn't in question here. I think the decision of when to call a release stable should be a community decision based on technical merit, not an arbitrary decision contrary to available evidence imposed by someone who seems so strongly motivated by undisclosed factors that the project suffers from resulting decisions. |
From the semver standard and as this user echoes here: semver/semver#363 (comment), As for the standard, |
If this project were really following semver as outlined there so far, it wouldn't have gone through the 1.0.0-betaX series with all those breaking changes as it did. It might have gone with 0.21.0, 0.21.1, 0.22.0, etc. instead. Jumping directly to "well, we think we're in striking distance of 1.0, so we're going to abandon semver and just power through this beta series" was a mistake (driven by who knows what factors) that has had serious negative consequences for the project and its users. Now, a year later, how do we clean up from that mistake and move forward? We probably can't go from Doing a 1.x release could be a very helpful step back toward semver. While not necessarily 100% there, it's motion in the right direction. It would also be a lot better than just continuing on through the beta series, mixing major breaking changes in with minor backward-compatible patches. The text accompanying the release (e.g. "stable version") sends a much stronger signal than a number about whether or not the software should be considered stable. If it's not stable, as evidence indicates, it shouldn't be declared as such in the accompanying text. Because the semver number does carry that meaning for some people, the text should probably state very explicitly that it should not be considered the stable first release, "please stay tuned for that." |
Responding to @nivida's comment here (a more appropriate channel for this specific discussion point, and one where I am not locked out):
Splitting functionality between 1.0 and 2.0 version is fine, and not breaking existing DApps is a valuable goal. Doing this is absolutely still compatible with not inaccurately labeling a release as "stable." Please go ahead and call it 1.0.0 (or 1.2.0) and 2.0.0, and use semver from there, but just don't say "stable" in the release announcement when that is inaccurate. That's all this Issue is about. |
The rapid succession of betas that diverged more and more from the codebase As for the de/merits of a When shifting from alpha to beta, and definitely once deep in a beta cycle (and this is by common convention/sense more than anything else), ramping up the pace of breaking changes is a recipe for user confusion and project misdirection. If that's actually necessary, then brakes need to be applied and the trajectory recalculated. I think that's what happened in this case, though perhaps not quickly enough. michaelsbradleyjr/web3.js@comparing-v0.20.6...michaelsbradleyjr:comparing-v1.0.0-beta.37 That's a pretty massive set of changes spanning a long time. I didn't get started with web3 until July 2018, so I can't offer too informed an opinion on whether that change set represents a good candidate for a more thought out series of On the other hand, the team I'm part of has been heavily using The change set for the Assuming that |
@wbt I was the same meaning as you that beta.37 isn't stable. This was the topic of our discussions with the involved projects and active contributors for the last 3-4 months. I've removed the word stable from the coming release announcement and will call it v1.0. 2.0 got released as 2.0.0-alpha and will get patches in the next months until I've written down the spec for it and until we have jointly defined how the future API and architecture will be. |
Issue
As noted here:
And here:
This is that issue on GitHub, for focused discussion.
Calling the pending release 1.x seems appropriate based on there being major breaking changes from any 0.x version. Calling it stable just does not seem appropriate, seeing how unstable that code has been.
Why must "stable release" coincide with the breaking-changes version bump to 1.x? There does not appear to be any good technical reason for it, though there may be hidden other reasons that @nivida has so far consistently refused to elaborate on.
This issue proposes NOT calling the outcome of this PR a "stable" release. It's not really stable and there are good reasons why it was not put out as a stable release several months ago. Just call it the version number it's at (1.0 or 1.2 seeming most likely candidates) and continue patching/modifying that version with appropriate bumps in semver depending on what actually is changing. If/when the software reaches stability, have a discussion and make an announcement then.
The publicly available evidence is that the current version is not "stable" and by simply waiting for "the missing announcement" it'll be too late and damage will have been done by then. If there are good reasons to call it "stable," let's have that discussion here, before just putting it out there as an assertion of fact reached by one person's opinion or a small group's closed-door discussion.
The text was updated successfully, but these errors were encountered: