-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Support vNalpha in protoxform and API boosting #9769
Comments
@mattklein123 I've started to look into this, and it gets pretty complicated, pretty quickly, when we have multiple alpha and major versions coexisting. For example, do we allow WDYT about moving to a model where we just have CC @envoyproxy/api-shepherds |
Sure that's fine, as long as we have some way of agreeing that a proto can be changed in a breaking way. The annotation approach has the benefit of also allowing automatic documentation production along these lines. |
I thought the plan was boosting What's the case for:
If there's a v3 message equivalent why there will be also a v3alpha message? |
@lizan imagine we are adding the cache filter today. It wants to go into I'm thinking what we really want is for these "alpha" protos to be part of the respective major version, just to be in a well documented "stuff might change" status. |
@htuch what blocks it to be |
Folks want to continue to add to the v2 API today, we will allow this for Q1. They also will want their v3alpha APIs to be part of v3 when they stabilize. |
It is totally fine to include a filter config from |
@lizan what if it references v3 core data types which also exist in v2? E.g. things in |
@htuch Hmm, it doesn't violate ODR since at implementation level they are all
What do you mean by "v3 base support"? If a management server want to serve this proto (regardless v2 or v3), it must already have generated v3 base protos? Or do you mean a management server with filling logics of existing v2 protos? |
I mean the management server is still using The basic problem we're trying to solve is that we want to allow some developer to add a new filter, e.g. cache, to the APIs today, without forcing management servers to have to move to v3 types (until EOQ1). The ODR aspect is not C++ ODR, instead it's https://github.com/envoyproxy/envoy/blob/master/api/API_VERSIONING.md#one-definition-rule-odr |
@htuch My take of that ODR is that doesn't apply over Any boundary, I think we discussed v3 Listener/HCM contains v2 filters case before as well, and that's one of the motivation of TypedStruct so each Any can be versioned differently. |
I think it's fine to allow v3 to be embedded in v2, but not to force the use of v3. Here's a few scenarios:
(4) starts to sound appealing when the limitations of (1)-(3) are considered. |
After the grace period that we still allow addition to v2 (Q2?), we won't allow either The question is whether we want to force management servers to become aware of any referenced v3 types in new extension config added during the grace period. |
OK, I will move ahead with the annotation. Re: awareness of v3 in the grace period, my main concern is over non-trivial protos. Things like metadata matchers etc. have a bunch of code generation behind them, so I think it could have big impact if we force this right away in order to consume new extensions. But, I think I'd be convinced either way on a case-by-case basis. It would be good to agree on a hard rule here. |
Did we make big changes between v2 and v3 for those types except packaging? I guess some sort of |
Yes, some management servers can do this, but I think we don't want to force that yet. Even if the changes are trivial, there's a lot of boiler plate in some languages (I think Go is one of the more problematic). |
As per envoyproxy/envoy#9769. Signed-off-by: Harvey Tuch <htuch@google.com>
We already started the clock deprecating v2 so I'm not keen to keep more compatibility during the grace period than we have to. For new extensions I'm inclined to have the config in v3(alpha) only and have management server do the wirecast for the new extension. |
As per envoyproxy/envoy#9769. Signed-off-by: Harvey Tuch <htuch@google.com>
This is the new style for indicating a file is WiP and subject to breaking changes. Rather than rely on alpha major versions, which are coarse grained and introduce migration difficulties for operators, we use a file-level annotation. Risk level: Low Testing: API/docs build, manual inspection of docs. Fixes envoyproxy#9769. Signed-off-by: Harvey Tuch <htuch@google.com>
@lizan current advice is to add to v2/v3 at the same time in https://github.com/envoyproxy/envoy/blob/master/api/STYLE.md#adding-an-extension-configuration-to-the-api. This is changeable, I'd like to get @mattklein123's take with his "think of the management server operators" hat on. |
For brand new extensions it probably doesn't matter, so I would just go with whatever is easiest. I don't have an issue with v2/v3 as long as we have the annotation in place that says we can change the protos and they are unstable. |
The issue of |
This is the new style for indicating a file is WiP and subject to breaking changes. Rather than rely on alpha major versions, which are coarse grained and introduce migration difficulties for operators, we use a file-level annotation. Risk level: Low Testing: API/docs build, manual inspection of docs. Fixes #9769. Signed-off-by: Lizan Zhou <lizan@tetrate.io> Co-authored-by: htuch <htuch@users.noreply.github.com>
Our current workflow only supports v3 major as a target version, but folks will be wanting to merge alpha APIs ASAP (both cache and Wasm). This issue tracks adding in the requisite support for this.
The text was updated successfully, but these errors were encountered: