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

Implement resource minor/patch version scheme in stable API versioning proposal #8416

Open
htuch opened this issue Sep 27, 2019 · 8 comments
Assignees
Labels
api/v3 Major version release @ end of Q3 2019 no stalebot Disables stalebot from closing an issue

Comments

@htuch
Copy link
Member

htuch commented Sep 27, 2019

The basic idea is we maintain an annotation in the protos specifying minor version and some semantic hash of the proto contents. A bump of the minor version is forced when the hash changes by presubmit tooling. The minor version will be provided in DiscoveryRequests (while the major version is a part of the package/type name itself). See https://docs.google.com/document/d/1xeVvJ6KjFBkNjVspPbY_PwEDHC7XPi0J5p1SqUXcCl8/edit#heading=h.jlxlwbbptdag and https://docs.google.com/document/d/1xeVvJ6KjFBkNjVspPbY_PwEDHC7XPi0J5p1SqUXcCl8/edit#heading=h.9i8j2wwt08lg for further details.

This issue tracks finalizing the design and implementation and updating API_VERSIONING.md to reflect.

@htuch htuch added help wanted Needs help! api/v3 Major version release @ end of Q3 2019 labels Sep 27, 2019
@markdroth
Copy link
Contributor

Here's my off-the-cuff thought here, just to get discussion going:

It's not entirely clear to me that it makes sense to bump the minor version whenever the protos change. WIth that approach, the minor version number will be constantly incrementing to the point where it will basically be meaningless, because no one will remember which feature corresponds to which version. I think client features are a lot easier to reason about and understand, and they can be applied only when needed (typically when a newer field replaces an older one, as opposed to adding something completely new).

@mattklein123
Copy link
Member

@markdroth I'm going to do a straw proposal in a doc and will send it around next week for discussion. Agree on your general sentiment above.

@markdroth
Copy link
Contributor

@mattklein123 Sounds good -- I'll look forward to seeing it.

@mattklein123 mattklein123 self-assigned this May 1, 2020
@mattklein123 mattklein123 added this to the 1.15.0 milestone May 1, 2020
@mattklein123
Copy link
Member

Short straw proposal here: https://docs.google.com/document/d/1afQ9wthJxofwOMCAle8qF-ckEfNWUuWtxbmdhxji0sI/edit# cc @envoyproxy/api-shepherds @alyssawilk

@mattklein123
Copy link
Member

Doc has been heavily edited based on initial comments. I think it's ready now for wider review. PTAL.

@mattklein123 mattklein123 changed the title Implement minor version scheme in stable API versioning proposal Implement minor/patch version scheme in stable API versioning proposal May 15, 2020
@mattklein123 mattklein123 changed the title Implement minor/patch version scheme in stable API versioning proposal Implement resource minor/patch version scheme in stable API versioning proposal Jun 2, 2020
@mattklein123
Copy link
Member

Hi all,

The doc has been edited again to a hopefully near final statement. The salient points here are:

  1. Yearly minor version API release alongside the Q1 Envoy release.
  2. 1 year deprecation window for fields (this means that a deprecated field will be implemented in the code base for 1 - 2 years depending on deprecation time).
  3. Fatal by default is not part of this proposal. Envoy will still implement it on a 6 month clock as it does today. It will be possible to completely disable this functionality via CLI/runtime flag (not just for individual deprecations) which may be desirable for some CPaaS deployments.

Thank you!

@mattklein123 mattklein123 modified the milestones: 1.15.0, 1.16.0 Jun 24, 2020
@mattklein123
Copy link
Member

I haven't received any further comments on this proposal so I think we can consider this approved. I will be working with @htuch to figure out when this will be implemented (likely Q4).

@mattklein123 mattklein123 assigned htuch and unassigned mattklein123 Sep 13, 2020
@mattklein123 mattklein123 modified the milestones: 1.16.0, 1.17.0 Oct 4, 2020
@htuch htuch added no stalebot Disables stalebot from closing an issue and removed help wanted Needs help! labels Nov 13, 2020
@htuch htuch removed their assignment Nov 13, 2020
@htuch
Copy link
Member Author

htuch commented Nov 13, 2020

Assigning to @adisuissa who is working on this.

htuch pushed a commit that referenced this issue Mar 16, 2021
This PR adds the API_VERSION to Envoy, and the api version handling class to fetch the latest and oldest supported API versions by Envoy.
This is the first step in implementing the proposal in: #8416.

Risk Level: Low (no usage in the code).
Testing: Unit tests.
Docs Changes: None.
Release Notes: None.
Platform Specific Features: None.

Signed-off-by: Adi Suissa-Peleg <adip@google.com>
@mattklein123 mattklein123 modified the milestones: 1.18.0, 1.19.0 Apr 25, 2021
@mattklein123 mattklein123 modified the milestones: 1.19.0, 1.20.0 Jul 7, 2021
@alyssawilk alyssawilk modified the milestones: 1.20.0, 1.21.0 Oct 4, 2021
@alyssawilk alyssawilk modified the milestones: 1.21.0, 1.22.0 Jan 10, 2022
@mattklein123 mattklein123 removed this from the 1.22.0 milestone Apr 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api/v3 Major version release @ end of Q3 2019 no stalebot Disables stalebot from closing an issue
Projects
None yet
Development

No branches or pull requests

5 participants