qdrant icon indicating copy to clipboard operation
qdrant copied to clipboard

Single repo for gRPC proto files and generated stubs

Open martyanov opened this issue 2 years ago • 2 comments

Is your feature request related to a problem? Please describe.

There are some possible gRPC discrepancies between different client libraries as there is no single reference source for them. Also, there is no distinction between public and private APIs, besides different proto files. For example, for Go client https://github.com/qdrant/go-client/blob/master/tools/sync_proto.sh exists, that is used to sync the files and deal with exclusions of private APIs, I think that is not the most elegant solution and ,probably, quite repetitive and error prone.

Describe the solution you'd like

We could create a single repo for storing the protos and generated stubs. For example, qdrant/proto, qdrant/rpc etc. Use appropriate package manager for packaging them and use qdrant-proto name for Rust crate and Python package, repo URL for Go, all in the single repo. The packaged stubs should provide only the public APIs, private ones remain as is. The package version signifies its Qdrant counterpart and you always know the version it is compatible with.

Describe alternatives you've considered

Retain everything as is. :)

Additional context

What do you think, guys? If it isn't against your engineering practices in some way then I could create PRs with a POC for this.

I'm going to use both Python and Go for interacting with Qdrant and gRPC seems as a logical choice, there is no asyncio version of Python client and your Go client, in its current shape, is just a bunch of gRPC examples.

martyanov avatar Dec 06 '22 10:12 martyanov

Hi @martyanov! Thanks for the suggestion, having gRPC in a more organized manner would definitely be useful. Of course, we would be grateful if you could contribute into this problem. I can create a dedicated repo for definitions as well, please let me know if you need anything.

generall avatar Dec 06 '22 13:12 generall

Hey @generall, many thanks! Got it, I will sketch the machinery and return with something usable.

martyanov avatar Dec 06 '22 18:12 martyanov