Hello,
After internal discussion we came up with the following mitigation.
Each snap would declare their specific slot, that is e.g. the ros-noetic-ros-core
snap would declare a ros-noetic-ros-core
slot; the ros-foxy-desktop
snap would declare a ros-foxy-desktop
slot.
In addition, super-set snaps would declare additional slots for the lower sets they encompass since the content of those lower sets is also present. These additional slots would also be auto-connectable. E.g. the ros-foxy-desktop
snap would also declare the ros-foxy-ros-base
& ros-foxy-ros-core
slots.
A full example for the foxy
version is,
- the snap
ros-foxy-ros-core
has the slot:ros-foxy-ros-core
- the snap
ros-foxy-ros-base
has the slots:ros-foxy-ros-core
ros-foxy-ros-base
- the snap
ros-foxy-desktop
has the slot:ros-foxy-ros-core
ros-foxy-ros-base
ros-foxy-desktop
And equivalently for humble
& noetic
variants.
Reciprocally, plugs would also have to adopt this more exhaustive naming schema of course.
This more meaningful naming addresses the concern of a (current) ros-foxy
plug expecting the ‘desktop’ set to wrongly auto-connecting to a (current) ros-foxy
slot only providing the ‘core’ set for instance.
@emitorino Any thoughts? Would that address the concern you raised?