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

Migrate away from gogo #3119

Open
AndreasBergmeier6176 opened this issue Sep 16, 2022 · 7 comments · May be fixed by #4422
Open

Migrate away from gogo #3119

AndreasBergmeier6176 opened this issue Sep 16, 2022 · 7 comments · May be fixed by #4422

Comments

@AndreasBergmeier6176
Copy link

Since gogo/protobuf is no longer maintained it might make sense to start migrating away from it.

See gogo/googleapis#19 (comment)

@jedevc
Copy link
Member

jedevc commented Oct 11, 2022

Since this would likely be such a breaking change, I wonder if we should save this for if/when we hit buildkit 1.0? Without a breaking change, we'd need to support both the old protobuf and the protobuf for a few versions, and somehow determine between them, which sounds messy.

@AkihiroSuda
Copy link
Member

I heard of another alternative: https://github.com/CrowdStrike/csproto
They have a migration guide from gogo: https://github.com/CrowdStrike/csproto/blob/main/docs/migration_guide.md

@tonistiigi What should we do?

@tonistiigi
Copy link
Member

Are the alternatives compatible on the wire? If not then this will be tricky and if we ever change we should reevaluate the whole grpc story. If compatibility is maintained then I don't have any desire to keep gogo. Compatibility on Go API level is not important.

@AkihiroSuda
Copy link
Member

https://github.com/CrowdStrike/csproto/blob/main/docs/migration_guide.md says "csproto is designed to, as mush as possible, be a drop-in replacement"

@crazy-max
Copy link
Member

crazy-max commented Oct 20, 2022

https://github.com/CrowdStrike/csproto/blob/main/docs/migration_guide.md says "csproto is designed to, as mush as possible, be a drop-in replacement"

Unfortunately, if you are currently using the more advanced code generation enabled by protoc-gen-gogofast, protoc-gen-gogofaster, or protoc-gen-gogoslick then you will lose functionality as the new protoc-gen-go plug-in does not provide the same features.

//go:generate protoc -I=. -I=../../vendor/ --gogofaster_out=. checksum.proto

//go:generate protoc -I=. -I=../../vendor/ --gogofaster_out=. ops.proto

https://github.com/moby/buildkit/search?q=gogoslick

@marxarelli
Copy link
Contributor

I came across this issue while hacking locally to see if I could get buildkit working with xds (specifically I wanted to get it working with Istio's Envoy based service mesh). Long story but the part that's relevant here is that I got quite far but in the end I couldn't get the generated code to properly use the grpc.ServiceRegistrar interface over a *grpc.Server. This seems to be a limitation of the out of date (and FWICT unmaintained?) gogo protoc and its grpc plugin.

@kzys kzys linked a pull request Nov 16, 2023 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants