ROS2 Transition Strategy

I am strongly in favour of Option 1. This is simply because independent functionality should always be separated into a dedicated library. There might be users of your library that want to use it with yet another communication middleware. IMHO, it is also easier to maintain a library interface than cherry-picking between branches and resolving merge conflicts.