I meant those which are already Indexed as part of ROS packages itself, and has been released via bloom. To be more specific, I meant "official ROS package" as those available at https://www.ros.org/browse/list.php.
being released with Bloom and having binary packages built does not make a package an official one.
It just means the author/maintainer have gone through the process of following the wizard and providing the convenience of being able to apt install
their package(s) (or equivalent command on other OS).
For ROS 1, there aren't any requirements on specific tests, (static) analysis or quality metrics. There are best-practices and nice-to-haves, but no thresholds or quality gates. Releasing a package is at the sole discretion of the author, relying on his or her skill and experience as to which level of quality he or she would be able to achieve.
(this seems like a free-for-all, and it sort-of is, but it's very likely a package will not see many users, nor much usage, if it doesn't live up to the expectations about quality which potential users will have. In a way, it's a survival of the fittest approach)
There is something which could be considered an "official list" of packages though, which would be REP-150: ROS Melodic and Newer Metapackages (and the earlier versions of that REP). That REP lists the packages which are to be considered part of the default set of packages which come with the various ROS variants for a specific version of ROS (ros-core
, ros-base
and desktop-full
fi).
However, there is still no hard quality gating for those packages (but they are expected to have reached a certain quality, if only by their age).
For ROS 2, this is different.
While there are still no gates or thresholds which bar releasing a package, there are guidelines and even requirements documented which outline when a package author/developer may claim a certain quality level. Those are described in REP 2004: Package Quality Categories:
This REP describes a set of categories meant to convey the quality or maturity of packages in the ROS ecosystem. Inclusion in a category, or quality level, is based on the policies to which a package adheres. The categories address version, change control, documentation, testing, dependency and platform support policies.
Again: releasing is up to the package author/maintainer, but claiming a package (or set of packages) to have reached a certain level of quality is testable against the requirements given in REP-2004
.
(note: many of the requirements are subjective, so if you expected KPIs such as maximum cyclomatic complexity, you will not find those in the REP. Having tests, and which kind, and what the readme should contain, how vulnerability disclosure is handled is part of the REP, so it focuses a bit more on process than on hard, machine verifiable metrics)
Edit:
is there a rule that says all REP 2xxx are applicable only for ROS2 somehow?
No, I ... (more)
Could you clarify what you mean by "official ROS package"? ROS is a community project, but you seem to imply that there are packages which are special in that project, in that they are considered official.
Hi @gvdhoorn, by "official ROS package", I meant those which are already Indexed as part of ROS packages itself, and has been released via bloom. To be more specific, I meant "official ROS package" as those available at https://www.ros.org/browse/list.php.
So over 90% of that list is community contributed. The fact they are released through Bloom does not make them official. It just means the author(s)/maintainer(s) ha(s)(ve) made the effort to make them available as binary packages in a certain ROS distribution.
Some people assume the packages maintained/released by OR are official, and while they are certainly core packages and almost always used, I don't consider them any more official than others.
As to https://www.ros.org/browse/list.php: you may want to use the ROS Index instead. It contains almost the same list of packages, but much more information about each of them.