I was wondering if you would object to tracking package download counts. IIRC you had some cautions when this was discussed earlier, but perhaps I was mistaken.
Tags
As to tags, first the current status. rosindex already supports tags via rosdoc2.yaml, but this is not really promoted, and IIRC only 4 packages have tags defined. rosindex fakes tags by splitting package names by “_”, so that “control_msgs” is assigned tags “control” and “msgs”. This would be good to keep in mind in naming packages. That is actually quite useful in package searches. If we ever write a guide to documenting packages, it would be useful to mention these capabilities.
I’ve considered myself undertaking a project to attempt to curate ROS packages using tags. (I don’t believe you could get 2000 packages to be tagged by their authors at this late date in the development of ROS.) But if you try using the new search features of rosindex, I’m not really sure that is valuable. For example, if you simply search ROS Humble for “slam” then sort by download count, you pretty quickly can identify the active slam packages. Tagging a package “slam” is not really needed when search is more effective.
Package.xml issues - Project.xml anyone?
You asked what would be useful in package.xml. I could have some minor suggestions, but to me the glaring problem from the perspective of discovering ROS capability is that we are focused on packages, but there is not really any defined way to understand the parent of packages, which I’ll call “Projects”. In rosindex we use repositories as a stand in for that (and I’ve added “org” in package search as well which is the parent of repos), but these are heuristic indications of the existence of what are really fairly well-defined projects. Some projects use multiple repos for their components which defeats this heuristic. Some projects are well understood as important to ROS (ament, colcon, various DDS vendors, navigation2, moveit2, rosbag2, rviz, ros2_control for example), but f you are trying to locate capability that is outside the well-known projects, in many cases you are looking for a project, not a package. The way ROS is defined, you can only find packages, and then identify projects. The many packages of the well-known projects make it more difficult to find a lesser known project.
In package documentation (rosdoc2), many project packages don’t even bother with a README because there is a well-defined set of documentation at the project level. rosdoc2 and rosindex struggles to find that. Most of the larger projects have their important documentation at the project level, not at the package level.