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

Switch to CalVer and set a release cadence #5324

Merged
merged 2 commits into from
Apr 23, 2018

Conversation

dstufft
Copy link
Member

@dstufft dstufft commented Apr 22, 2018

This switches us over to using a CalVer based version string as well as setting a 3 month release cadence.

The version strings will be YY.N, where YY is the two digit year, and N is the serial number of the release within that year. Given our release cadence, that means that (pretending we had used this scheme all along) the versions for 2018 would look like:

Month Version
Jan 18.0
Apr 18.1
Jul 18.2
Oct 18.3

These months were chosen largely to try and avoid the major holidays in the Nov/Dec months. The documented policy is also that if there are no changes made to the master branch that need to be released, that month is simply skipped and the next release will be in the release month (so if nothing is to be released on April, then the next release will be in July).

If we need to make any bug fixes to an already released version, then we would add a bug fix version number, like 18.0.1, 18.0.2, etc.

Since we're starting part way through the year, our first release with this scheme would be in July, and would be 18.0.

This pull request also adds a new type of news file fragments for process changes. I doubt we'll use them very much but it will let us call out process changes at the very top of our news file. Just naming a file <whatever>.process will let you do that. Since these generally won't have issue numbers, issue numbers will be hidden for them, so you can name them whatever you want (recommend a short, human recognizable string).

Thoughts @pypa/pip-committers ?

@dstufft dstufft added kind: workaround Is a workaround for a problem and removed kind: workaround Is a workaround for a problem labels Apr 22, 2018
@pfmoore
Copy link
Member

pfmoore commented Apr 22, 2018

+1

A very minor question - given that we're currently at 10.0, switching to 18.0 isn't visually very different. Would there be any value in going to 2018.0, 2018.1, ... instead?

One other thing, I'd quite like to formally document that we must ensure that master is in a releasable state at all times, and that we explicitly don't follow any "only break things in major releases" policy (if we're breaking a documented behaviour, we will deprecate for a minimum of 1 release, more at our discretion, and if something's not documented, then all bets are off). But I'll produce a follow-up PR adding that to the docs, so it doesn't need to go in here.

(We might also want to think about how the ReadTheDocs builds are named - "latest" and "stable" don't really make sense with CalVer. I don't know what options RTD offer, but again I'll look into that separately).

@dstufft
Copy link
Member Author

dstufft commented Apr 22, 2018

@pfmoore I don't have a strong preference for YYYY vs YY. I've historically done YY and that seems to be the most common method of doing it. I think either option is perfectly fine, so I'm happy to switch to YYYY if that's what folks want.

I don't think there are any options besides latest and stable, but latest corresponds to the master branch, and stable is whatever was released last.

@pfmoore
Copy link
Member

pfmoore commented Apr 22, 2018

I'm happy to stick with what everyone else is doing, tbh.

Yeah, latest as "in master, what's coming in the next release" and stable as "the current release" seems fine to me. I think I was just confusing myself thinking about semver major/minor distinctions :-)

@pradyunsg pradyunsg added the type: maintenance Related to Development and Maintenance Processes label Apr 23, 2018
@pradyunsg
Copy link
Member

This looks good to me -- other than the specifics of our deprecation policies which @pfmoore will be adding in a follow up PR.

@dstufft dstufft merged commit e270062 into pypa:master Apr 23, 2018
@dstufft dstufft deleted the calver-and-release-cadence branch April 23, 2018 11:15
@pradyunsg
Copy link
Member

I've gone ahead and taken the liberty of updating our next milestone to be 18.0 and set a due date of 2nd July (it's the first Monday) for it.

Feel free to call out if that doesn't seem right. :)

@pfmoore
Copy link
Member

pfmoore commented Apr 24, 2018

Added deprecation policy and some other bits in #5328 as noted above

@ssbarnea
Copy link
Contributor

ssbarnea commented Jun 5, 2018

At least I am glad that you didn't pick the YYYY version as it saves me a lot of keystrokes.... on the other hand it could have being much much worse, like adopting a full ISO-8601 versioning ;)

Considering pip popularity, keeping it two digits saved few trees, avoiding extra energy consumption caused by the longer strings. 🌳

@vaindil
Copy link

vaindil commented Jul 23, 2018

Why was this change made? What's wrong with semver? (I'm not trying to start a debate, I just haven't found any reasoning for this change anywhere.) Are the discussions that led to this change available anywhere for users to read?

@lock
Copy link

lock bot commented Jun 2, 2019

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@lock lock bot added the auto-locked Outdated issues that have been locked by automation label Jun 2, 2019
@lock lock bot locked as resolved and limited conversation to collaborators Jun 2, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
auto-locked Outdated issues that have been locked by automation type: maintenance Related to Development and Maintenance Processes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants