I've been wondering about the ROS process for handling version dependencies between stacks. Each stack seems to be released with a specific version number, using rosbuild_make_distribution(). Is there a way to specify a minimum version number in the statement of another stack.xml? Is there a way to code a package so it works with multiple versions of some package it depends on? These questions have become more immediate as I try to update the simulator_art package, which depends on stage. For latest, stage has been upgraded to 3.2.2, and I need to test with that version. But, I also want to continue support for Box Turtle, which includes an intermediate stage 3.0 revision. Those versions of stage are quite different, and I need to detect the version and conditionally compile several interface types. Otherwise, if I commit my changes, I will break support for Box Turtle. One solution would be to fork a different branch for each ROS release. But, the combinatorics can get out of hand with significant time spent back-porting and merging fixes to multiple branches. I would prefer conditional compilation with automatic build-time detection of the version I am using. What is the "official" ROS approach to supporting multiple package or stack versions? -- joq