[Development] QtProtobuf and QtGrpc final API review

Fabian Kosmale fabian.kosmale at qt.io
Mon Apr 22 12:56:41 CEST 2024


Hi,

before diving into the API: Do we have more recent documentation than
https://doc-snapshots.qt.io/qt6-dev/qtprotobuf-index.html?

I have the following issue: The API provides both a set of abstract interfaces which can be used to _implement_ grpc
support, as well as an actual implementation using HTTP2 as the protocol layer. However, as far as I can tell, there's
currently no guidance in the documentation where to start as an actual user of gRPC, and where to start as an
implementer.  There's even the question whether we actually expect anyone to implement additional protocols, or
whether that should be left to Qt.
On the "user" side, there's also some (as far as I can tell) missing information on what the module actually
supports. IIRC, qtgrpc only supports the client part, not the server side. Which is fine even when going out
of TP, but should be mentinoed explicitly.  And as far as the client is concerned: What can you actually do?
gRPC supports quite a few ways of doing calls; do we support all of them? How? Compare e.g. with
https://learn.microsoft.com/en-us/aspnet/core/grpc/client or
https://grpc.io/docs/languages/kotlin/basics/#calling-service-methods


You might ask why this is needed for an API review. Well, we can nitpick the choice of containers and the merits of
passing by value or const-ref on the current API with the changes uploaded to gerrit. But that only gives us a very
narrow view. To verify that the API actually presents a consistent interface which covers all uses-cases, we need
a more application centric view. How else would you figure out tha API is _missing_ (in contrast to just not being
expressed in the best possible way)?

There are application examples, which at least helps with reviewing the usage part of the API, but any additional
design documentation would be appreciated before diving into a proper review.

Kind regards,
Fabian

________________________________________
Von: Development <development-bounces at qt-project.org> im Auftrag von Dennis Oberst via Development <development at qt-project.org>
Gesendet: Montag, 22. April 2024 12:15
An: Ivan Solovev via Development
Betreff: [Development] QtProtobuf and QtGrpc final API review

Hey everyone,

The new QtProtobuf and QtGrpc modules are preparing to exit the technical preview phase. For that, these modules require their final API review for Qt 6.8 to iron out any remaining issues, so that we can finalize the API with its current features for us and our users. We deliberately want to avoid doing this large of a review during the usual review time after Qt 6.8 FF. At best the FF review will be based on the diff of todays state and the state at the time of the official review (much much smaller).

We would really appreciate the help of anyone willing to review the existing API. We have divided it into multiple parts, which you can find here:

- QtGrpc<https://codereview.qt-project.org/c/qt/qtgrpc/+/550653>
- QtProtobuf<https://codereview.qt-project.org/c/qt/qtgrpc/+/550655>
    - WellKnownTypes<https://codereview.qt-project.org/c/qt/qtgrpc/+/550654>
    - GuiTypes<https://codereview.qt-project.org/c/qt/qtgrpc/+/550652>
    - CoreTypes<https://codereview.qt-project.org/c/qt/qtgrpc/+/550651>
    - GeneratedUserApi<https://codereview.qt-project.org/c/qt/qtgrpc/+/556448>

Or through the topic "qtgrpc_6.8_api_review<https://codereview.qt-project.org/q/topic:%22qtgrpc_6.8_api_review%22>".

Thanks in advance, and have a great Monday!

best,

________________________
Dennis Oberst
Software Engineer

The Qt Company GmbH
Erich-Thilo-Str. 10
12489 Berlin, Germany
dennis.oberst at qt.io
https://www.qt.io

Geschäftsführer: Mika Pälsi,
Juha Varelius, Jouni Lintunen
Sitz der Gesellschaft: Berlin,
Registergericht: Amtsgericht
Charlottenburg, HRB 144331 B



More information about the Development mailing list