jashkenas / underscore

JavaScript's utility _ belt
https://underscorejs.org
MIT License
27.3k stars 5.53k forks source link

Clarification on "-x" releases #2926

Closed pranayCodes closed 3 years ago

pranayCodes commented 3 years ago

Hi Team - while working on a side project, I noticed the presence of a "-x" release for the 1.13.0 version. I was checking the semvar standards and these seemed like patch releases, however, these tags were released prior to the major release - which is causing some confusion.

Is this something that underscore is going to follow as a standard? Are theses beta/ alpha releases?

Would love some clarity on this.

jgonggrijp commented 3 years ago

Hi @pranayCodes, thanks for reaching out. The part after the hyphen is the prerelease number. You can think of it as a beta or preview release. Prereleases are described in article 9 of the semver specification. "Patch" refers to the third portion in the main number, so 0 in 1.13.0.

In case of doubt about order, you can always refer to the change log, which is ordered by release date. Also, installing underscore@latest from npm should generally be safe (or underscore@stable if you only want versions that have already stood the test of time).

1.13.0-0, 1.13.0-1, 1.13.0-2 and 1.13.0-3 were all prereleases that I published to NPM under the @preview tag. When I made the final 1.13.0 release, I removed that tag again. I chose this approach because I planned to introduce the exports field in the package.json, which had the potential to break many things (see #2914 for further details). The @preview releases allowed me to recruit people to do beta testing, while ensuring that only people who explicitly opted in would install these versions.

The default versioning approach for Underscore is still just to do major.minor.patch. There is no plan to make prereleases a standard procedure. That said, I might do it again when I have a tricky feature that I feel needs beta testing by a wider audience. #2908 might be a candidate for that at some point.

I hope this answered your questions sufficiently. I'll close the issue now, but please feel free to comment again.

pranayCodes commented 3 years ago

Thank you @jgonggrijp - that does answer my question. Appreciate the quick turnaround.