QUALITY_DECLARATION

ROS Quality Declaration

Robot Raconteur Core is a ROS Quality Category 2 package according to REP 2004.

Category Requirements:

  • 1.i: Must have a version policy: semver is used for versioning

  • 1.ii: Must be at a stable version: Version 1.0 release pending

  • 1.iii: Must have a strictly declared public API: Public API is documented in Doxygen, Sphinx, and other documentation

  • 1.iv: Must have a policy for API stability: API will remain stable between major releases

  • 1.v: Must have a policy for ABI stability: ABI will remain stable between minor releases

  • 1.vi: Must have a policy that keeps API and ABI stability within a released ROS distribution: ABI Check is performed on each release

  • 2.i: Must have all code changes occur through a change request: Master branch is protected, requiring pull requests

  • 2.ii: Must have a confirmation of contributor origin: Harmony CLA is used for contributors. See https://www.wasontech.com/contributors for more information

  • 2.iii: N/A

  • 2.iv: Must have Continuous Integration (CI) for all change requests: CI must pass before pull request can be merged

  • 2.v: N/A

  • 3.i: Must have documentation for each “feature”: Full documentation is available at https://github.com/robotraconteur/robotraconteur/wiki/Documentation

  • 3.ii: N/A

  • 3.iii: Must have a declared license or set of licenses: Apache 2.0 License is used for entire package

  • 3.iv: Must state copyrights within the project and attribute all authors: All files have appropriate headers for Apache 2.0

  • 3.v: Must have a “quality declaration” document: This document is the quality declaration

  • 4.i: Must have system tests which cover all items in the “feature” documentation: GitHub Actions is used for testing

  • 4.ii: N/A

  • 4.iiia: Code Coverage: Code coverage is included in GitHub Actions workflow

  • 4.iiib: N/A

  • 4.iv: N/A

  • 4.va: Must have a code style and enforce it: Code style is enforced by clang-format

  • 4.vb: Must use static analysis tools where applicable: clang-tidy, cppcheck, and Coverity Scan are used for static analysis

  • 5.i: Must not have direct runtime “ROS” dependencies which are not at the same level as the package in question: The package has no ROS dependencies

  • 5.ii: N/A

  • 5.iii: Must have justification for why each direct runtime “non-ROS” dependency is equivalent to a ‘Level N’ package in terms of quality: Only external dependencies are Boost, OpenSSL, SWIG, and system packages. These are all equivalent ROS Quality Category 1

  • 6.i: Must support all target platforms for the package’s ecosystem: Windows, Linux, and MacOS are fully supported on all architectures

  • 7.i: Must have a declared Vulnerability Disclosure Policy: See VULNERABILITY_POLICY

Experimental Features:

  • HandwareTransport for USB, PCIe, and Bluetooth

  • Java wrappers

  • StringTable message compression

  • Taps for message interception