Migrating Autoware from ROS 1 to ROS 2
Assume you have a large software project consisting of over a hundred thousand lines of code, built by dozens of contributors, and used by hundreds of people, including universities and companies as the based for new services. Your software is successful and well-known. But there is a downside to being widely-used: it becomes significantly harder to make major changes that will require adaptation by users and contributors.
The Autoware software stack is now in this position. With the increased use of Autoware in commercial projects, there is a desire to increase the quality of Autoware so it can be more easily put into production systems. At the same time, with ROS 1 approaching its final release and end-of-life in just over five years, as well as its lower reliability and flexibility, there is a simultaneous desire to switch the base framework which underlies Autoware to ROS 2.
The easy approach to moving a software stack from ROS 1 to ROS 2 is to just adapt to the new APIs. While this would resolve one of our goals, that of moving to ROS 2, it would not contribute to the other, that of improving the quality and reliability of Autoware. To achieve that we need to not just improve the Autoware code, but also take advantage of all the new features ROS 2 offers to enable the development of production-quality intelligent systems. This is why the Autoware Foundation began the Autoware.Auto project - as a from-scratch rebuild of Autoware, it has the chance to take advantage of new features in ROS 2, improve code quality, and learn from the existing Autoware code base, Autoware.AI, to build a new, production-quality, open-source self-driving stack.
Unfortunately, this is where the goals of Autoware.Auto run into the problem of an existing user base. Such significant changes in Autoware risk alienating the existing user base, especially those with long-running research or commercial projects who cannot easily introduce a massive quantity of new software or significant architectural changes.
At ROSCon 2019 in Macau, we presented our plan for how we will approach this challenge. We discussed how we intend to take advantage of the bridge between ROS 1 and ROS 2 provided by the Open Robotics to gradually transition the existing user base from Autoware.AI to Autoware.Auto. By replacing parts of Autoware.AI with their replacements from Autoware.Auto and making this replacement as transparent as possible, we hope to bring users gradually across with minimal pain, so that when they make the final jump to Autoware.Auto the step is as small as possible. We also discussed, in particular, the human aspects of transitioning such a large project, and how community management is as important, if not more so, than the technical aspects of the transition.
For more details, see the presentation slides, or watch the presentation video on the ROSCon 2019 website. Feel free to contact us at firstname.lastname@example.org with questions about the presentation, to learn more about Autoware, or to find out about the Autoware Foundation and its activities. You can also jump right in and begin participating in the Autoware community via the ROS Discourse and via the Autoware Foundation's activities wiki.
Geoff and Esteve