I feel like this creates a bizarre asymmetry in the node topology, and I just can’t think of a use case that would motivate it.
+1000 (per our VC)
As a user of ROS 2 in a research setting, I have a wish that minimal configuration should maximize expected behavior – and possibly “maximize safety”. Perhaps this is achievable if it’s easy for me to reason about possible failure modes arising from “unexpected / undesired traffic”.
Have bizarre asymmetries could make this wish harder to achieve.
Having host A say “don’t talk to me” and host B to say “hey, poke into that host A’s traffic”, and allowing that, seems suboptimal from this perspective.
If the counter-argument is that the setting is qualified as “automatic discovery”, then I would argue this configuration arrangement may not be sufficiently simple.
I believe that is in line with @christian’s comment in Oct. 2022. @gbiggs’s response about having a implicit topology that allows for certain routes of communication sounds nice, but IMO, users should be much more explicit about their topology if they want introspection along certain directions, vs. having an isolation flag but saying “Hey, it’s not really isolated”. Ideally, being explicit does not have to mean being uber verbose with a narrow / fragile set of flags.
A crazier alternative would be to have a single ROS_DISCOVERY_INTERFACES
variable.
I wouldn’t mind something like this, especially if it helps to collapse the number of moving pieces!
My vote is to make it as explicit as possible, e.g. if the variable is present but represents an empty list, it should be taken as that. No extra _OFF
flags, nor gymnastics to say “it’s defined, but empty, so assume undefined, so use default”.
Users could always achieve this with SROS.
SROS 2 seems excellent (and possibly necessary?) for production deployment / testing!
However, expecting users who are prototyping in a research / development environment to learn about, configure, and deploy SROS, and pay the runtime overhead (as well as maintenance as the feature evolves) would not line up with a wish for minimal config for “maximum correctness” (failure modes that are easy to reason about).
Re: disabling static peers for FastDDS, sweet! Glad to know it’s possible!
But ideally, it would be nice to flat out restrict the traffic, discovery and otherwise.
All of this being said, using ROS 2 and its DDS implementations has been great! There are ofc roadbumps, and we all want it to be “greater” while also being “simpler”, but per the aim of the work Geoff outlined and Grey, Arjo, and others are working towards, I think we’re close to making that happen!