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

📖 Document our versioning and guarantees in contributing guide #5464

Merged
merged 1 commit into from
Oct 22, 2021

Conversation

vincepri
Copy link
Member

This changeset also completely removes the outdated VERSIONING.md
document.

Signed-off-by: Vince Prignano vincepri@vmware.com

What this PR does / why we need it:

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #5459

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Oct 20, 2021
@vincepri
Copy link
Member Author

/hold for community meeting

@k8s-ci-robot k8s-ci-robot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 20, 2021
@k8s-ci-robot k8s-ci-robot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Oct 20, 2021
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
@vincepri vincepri force-pushed the contributing-versioning branch 2 times, most recently from 76d4ba0 to 16c7cad Compare October 20, 2021 17:52
@CecileRobertMichon
Copy link
Contributor

TODO: define release cadence

@vincepri vincepri force-pushed the contributing-versioning branch 3 times, most recently from 49bb4cd to 32c1e92 Compare October 20, 2021 18:55
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
Copy link
Member

@sbueringer sbueringer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall sounds great. Thx for pushing this forward.

I have a few - mostly clarifying - questions.

CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
CONTRIBUTING.md Show resolved Hide resolved
CONTRIBUTING.md Outdated Show resolved Hide resolved
@vincepri vincepri force-pushed the contributing-versioning branch 5 times, most recently from 6a89e61 to 28ccc5b Compare October 21, 2021 16:08
- Compatible API changes like field additions, deprecation notices, etc.
- Breaking API changes for deprecated APIs, fields, or code.
- Features, promotion or removal of feature gates.
- And more!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than say "And more!" why don't we say something like "everything that may be included in a patch release", to make it clear that the types of changes in minor releases are inclusive of the types of changes in patch releases.

I would also vote to put the description of patch releases first in this document flow, as it's the most common release type, and to use a common presentation mode (I like heading A (*minor*) release CAN include: followed by a bullet point of change types).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added the last line on purpose to signal that the list isn't meant to be final or exhaustive, there could be any number of code changes additions etc, see #5464 (comment)


These guarantees extend to all code exposed in our Go Module, including
*types from dependencies in public APIs*.
Types and functions not in public APIs are not considered part of the guarantee.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain a little bit more about this. Are we saying "just because we expose a code object as exportable (i.e., begins with a capital letter) in a library doesn't mean it will never mutate in a future version" ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can rephrase it, this was there before in the contributing guide, I added some context #5464 (comment). Regarding the last line, it refers to unexported code, or everything that's in an internal package

CONTRIBUTING.md Outdated

#### Backporting

We only accept backports of critical bugs, security issues, or bugs without easy workarounds to the most recent release branch related to a stable API.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So we are essentially defining our version support policy as "one minor release". If so, I think we want to make that very clear, perhaps a section for just that (it's an important policy for folks to understand!)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's more than just one minor, it's the set of minor releases related to an API version as defined in the previous section, how would you like me to reword it? (I agree it might be confusing)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it's hard. If we're already stating that in the previous section, can we simply omit the "to the most recent release branch related to a stable API" part? If we want to be super explicit about how this works, we might need to provide some concrete examples.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep that works for me

This changeset also completely removes the outdated VERSIONING.md
document.

Signed-off-by: Vince Prignano <vincepri@vmware.com>
@fabriziopandini
Copy link
Member

fabriziopandini commented Oct 22, 2021

/lgtm
This is a great improvement and it addresses the main questions we got after graduation.
The direction is clear, and we can always add more details/clarify corner cases in follow up iteration if required

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Oct 22, 2021
| **v1alpha3** | release-0.3 | 2022-02-23 |

- The API version is determined from the GroupVersion defined in the top-level `api/` package.
- The EOL date is determined from the last release available once a new API version is published.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there already a rule how the EOL is calculated, i.e. how long after "the last release available once a new API version is published"?

But we don't have to solve that on this PR.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We haven't calculated EOL dates before, this is a new rule that we ~discussed in one of the last community meetings. We're doing 6 months on the above because of alpha APIs, but we might want to do longer given the promotion to beta.

@sbueringer
Copy link
Member

/lgtm

I agree with Fabrizio, it's a huge improvement. There will always be edge cases and we can clarify them later on or decide on a case-by-case basis.

@vincepri
Copy link
Member Author

/hold cancel

@k8s-ci-robot k8s-ci-robot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Oct 22, 2021
@CecileRobertMichon
Copy link
Contributor

/lgtm
/approve

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: CecileRobertMichon

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 22, 2021
@k8s-ci-robot k8s-ci-robot merged commit af8793d into kubernetes-sigs:main Oct 22, 2021
@k8s-ci-robot k8s-ci-robot added this to the v0.4 milestone Oct 22, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update Versioning policy in the docs
8 participants