cloudevents / sdk-go

Go SDK for CloudEvents
https://cloudevents.github.io/sdk-go/
Apache License 2.0
827 stars 218 forks source link

Interoperability issues due to proto inconsistencies between spec and language-specific SDKs #744

Open v3n opened 2 years ago

v3n commented 2 years ago

Hi, we've run into a fairly high severity issue using CloudEvents with Go.go-sdk uses a different Protobuf descriptor from the descriptor defined in the spec and other SDKs.

We're developing on top of Cloudevents in a mixed language ecosystem (primary Java & Go, using Protobuf as our schema and interoperability layer. Producers use the HTTP protocol to a collection, which outputs to the Kafka binding where producers pick up events).

There are a number of interoperability issues we've run into so far, namely due to Go using an inconsistent version of the protobuf definition:

protoc-generated Go cannot import the spec.

Since this repository doesn't exist, anything generated from Go doesn't work. This could be solvable via go.mod replace directives except....

Different protobuf packages

While wire format interoperability is unaffected, this causes protoreflect to not work between languages. For example: embedding a CloudEvents type via google.protobuf.Any or using protojson

Solution

n3wscott commented 2 years ago

Thanks, will take a look.

n3wscott commented 2 years ago

OK! the correct proto file is here and we need to copy it down.

https://github.com/cloudevents/spec/blob/v1.0.1/spec.proto

jskeet commented 2 years ago

@n3wscott: Note that that proto is slightly out of date - it doesn't include batch support (and doesn't have a csharp_namespace option, although that shouldn't affect go). The most up-to-date one is at https://github.com/cloudevents/spec/blob/main/cloudevents/formats/cloudevents.proto - I'm expecting to use that as the basis of the GA version in 1.0.2 assuming the vote passes.

AndreasBergmeier6176 commented 2 years ago

This is more than half a year old - is this repo even maintained anymore?

n3wscott commented 2 years ago

It is maintained by volunteers. Would you like to contribute @AndreasBergmeier6176 ?