- the golang-github-golang-protobuf-1-5 package implements the protobuf APIv1, but using the implementation from APIv2
- the golang-google-protobuf package implements protobuf APIv2
The situation in Debian now is extremely messy, because the src:golang-google-grpc_1.38.0+really1.33.3-1 package in sid is using code generated by the protoc-gen-go-1-3 compiler, which produces APIv1. We now have a bunch of applications that have not been ported to APIv2, some of them not even upstream. Those have no hope of actually working with golang code generated from a compiler that produces protobuf bindings using APIv2.
On a side-note, even swapping out golang-github-golang-protobuf-1-3 with golang-github-golang-protobuf-1-5 breaks some packages, albeit they are supposed to be mostly compatible.
So how do we get out of this mess? Unless we want to break (read: remove from testing/unstable) quite a large number of packages, I would suggest to introduce:
* src:golang-google-genproto-apiv1 which is essentially a rename of the package golang-google-genproto we have currently in sid. This contains the fundamental types for googleapis and protobuf compiled with golang/protobuf@v1.3 and thus implements the APIv1
* src:golang-google-grpc-apiv1 which is essentially a rename of the package golang-google-grpc we have currently in sid. This is built against the golang-google-genproto-apiv1-dev binary package (which comes from src:golang-google-genproto-apiv1) and serves as a stop-gap for existing applications that are not ready to be ported to APIv2.
With those packages in place, we can then:
* Upload src:golang-google-genproto from experimental to sid
* Update src:golang-google-grpc from experimental to sid
* Fix packages that FTBFS by either updating them to newer upstream versions that compile against protobuf APIv2, or update their build-depends to build against the APIv1 versions.
I think this gives a clear plan forward and allows us to update to newer versions of grpc while also allowing us to keep packages that are not ready to do this migration.
Please let me know what you think. Can you think of a better plan forward?