Deprecate Ament Packages

So Hoare talks about an ambitious plan to create a language to end all languages… Sounds familiar? What about our universal build tool, colcon ? Perhaps it is designed to rule all other build systems and bind them in darkness. When I have first read about colcon , universal build tool, I have said oh we are going again… This is a huge red flag for anyone who know about the history of computer science and mathematics. Roughly stating, you cannot have a universal thing for any complex system.

Colcon is just one way to solve building large collections of heterogeneous pieces of software. The documentation makes no claims at universality, just that it makes some of our common challenges more convenient. From the docs:

colcon is a command line tool to improve the workflow of building, testing and using multiple software packages. It automates the process, handles the ordering and sets up the environment to use the packages.

As you may know, a complex robotics system can be composed of many dependent libraries and executables spanning multiple programming languages (C++, python, Java, Rust) and build systems ( CMake, Bazel, Cargo, etc). In most cases, all colcon is doing is calling the corresponding cmake && make && make install (or equivalent) for each library in dependency order.

There are definitely alternative ways of doing this up to make && make install-ing each component library if you wish. I believe that many in the community have decided that using something like colcon to automate this is worth the “penalty” of abstraction, but no one is being forced into using colcon.

As an alternative, debian packages are provided that don’t strictly require colcon. Similarly the RoboStack folks have done excellent work in using conda to build and distribute ROS and ROS 2 packages without the use of colcon.



This is what Colcon does.

And I’m happy I don’t have to do that manually – thank you @dirk-thomas :pray:

I’m getting confused why the focus is on Colcon all of a sudden though.

It’s completely disconnected from Ament.


Hi Everyone,

We’ve gotten a number of user flags on the post in this thread, along with reports of inappropriate and off-topic discussions on other ROS Discourse threads and on Github. Moreover, we’ve heard complaints from multiple users that these posts are aggressive, disrespectful, and hurtful which are outside of our community expectations. The moderators believe that this thread has moved into angry philosophical debates and isn’t going to yield a productive outcome. We’re open to productive discussion and debate, but this is not what it looks like. We are going to close the thread. If you would like to discuss the subtleties of Ament you are welcome to, but we ask that you give it a week or two and begin anew with a constructive process with concrete suggestions.