I am disappointed by your behavior as the community moderator. I see that your post targets me directly using my previous posts elsewhere while my criticism is totally about the technical state of ROS ecosystem and tooling. I do not say anything against people here and I do not accept that kind of behavior. Several other posters have stated their pain using similar words in this post. You also stated that you are getting such posts every year. Why do you think this is related to my personality and use my other posts elsewhere as a proof here? I find it very disrespectful.
I did my PhD on formal syntax and semantics of specification languages and therefore formal methods is my expertise. Of course I will write blog posts about the formal aspects of OpenScenario 2.0 standard linked in your post. As an experienced reviewer, I objectively state mathematical drawbacks in that proposal and would reject such proposal if it were a journal paper. This is my professional job. Build systems and tooling are not that mathematical yet general principles still hold. Simplicity, using less resources, the reduction of abstraction layers must be pursued in every possible way. Otherwise we see problems as in every complex software system and ROS is no exception. The particular goal is to eliminate every possible failure mode in the system (build system to runtime) so that we can use them reliably in safety-critical situations. Every complication in ROS ecosystem carries a potential risk to cause the loss of human lives and money. As a researcher working on the safety of real-time systems, it is my duty to point and criticize such problems. If you call it inflammatory, let it be… But it is no joke.
Again I am really disappointed… I expect a public apology here before we move forward.
Let’s back to the topic: For people asking a concrete proposal. It is clear in the title, my posts here, and in the posts Katherine shared. It’s the usual C++ way… Simply deprecate ament, write pure cmake/setup.py, install at conventional locations. Let people learn general C++/python tools because this is regular C++ and Python. Look at Boost and QT libraries and others. Remember that ROS is a software library in essence.
I can do it myself in my projects. This is my intention. However, I recently realize that devs change conventional include directories in an LTS distro to solve a somewhat fringe problem even without mentioning in changelogs. Developers do not see it as a problem because of the over-reliance on ROS tooling. Then ROS claim their tooling is optional. Nope – ROS dictates it. Then bear the criticism please every year.
Other suggestions from previous posts were also good. Separate IDL generation. Separate topological sorting algorithm if you think that’s big deal. Separate package boilerplate generation.