Repository navigation
Conversation
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
|
@wjwwood whenever you have a minute. |
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
tfoote
left a comment
There was a problem hiding this comment.
To confirm you'd like to update the posted draft with a merge or old this here for more review inline before merging?
|
@tfoote I think it'd be good for @wjwwood @MiguelCompany and perhaps @jmachowinski @allenh1 to take a look before merging. Or merge so that it's easier to read? I don't mind either way. |
|
Hey, I found time to go through the REP and I got some thoughts on it. From my point of view we had a shift in the IDL generation from the pure description of the type, to also generate the serialization format. E.g. rosidl_typesupport_fastrtps_cpp is a good example of this. My question would now be, if it makes more sense to try to standardize the interface here more than the taken approach. My thoughts are going more in the direction of specifying a new interface that RMWs can use to figure out, if the message that got passed down to them is already in shm, or if it is a flatbuffer that does not need serialization. I got a message in shm, and the endpoint is on the network The second point I am wondering about is, if we should generate multiple C / C++ types in respect to the used idl_generator. |
Yes and no. What we are proposing here is to decouple message structure and semantics from memory layout. A useful side effect of this is that if you align that memory layout with a memory-addressable serialization format you get zero copy on transfer. But that's a choice that an specific type support makes. Other type supports can still make other choices. Granted, the middleware doesn't have a direct say, but it does choose the type support.
Hmm, isn't this possible already with a type support choice?
Oh, I see. You mean properties of the message itself. It gets hairy. You are taking some agency away from the middleware. We would need to define new middleware-level interfaces to do this. Similar to buffer backends. If I follow your logic though, you are essentially questioning the I mean, it sounds sensible and it should be doable, but it's a big leap, and IMHO orthogonal to this REP.
Let me walk through the thought experiment. It's 2028. We have protobuf, rosidl, flatbuffer, and cap'n proto equivalent TBH I think that multi-messaging system support falls square in the bucket of cool features that we shouldn't build. It's complex to build and maintain, and it creates friction that the vanilla IDLs themselves do not have (custom serdes code, partial feature support), which people will complain about, unless we compromise the cohesiveness of the ROS ecosystem. For those that need integration with external messaging systems, REP-2007 already serves that purpose. We just need to implement it in more places than just I know, I know, I don't live under a rock, I understand the convenience of |
Follow-up to #22. This patch addresses most comments that were left standing. I believe we agree on the substance, we have time to discuss about the form. I bet some nuances will come up during implementation.
FYI @wjwwood @MiguelCompany