QUALITY_DECLARATION

This document is a declaration of software quality for the zenoh_cpp_vendor package, based on the guidelines in REP-2004.

zenoh_cpp_vendor Quality Declaration

The package zenoh_cpp_vendor claims to be in the Quality Level 2 category.

Below are the rationales, notes, and caveats for this claim, organized by each requirement listed in the Package Requirements for Quality Level 1 in REP-2004.

Version Policy [1]

Version Scheme [1.i]

zenoh_cpp_vendor uses semver according to the recommendation for ROS Core packages in the ROS 2 Developer Guide.

Version Stability [1.ii]

zenoh_cpp_vendor is at or above a stable version, i.e. >= 1.0.0.

Public API Declaration [1.iii]

This is a vendor package for zenoh-c and zenoh-cpp and as such does not declare its own API.

API Stability Policy [1.iv]/[1.vi]

zenoh_cpp_vendor does not have an API of its own, and will limit its dependency on zenoh-c and zenoh-cpp to API stable releases within a released ROS distribution.

ABI Stability Policy [1.v]/[1.vi]

zenoh_cpp_vendor does not have an ABI of its own, and will limit its dependency on zenoh-c and zenoh-cpp to ABI stable releases within a released ROS distribution.

Change Control Process [2]

zenoh_cpp_vendor follows the recommended guidelines for ROS Core packages in the ROS 2 Developer Guide.

Contributor Origin [2.ii]

This package uses DCO as its confirmation of contributor origin policy. More information can be found in CONTRIBUTING.

Peer Review Policy [2.iii]

All pull requests will be peer-reviewed, check the ROS 2 Developer Guide for additional information.

Continuous Integration [2.iv]

All pull requests must pass CI on all tier 1 platforms.

Documentation Policy [2.v]

All pull requests must resolve related documentation changes before merging.

Documentation [3]

Feature Documentation [3.i]

zenoh_cpp_vendor does not have features other than importing the external dependency zenoh-c and zenoh-cpp and therefore does not require feature documentation.

Public API Documentation [3.ii]

zenoh_cpp_vendor does not have an API and therefore does not require API documentation.

License [3.iii]

The license for zenoh_cpp_vendor is Apache 2.0, and a summary is in each source file, the type is declared in the package.xml manifest file, and a full copy of the license is in the LICENSE file. The vendored library, zenoh-c and zenoh-cpp license is Apache 2.0 as stated in its quality declaration document (Section 5.iii).

Testing [4]

zenoh_cpp_vendor is a package providing solely CMake files and therefore does not require API or feature tests and has no coverage or performance requirements (sections [4.i - 4.iv]).

Feature Testing [4.i]

Each feature in rmw_zenoh_cpp has corresponding tests which simulate typical usage, and they are located in different ROS 2 packages. New features are required to have tests before being added.

Public API Testing [4.ii]

Each part of the public API has tests, and new additions or changes to the public API require tests before being added. The tests aim to cover both typical usage and corner cases, but are quantified by contributing to code coverage.

Coverage [4.iii]

Lastest code coverage can be found here.

Performance [4.iv]

rmw_zenoh_cpp does not currently have performance tests.

Linters and Static Analysis [4.v]

zenoh_cpp_vendor uses and passes all the ROS 2 standard linters and static analysis tools as described in the ROS 2 Developer Guide. Passing implies there are no linter/static errors when testing against CI of supported platforms.

Dependencies [5]

Direct and Optional Runtime ROS Dependencies [5.i]/[5.ii]

zenoh_cpp_vendor does not have direct/optional runtime ROS dependencies.

Direct Runtime non-ROS Dependency [5.iii]

zenoh_cpp_vendor depends directly on the external dependency zenoh-c and zenoh-cpp, which is qualified as quality level x in its Quality Declaration.

Platform Support [6]

zenoh_cpp_vendor supports all of the tier 1 platforms as described in REP-2000.

Security [7]

Vulnerability Disclosure Policy [7.i]

This package conforms to the Vulnerability Disclosure Policy in REP-2006.

Current status Summary

The chart below compares the requirements in the REP-2004 with the current state of the libyaml package.

Number

Requirement

Current state

1

Version policy

1.i

Version Policy available

1.ii

Stable version

1.iii

Declared public API

1.iv

API stability policy

1.v

ABI stability policy

1.vi_

API/ABI stable within ros distribution

2

Change control process

2.i

All changes occur on change request

2.ii

Contributor origin (DCO, CLA, etc)

2.iii

Peer review policy

2.iv

CI policy for change requests

2.v

Documentation policy for change requests

3

Documentation

3.i

Per feature documentation

3.ii

Per public API item documentation

3.iii

Declared License(s)

3.iv

Copyright in source files

3.v.a

Quality declaration linked to README

3.v.b

Centralized declaration available for peer review

4

Testing

4.i

Feature items tests

4.ii

Public API tests

4.iii.a

Using coverage

4.iii.a

Coverage policy

4.iv.a

Performance tests (if applicable)

4.iv.b

Performance tests policy

4.v.a

Code style enforcement (linters)

4.v.b

Use of static analysis tools

5

Dependencies

5.i

Must not have ROS lower level dependencies

5.ii

Optional ROS lower level dependencies

5.iii

Justifies quality use of non-ROS dependencies

6

Platform support

6.i

Support targets Tier1 ROS platforms

7

Security

7.i

Vulnerability Disclosure Policy

Comparing this table with the Quality Level Comparison Chart of REP2004 lead us to decide that this package qualifies as Quality Level 2.