Deferred from the review of #20 — a strategy decision, not a code change.
Problem
The repo vendors the SDK as a git submodule at extern/grippers. It builds, and colcon picks it up, but it forces every consumer to clone recursively: a plain git clone followed by colcon build fails with a confusing missing-CMakeLists error. That is a poor first experience.
Options on the table
- git submodule (status quo) — no infrastructure, requires
--recurse-submodules.
- Vendor/wrapper ament package — a small vendor package that fetches and builds the SDK at build time, the way
libserialport-style vendor packages do. The reviewer's preference: least effort of the alternatives, and no recursive clone.
- Further options are laid out in the PDF attached to the discussion: ROS C++ SDK Integration Strategies.pdf
Considerations
- The SDK is versioned independently of this repo, so whatever we pick has to pin a version and make bumping it reviewable.
- Offline and air-gapped builds: a vendor package that downloads at build time breaks them, a submodule does not.
- Once the SDK is released and installable, a plain
find_package against a rosdep-installed SDK becomes the endgame — this choice should not block that.
Discussion
#20 (comment)
Deferred from the review of #20 — a strategy decision, not a code change.
Problem
The repo vendors the SDK as a git submodule at
extern/grippers. It builds, and colcon picks it up, but it forces every consumer to clone recursively: a plaingit clonefollowed bycolcon buildfails with a confusing missing-CMakeLists error. That is a poor first experience.Options on the table
--recurse-submodules.libserialport-style vendor packages do. The reviewer's preference: least effort of the alternatives, and no recursive clone.Considerations
find_packageagainst a rosdep-installed SDK becomes the endgame — this choice should not block that.Discussion
#20 (comment)