For the last few years, we've released a new major-version in early January, using it to clear out our deprecations and notably to drop Python 2 (馃帀). This issue is to invite discussion, from @HypothesisWorks/hypothesis-python-contributors and anyone interested in the wider community, about both our next major version and our policy around them.
The next major version will remove or alter seven deprecated APIs, and change the calling convention of a further 46 functions to use keyword-only arguments (via @deprecated_posargs). In all cases these were either silently broken, or are older than our six-month minimum deprecation period and can therefore be removed. However, I would like to ship codemods to automate the update (#2705) for at least the kwonly args change before converting them to a hard error; likely meaning later in January.
I like our major version policy, even if semver under-specifies "breaking change" (I think we take this more seriously than many other libraries I use). An annual release cadence does suggest that calver might be a better choice, so I propose that we use pip-style "YY.minor.micro" versioning. Specifically, we would release version 21.0.0, remain semver-compliant, and clearly communicate age in libyears rather than giving an impression of API instability.
Thoughts?
Hi!
An annual release cadence does suggest that calver might be a better choice, so I propose that we use pip-style "YY.minor.micro" versioning.
I have some experience with calver as both user and maintainer and I want to share it.
The thing with An annual release cadence does suggest that calver might be a better choice is that this just happens to be the case right now and can be changed in the future.
Moreover, it has some clear disadvantages:
22.1.0 in 2024. pipenv is the most canonical example here.What is even more important is that switching to calver is not something that can be easily undone.
In my opinion, calver is a great thing for libraries like pytz or security-related ones or any other libs that need to indicate when they were released. Which is not the case for hypothesis IMHO.
Anyway, thanks for the opportunity to discuss it publicly! 馃憤
P.S. Happy holidays! 馃巺
Most helpful comment
Hi!
I have some experience with calver as both user and maintainer and I want to share it.
The thing with
An annual release cadence does suggest that calver might be a better choiceis that this just happens to be the case right now and can be changed in the future.Moreover, it has some clear disadvantages:
22.1.0in 2024.pipenvis the most canonical example here.What is even more important is that switching to calver is not something that can be easily undone.
In my opinion, calver is a great thing for libraries like
pytzor security-related ones or any other libs that need to indicate when they were released. Which is not the case forhypothesisIMHO.Anyway, thanks for the opportunity to discuss it publicly! 馃憤
P.S. Happy holidays! 馃巺