-
Notifications
You must be signed in to change notification settings - Fork 71
Cleanup for pull requests and versioning policy. #49
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
Changes from 4 commits
fa6f394
97a6f8a
e627724
366bd1b
874b281
363a881
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
*Issue #, if available:* | ||
|
||
*Description of changes:* | ||
|
||
|
||
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,18 +2,30 @@ | |
Versioning Policy | ||
***************** | ||
|
||
We will use a three-part X.Y.Z (Major.Minor.Patch) versioning definition with the following meanings. | ||
We use a three-part X.Y.Z (Major.Minor.Patch) versioning definition as follows: | ||
|
||
* X (Major) version changes cover changes to the code-base that are expected to break backwards compatibility. | ||
* Y (Minor) version changes cover moderate changes. These include significant (non-breaking) feature additions and might contain changes which break backwards compatability. If there are breaking changes, they will be explicitly stated in the release notes. | ||
* Z (Patch) version changes cover small changes. They will not break backwards compatibility. | ||
* **X (Major)** version changes are significant and expected to break backwards compatibility. | ||
* **Y (Minor)** version changes are moderate changes. These include: | ||
|
||
* Significant non-breaking feature additions. | ||
* Potentially backwards incompatible changes. Any such changes will be explicitly stated in the release notes. | ||
* Changes to our package's declared dependency versions. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Just to be explicit. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the old language, there's a few changes since. The newest version is:
Is that clear enough or would you still prefer changes? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we do a minor rev on patch changes to dependencies? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Under this contract, yes. That seems sensible to me for the following reasons:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Following on from this morning's discussion, if we want to start being more prescriptive about our stated support for max versions as well, then I think what we're wanting to convey here is that we will minor version bump on two events:
Though in writing that up, I remembered that Maven only supports explicit version statements, not ranges... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
If we do, then why wouldn't we change the minor version if we change our max supported version of a dependency? That's a change to what we support that can cause integration work for customers, if we need to (for example) pin to an earlier version of a library pending a fix. All of these cases seem to me like they still fall cleanly under "Any change to the version of a dependency.", which is also language/platform/packaging system-agnostic. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What I worry about there is the different release cultures that different languages have and how that will affect the versioning we advertise. If we assume the dependency releases are rare, then sure, any changes to advertised support for dependency versions should be fine. But if dependency releases are frequent and we want to be explicit about what dependency versions we support, I worry that bumping the minor version every time that advertised support set changes will result in our minor version changes becoming frequent events, and in turn making it more difficult for consumers of our libraries to keep up to date. I guess this also stems from the very different ways that dependency versions are handled in different languages and distribution systems. For cases like Maven where we explicitly state the version we expect, the relationship is necessarily much different than cases like common PyPI usage where we instead state a closure of versions that we expect to work. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No more concerns from me! |
||
|
||
* **Z (Patch)** version changes are small changes. These changes will not break backwards compatibility. | ||
|
||
* Where possible, we will advise of upcoming breaking changes with warnings in a Z release. | ||
|
||
What this means for you | ||
======================= | ||
|
||
We definitely recommend always running on the most recent version of our code. This is how we recommend doing so. | ||
We recommend running the most recent version. Here are our suggestions for managing updates: | ||
|
||
* Expect X changes to require effort to incorporate. | ||
* Expect Y changes not to require significant effort to incorporate. | ||
|
||
* If you have good unit and integration tests, these changes are generally safe to pick up automatically. | ||
|
||
* Expect Z changes not to require changes to your code. Z changes are intended to be picked up automatically. | ||
|
||
* X changes will likely require dedicated time and work to incorporate into your code-base. | ||
* Y changes are unlikely to require significant (or any) work to incorporate. If you have good unit and integration tests, they can likely be picked up in an automated manner. | ||
* Z changes should not require any changes to your code and can be picked up in an automated manner. (Good unit and integration tests are always recommended.) | ||
* Good unit and integration tests are always recommended. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be good to explicitly differentiate these breaking changes from the breaking changes for which we will introduce major changes.
Maybe
Less significant but backwards incompatible changes
?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The current language, after review/discussion with @juneb is:
My small pushback is that minor changes are already described as "moderate", less significant than X changes, just above. Reiterating that in the bullets adds grok friction; if it's meaningfully clearer/more explicit I'm cool with that, though.
My goal is to keep this as quick and easy to understand as possible for customers.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fair enough. I think when I got into the inner bullet points my brain lost context that we had already stated that they were moderate changes.