-
Notifications
You must be signed in to change notification settings - Fork 15
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
clarify release support #88
Conversation
I was actually just about to post a similar item but would like to draw attention to protobuf/API versioning in general as various umbrella projects under OpenConfig are inconsistent and propose a more cohesive approach to this gNSI
gNOI
gNMI
gRIBI
Now, some request for comments here as there are multiple approaches (some of which are more friendly to transition paths than others)
|
Also note, that it appears the release numbering is now also misaligned w/ the proto versioning (release 1.2.1 vs. proto 1.2.0) https://github.com/openconfig/gnsi/releases/tag/v1.2.1 IMO a release that fixes something like stub regen should be a patch build off 1.2.0 (e.g. 1.2.0-20230605.00) |
Thanks for the comments! A version name is needed in the package so a client can support multiple major versions simultaneously. This means the packages need to have different names. Clients are expected to carry this burden so a given gNSI server will only need to support a single version. In a large network, there will be many devices with multiple vendors and some rollout strategy that results in different g* services versions running on different devices. So the client needs to take on this burden. It's a good idea to consider using a semver build annotation if code regeneration is updated and the proto file is not changed. But probably we should endeavor to update the proto and generated code together in one release so we don't need this extra annotation. I'll put together a bigger proposal to make the versioning strategy consistent across the g* services and share in the near future. |
Having the version in the package name is imo a good thing but one that has not been seen in any OpenConfig API work to date (common in many other gRPC/HTTP APIs). Essentially when the package name is altered, you can consider this an entirely new specification for the API + endpoint. In theory, you could not even consider the previous version however a protocol should be put in place of what is actually allowed/disallowed between say v1 -> v2 of a set of service specifications (e.g. being mindful of a transition path for the client + server)
Agreed and this applies directly to my last comment where the release was updated to 1.2.1 diverging the proto IDL/specifications
Thx - a few considerations worth noting
|
* clarify release support * trim whitespace
This update is in response to requests for clarification on expectations for versioning of a gNSI server.