qdrant
qdrant copied to clipboard
Single repo for gRPC proto files and generated stubs
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.
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.
Hey @generall, many thanks! Got it, I will sketch the machinery and return with something usable.