Open globberwops opened 1 year ago
As discussed in the WP5 meeting on 15 Dec 2022 we will proceed as follows:
osi-grpc-packaging
I think an RPC service would help a lot in certain situations. I'm a bit worried about gRPC however, since it seems really huge (just look at all its dependencies: https://github.com/grpc/grpc/blob/master/.gitmodules).
Is there implementation experience using gRPC? Are there smaller RPC services that could be used (e.g. something not requiring a complete HTTP/2 + SSL implementation)?
https://github.com/protocolbuffers/protobuf/blob/main/docs/third_party.md#rpc-implementations lists some RPC systems with support for ProtoBuf, though none (at first glance) seems to support as many languages as gRPC.
@tbleher gRPC has the widest adoption by far of any of the proto-based RPC implementations. While it surely is not the lightest library by any means, it is widely available through all major package managers (apt, conan, vcpkg, ...), so availability should not be an issue in my opinion.
@pmai @globberwops we can set up a new repo but I need a bit more insight into this before we can formally approve this for release in an ASAM OSI standard. We need to make sure that the decision to include the gRPC dependency (even if optional) in OSI itself is a full project decision - I see a final integration as dependent on a project vote/approval followed by TSC approval. This should be based on a clear overview of the motivation, the alternatives and a short discussion to answer any questions. This should also clarify any licensing aspects. Secondly is the reference implementation - if we are doing this as part of the ASAM project then it needs to go through a similar procedure as above.
I can create the repo so that the work is not blocked but I would request you to address the above in parallel. The next ASAM TSC is on 18.04, with the submission deadline for presentation content on the 31.03. Let me know if you want me to plan you in for this or if you would like to target a later TSC. @pmai once I get the OK from you I will get the ball rolling. Another question: Who will integrate the new repo into the pipeline?
@engelben To clarify: The repo is for initial development of such a packaging layer, which would, if adopted, be another optional packaging layer. Due to logistical reasons, it is preferred to use a common repo for initial development and drafting, prior to an official decision by the project and/or TSC on whether to include it or not. The Repo description can clearly spell out this situation. So to reiterate I am in favor of the repo creation.
Repo is created by @engelben with a MPL 2.0 license. see: https://github.com/OpenSimulationInterface/osi-grpc-packaging
@engelben Thanks for creating the repo!
@ThomasNaderBMW @pmai Here's the initial design proposal for osi_application_control
.
There are 2 scenarios:
The message osi_application_control
is designed to be usable with and without gRPC.
The file osi_application_control.proto
should go into the main OSI repo once completed, and replace the current osi_control
proposal.
By putting all the meta info in a separate submessage, we can do fine-grained unary RPC calls, as shown here.
The unit tests show how the RPC would be called by a client.
Looking forward to our discussion.
Cheers, Martin
Edit: I believe I mixed up the server/client roles for the symmetric delta. I'll fix it until the next meeting.
TrafficParticipant
(re. message structuring)Focus on the how instead of the what at first:
ApplicationControl
messageTrafficCommand
-> Commands to modelsTrafficCommandUpdate
ApplicationControl
-> Commands to external applications (e.g. graphics engine)TrafficCommand
ApplicationControl
based on TrafficCommand
Discussed in https://github.com/orgs/OpenSimulationInterface/discussions/675