-
Notifications
You must be signed in to change notification settings - Fork 517
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
Replace gogo protobuf with golang protobuf #213
Comments
It's certainly possible. The idea was to wait for the next-generation golang/protobuf v2 which is expected before the end of the year. Presumably, that would solve our performance issues that motivated the choice of gogo/protobuf. We don't have resources to have two forks, one for gogo and another for golang. So the change is going to be breaking, and it needs to be done with care. Since golang/protobuf v2 will also break compatibility, we don't want to go through two breaking changes at once. |
What is the resource issue for supporting two separate servers; one for gogo and another for golang? For a new project without compatibility issue, and can only support golang/protobuf, it can start to use golang one. For Istio, it can stay with gogo one. |
If you want to help, we can create a branch for goproto here, and convert all code to use goproto there. This can stay non-default until goproto v2 lands. |
I can work on this. I'll fork it, fix any incompatibilities, and then make a PR to a new branch. |
Awesome. You can use bazel to copy generated files from Envoy submodule if you prefer. We can call the branch "goproto" once it is ready. |
I'm not sure if bazel building and copying would work well. Looking through the data-plane-api, some build files are missing the Would you recommend using bazel, or modify the |
I'm perfectly happy with |
Hi Kuat, I have most of the code converted over to use goproto instead of gogoproto. This is viewable on my fork. However, I'm having trouble with Any ideas why the generation isn't done? This is causing the unit tests in
Note that I generate the protos with my local workspace, since the docker image in |
I'm not sure why protoc-gen-validate fails here. Maybe try using the same pinned version that is picked in this repo? Alternatively, there's some debugging log that you could get out of protoc-gen-validate (https://github.com/envoyproxy/protoc-gen-validate/blob/master/vendor/github.com/lyft/protoc-gen-star/debug.go). |
Thanks for the response! Turns out it was a version issue with protoc-gen-validate. I reset protoc-gen-validate to commit |
Branch https://github.com/envoyproxy/go-control-plane/tree/v2 is ready. @nareddyt can you take a glance to see if everything is alright? |
I took a quick look, LGTM. I'll take a deeper look tomorrow. As we discussed offline, we will have to create seperate imports for GRPC services. For example, |
Sure. |
I'm not org admin, @envoyproxy/admins |
@kyessenov what is your plan exactly? Don't you want to auto-commit to master from Envoy CI? |
Yes, I do. I just want to prevent human commits to the branch. I thought that granting admin access to whoever authors the automated PRs (a bot?) to v2 branch would be sufficient. |
A random thought, can we name that branch differently? “v2” is confusing enough since we will start Envoy API v3alpha, v3 etc very soon. |
After thinking a bit more, I think we should just pull the plug and merge golang protobuf into master and drop "v2" from module name. This is less complicated than what I had in mind. There's just no nice way to go about it given that:
So let's keep it at v0.x.y, not v2, and make breaking changes when it simplifies things. |
Just a few concerns with merging into master:
|
Version number 0 does not follow semantic versioning. There is no promise of compatibility between minor/patch updates in v0.
Yes, but the performance requirements are not as stringent in istio as they used to be. We're not using xDS on the data path, so the main concern is memory/cpu cost in the control plane. It's difficult to evaluate that without making the transition. Longer term, istio is looking to move to standard protos. I think we can keep gogo branch around in case it takes longer to make the switch, but that would be a dead end and manually maintained. |
Certain environments can only use golang protobuf. This repo is using gogo which blocks its adaptions in these environments.
What does it take to replace gogo proto with golang proto?
The text was updated successfully, but these errors were encountered: