colcon doesn’t have profiles but offers different concepts:
metadata to provide information about packages
defaults to set the default values of command line arguments
mixins to define sets of configuration options which can be combines
The most significant reason why mixins are favored over profiles is that they are combinable which makes it feasible to share mixins between users encouraging reuse (e.g. https://github.com/colcon/colcon-mixin-repository). Supporting something similar than a default profile would certainly be good - I guess it has not been implemented yet since it is not yet clear how best to do so / how best to use such a feature.
It should be fairly straight forward to add this feature to the package-selection extension. Please consider to create a PR for it.
One thing to consider is that there can only be one kind of positional arguments like this. Package names to be selected seems like an obvious choice. It might just be that for other use cases other positional args would make more sense. That is why currently all command line options are named arguments (and also have pretty verbose names to avoid collisions of the numerous options).
That might highly depend on your point of view.
catkin_tools has certainly some nice usability features which
colcon doesn’t have at the moment.
But on the other hand there is a pretty long list of features in
colcon which go beyond what
catkin_tools can do (just a short excerpt):
- works on all targeted platforms (Linux, macOS, Windows)
- supports the current features of package manifest files including group dependencies
- supports packages without a
package.xml file (e.g. Gazebo)
- is supported by the
- highly modular architecture which enables / encourages implementing plugins externally and many are being developed by external people which is great:
- using more modern tools, e.g.
pytest including several of its plugins to run Python tests
- being actively maintained since it is the default build tool of ROS 2
Features are simply being developed on demand so whenever there is a use case which needs something. For many use cases the current state works pretty well and there is no list of features we are planning to work on soon. But as always please feel free to contribute whatever features you consider necessary / important / valuable.