The motivation to use one single path follower comes from the fact that a vehicle can only use one path follower at a time but that a same vehicle might use multiple path followers depending on its state. A taxiing airplane is a  dubins cart which uses yaw for heading control and can stop, so it's exactly like a car. A flying airplane, on the other hand, uses roll to control heading and has a minimum airspeed.  So in order to do a fully autonomous mission, from taxi to rollout we will need to switch between follower, i.e. motion, classes.

We could also accomplish this by running multiple modules and short-circuiting these modules when appropriate, but I'm not a fan of that strategy since it seems more complex and consumes resources for the entirety of a mission even if those resources are only necessary for a short part.

How does that compare to the disadvantages of non-standard module initialization? Do you think with a clean API we can avoid the problems you've cited?