Add quality declaration for LTTng and update tracetools' QD
Backport of 3c3e052ae3366c0b5f9abc3a8a536b0337675636 from !179 Signed-off-by: Christophe Bedard <bedard.christophe@gmail.com>
This commit is contained in:
parent
3b717eb113
commit
f45370fabd
3 changed files with 221 additions and 10 deletions
212
LTTng_QUALITY_DECLARATION.md
Normal file
212
LTTng_QUALITY_DECLARATION.md
Normal file
|
@ -0,0 +1,212 @@
|
||||||
|
This document is a declaration of software quality for LTTng (*Linux Trace Toolkit: next generation*), an external dependency, based on the guidelines in [REP-2004](https://www.ros.org/reps/rep-2004.html).
|
||||||
|
|
||||||
|
# LTTng Quality Declaration
|
||||||
|
|
||||||
|
This quality declaration claims that LTTng is in the **Quality Level 1** 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](https://www.ros.org/reps/rep-2004.html).
|
||||||
|
|
||||||
|
Note that LTTng itself is split into multiple repositories.
|
||||||
|
Each repository may provide more than one (Debian or other) package.
|
||||||
|
|
||||||
|
* [`lttng-tools`](https://github.com/lttng/lttng-tools): components to control LTTng tracing
|
||||||
|
* [`lttng-ust`](https://github.com/lttng/lttng-ust): userspace instrumentation and tracing
|
||||||
|
* [`lttng-modules`](https://github.com/lttng/lttng-modules): Linux kernel instrumentation and tracing
|
||||||
|
|
||||||
|
In general, LTTng follows the strict guidelines of the Linux kernel.
|
||||||
|
|
||||||
|
Currently, LTTng is used by downstream (ROS) packages through Ubuntu packages.
|
||||||
|
This means that the LTTng version is fixed for a given Ubuntu distro, and thus it is fixed for the corresponding ROS distro(s).
|
||||||
|
If any issue regarding the following requirements arises, it should be possible to fork the LTTng packages, apply a fix, and create and use vendor packages.
|
||||||
|
|
||||||
|
## Version Policy [1]
|
||||||
|
|
||||||
|
The mitigation strategy mentioned in the first section of this document applies here.
|
||||||
|
|
||||||
|
### Version Scheme [1.i]
|
||||||
|
|
||||||
|
LTTng does not declare any versioning scheme, but seems to follow `semver`.
|
||||||
|
Upstream [issue #1269](https://bugs.lttng.org/issues/1269) tracks the declaration of a formal version scheme.
|
||||||
|
|
||||||
|
### Version Stability [1.ii]
|
||||||
|
|
||||||
|
All LTTng packages are at or above a stable version, i.e. `>= 1.0.0`.
|
||||||
|
|
||||||
|
### Public API Declaration [1.iii]
|
||||||
|
|
||||||
|
LTTng packages clearly define their public APIs, which is their installed headers (`include/` directories).
|
||||||
|
|
||||||
|
### API Stability Within a Released ROS Distribution [1.iv]/[1.vi]
|
||||||
|
|
||||||
|
API stability within a released ROS distribution is achieved through Ubuntu package restrictions for each distribution.
|
||||||
|
|
||||||
|
### ABI Stability Within a Released ROS Distribution [1.v]/[1.vi]
|
||||||
|
|
||||||
|
ABI stability within a released ROS distribution is achieved through Ubuntu package restrictions for each distribution.
|
||||||
|
|
||||||
|
## Change Control Process [2]
|
||||||
|
|
||||||
|
### Change Requests [2.i]
|
||||||
|
|
||||||
|
All changes occur through the [LTTng mailing list](https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev) or through their [code review platform](https://review.lttng.org/).
|
||||||
|
|
||||||
|
### Contributor Origin [2.ii]
|
||||||
|
|
||||||
|
LTTng uses DCO as its confirmation of contributor origin policy.
|
||||||
|
For more information, see the [documentation on their Gerrit instance](https://review.lttng.org/Documentation/user-signedoffby.html).
|
||||||
|
|
||||||
|
All commits are [signed-off by the author(s)](https://lttng.org/community/#create-and-send-a-patch) and the reviewer(s).
|
||||||
|
|
||||||
|
* https://github.com/lttng/lttng-tools/commits/master
|
||||||
|
* https://github.com/lttng/lttng-ust/commits/master
|
||||||
|
* https://github.com/lttng/lttng-modules/commits/master
|
||||||
|
|
||||||
|
### Peer Review Policy [2.iii]
|
||||||
|
|
||||||
|
All changes have at least one peer review.
|
||||||
|
|
||||||
|
### Continuous Integration [2.iv]
|
||||||
|
|
||||||
|
Most changes are tested on CI before merging.
|
||||||
|
Release branches and `master` are periodically tested on their [Jenkins instance](https://ci.lttng.org/).
|
||||||
|
|
||||||
|
### Documentation Policy [2.v]
|
||||||
|
|
||||||
|
LTTng does not have an explicit documentation policy.
|
||||||
|
|
||||||
|
All features which are currently utilized by the dependent packages are documented.
|
||||||
|
If they depend on features which are undocumented, it will be necessary for them to provide their own documentation or contribute it upstream.
|
||||||
|
|
||||||
|
## Documentation [3]
|
||||||
|
|
||||||
|
### Feature Documentation [3.i]
|
||||||
|
|
||||||
|
Features are listed and well documented on the [LTTng website](https://lttng.org/docs/).
|
||||||
|
|
||||||
|
### Public API Documentation [3.ii]
|
||||||
|
|
||||||
|
LTTng packages have embedded API documentation.
|
||||||
|
It can be viewed on their man pages:
|
||||||
|
|
||||||
|
* [`lttng-ust`](https://lttng.org/man/3/lttng-ust/v2.11/)
|
||||||
|
|
||||||
|
### License [3.iii]
|
||||||
|
|
||||||
|
All repositories have a `LICENSE` file.
|
||||||
|
All relevant files have a license identifier.
|
||||||
|
|
||||||
|
* `lttng-tools` is licensed under LGPLv2.1 and GPLv2, see [`LICENSE` file](https://github.com/lttng/lttng-tools/blob/master/LICENSE)
|
||||||
|
* `lttng-ust` is licensed under LGPLv2.1, the MIT license and GPLv2, see [`LICENSE` file](https://github.com/lttng/lttng-ust/blob/master/LICENSE)
|
||||||
|
* `lttng-modules` is licensed under LGPLv2.1, GPLv2 and the MIT license, see [`LICENSE` file](https://github.com/lttng/lttng-modules/blob/master/LICENSE)
|
||||||
|
|
||||||
|
### Copyright Statement [3.iv]
|
||||||
|
|
||||||
|
All relevant files have a copyright statement and include a list of copyright holders.
|
||||||
|
|
||||||
|
## Testing [4]
|
||||||
|
|
||||||
|
### Feature Testing [4.i]
|
||||||
|
|
||||||
|
LTTng packages have tests in their `test/` directories which simulate typical usage.
|
||||||
|
|
||||||
|
### Public API Testing [4.ii]
|
||||||
|
|
||||||
|
LTTng packages have tests in their `test/` directories which test their public APIs.
|
||||||
|
|
||||||
|
### Coverage [4.iii]
|
||||||
|
|
||||||
|
LTTng does not have an explicit coverage policy and does not appear to track code coverage.
|
||||||
|
However, that does not impact the quality of dependent packages, because it mostly serves as a metric to show that it is properly tested.
|
||||||
|
Looking at the tests that LTTng has, it does seem to be properly tested.
|
||||||
|
In any case, the mitigation strategy mentioned in the first section of this document applies here if an issue is found.
|
||||||
|
|
||||||
|
### Performance [4.iv]
|
||||||
|
|
||||||
|
LTTng does not have an explicit performance regression policy.
|
||||||
|
Some relevant packages have performance tests in the form of benchmarks:
|
||||||
|
|
||||||
|
* [`lttng-ust`](https://ci.lttng.org/view/Benchmarks/job/lttng-ust-benchmarks_master_build/lastSuccessfulBuild/artifact/src/lttng-ust-benchmarks/benchmarks.json)
|
||||||
|
* [general benchmarks](https://ci.lttng.org/view/Benchmarks/job/baremetal_benchmarks_kmaster_lmaster/)
|
||||||
|
|
||||||
|
### Linters and Static Analysis [4.v]
|
||||||
|
|
||||||
|
Coverity, `cppcheck` and `scan-build` are regularly run against LTTng packages:
|
||||||
|
|
||||||
|
* [lttng-tools_master_cppcheck](https://ci.lttng.org/view/Code%20quality/job/lttng-tools_master_cppcheck/cppcheckResult)
|
||||||
|
* [lttng-tools_master_scan-build](https://ci.lttng.org/view/Code%20quality/job/lttng-tools_master_scan-build/HTML_20Report/)
|
||||||
|
* [lttng-tools_master_coverity](https://ci.lttng.org/view/Code%20quality/job/lttng-tools_master_coverity/)
|
||||||
|
* [lttng-ust_master_cppcheck](https://ci.lttng.org/view/Code%20quality/job/lttng-ust_master_cppcheck/cppcheckResult)
|
||||||
|
* [lttng-ust_master_scan-build](https://ci.lttng.org/view/Code%20quality/job/lttng-ust_master_scan-build/HTML_20Report/)
|
||||||
|
* [lttng-ust_master_coverity](https://ci.lttng.org/view/Code%20quality/job/lttng-ust_master_coverity/)
|
||||||
|
* [lttng-modules_master_cppcheck](https://ci.lttng.org/view/Code%20quality/job/lttng-modules_master_cppcheck/cppcheckResult)
|
||||||
|
* [lttng-modules_master_scan-build](https://ci.lttng.org/view/Code%20quality/job/lttng-tools_master_scan-build/HTML_20Report/)
|
||||||
|
|
||||||
|
## Dependencies [5]
|
||||||
|
|
||||||
|
### Direct Runtime non-ROS Dependency [5.iii]
|
||||||
|
|
||||||
|
LTTng packages have some direct runtime dependencies, including:
|
||||||
|
|
||||||
|
* [`liburcu`](http://liburcu.org/): userspace RCU (read-copy-update) library
|
||||||
|
|
||||||
|
## Platform Support [6]
|
||||||
|
|
||||||
|
As its name suggests, LTTng only supports Linux-based systems.
|
||||||
|
|
||||||
|
## Security [7]
|
||||||
|
|
||||||
|
### Vulnerability Disclosure Policy [7.i]
|
||||||
|
|
||||||
|
LTTng does not have an explicit vulnerability disclosure policy.
|
||||||
|
Upstream [issue #1268](https://bugs.lttng.org/issues/1268) tracks the declaration of a formal VDP.
|
||||||
|
|
||||||
|
The mitigation strategy mentioned in the first section of this document applies here.
|
||||||
|
|
||||||
|
# Current Status
|
||||||
|
|
||||||
|
The table below compares the requirements in REP-2004 with the current state of the LTTng package.
|
||||||
|
|
||||||
|
|Number| Requirement | Current state |
|
||||||
|
|--|--|--|
|
||||||
|
|1| **Version policy** ||
|
||||||
|
|1.i| Version policy | ✓ |
|
||||||
|
|1.ii| Stable version | ✓ |
|
||||||
|
|1.iii| Strictly declared public API | ✓ |
|
||||||
|
|1.iv| API stability policy | ✓ |
|
||||||
|
|1.v| ABI stability policy | ✓ |
|
||||||
|
|1.vi| API/ABI stablility policy within ROS distribution | ✓ |
|
||||||
|
|2| **Change control process** ||
|
||||||
|
|2.i| All changes occur through change request | ✓ |
|
||||||
|
|2.ii| Confirmation of contributor origin | ✓ |
|
||||||
|
|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| Public API documentation | ✓ |
|
||||||
|
|3.iii| Declared license(s) | ✓ |
|
||||||
|
|3.iv| Copyright in source files | ✓ |
|
||||||
|
|3.v.a| Quality declaration linked to from README | ✓ |
|
||||||
|
|3.v.b| Centralized declaration available for peer review | ✓ |
|
||||||
|
|3.v.c| References any Level N lists the package belongs to | ✓ |
|
||||||
|
|4| **Testing** ||
|
||||||
|
|4.i| Feature items tests | ✓ |
|
||||||
|
|4.ii| Public API tests | ✓ |
|
||||||
|
|4.iii.a| Using coverage | ✓ * |
|
||||||
|
|4.iii.b| Coverage policy | ✓ * |
|
||||||
|
|4.iv.a| Performance tests | ✓ |
|
||||||
|
|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 lower level ROS dependencies | ✓ |
|
||||||
|
|5.ii| Optional ROS lower level dependencies | ✓ |
|
||||||
|
|5.iii| Justifies quality use of non-ROS dependencies | ✓ * |
|
||||||
|
|6| **Platform Support** ||
|
||||||
|
|6.i| Support targets tier 1 ROS platforms | ✓ |
|
||||||
|
|7| **Security** ||
|
||||||
|
|7.i| Vulnerability Disclosure Policy | ✓ * |
|
||||||
|
|
||||||
|
\* : mitigated/does not apply
|
||||||
|
|
||||||
|
Comparing this table to the [Quality Level Comparison Chart of REP-2004](https://www.ros.org/reps/rep-2004.html#quality-level-comparison-chart) led us to conclude that this package qualifies for Quality Level 1.
|
|
@ -74,7 +74,7 @@ Package containing a `ros2cli` extension to enable tracing.
|
||||||
|
|
||||||
Library to support instrumenting ROS packages, including core packages.
|
Library to support instrumenting ROS packages, including core packages.
|
||||||
|
|
||||||
This package claims to be in the **Quality Level 3** category, see the [Quality Declaration](./tracetools/QUALITY_DECLARATION.md) for more details.
|
This package claims to be in the **Quality Level 2** category, see the [Quality Declaration](./tracetools/QUALITY_DECLARATION.md) for more details.
|
||||||
|
|
||||||
See the [API documentation](https://ros-tracing.gitlab.io/ros2_tracing-api/).
|
See the [API documentation](https://ros-tracing.gitlab.io/ros2_tracing-api/).
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ This document is a declaration of software quality for the `tracetools` package,
|
||||||
|
|
||||||
# `tracetools` Quality Declaration
|
# `tracetools` Quality Declaration
|
||||||
|
|
||||||
The package `tracetools` claims to be in the **Quality Level 3** category.
|
The package `tracetools` 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](https://www.ros.org/reps/rep-2004.html).
|
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](https://www.ros.org/reps/rep-2004.html).
|
||||||
|
|
||||||
|
@ -63,8 +63,6 @@ All merge requests must resolve related documentation changes before merging.
|
||||||
|
|
||||||
## Documentation [3]
|
## Documentation [3]
|
||||||
|
|
||||||
`tracetools` does not currently follow all the recommended guidelines for ROS Core packages in the [ROS 2 Developer Guide](https://index.ros.org/doc/ros2/Contributing/Developer-Guide/#documentation).
|
|
||||||
|
|
||||||
### Feature Documentation [3.i]
|
### Feature Documentation [3.i]
|
||||||
|
|
||||||
`tracetools` has [documentation](../doc/design_ros_2.md) for all of its features, and new features require documentation before being added.
|
`tracetools` has [documentation](../doc/design_ros_2.md) for all of its features, and new features require documentation before being added.
|
||||||
|
@ -137,7 +135,10 @@ This package does not have any optional runtime ROS dependencies.
|
||||||
|
|
||||||
### Direct Runtime non-ROS Dependency [5.iii]
|
### Direct Runtime non-ROS Dependency [5.iii]
|
||||||
|
|
||||||
`tracetools` has a run-time dependency on [LTTng](https://lttng.org/docs/v2.11/). A Quality Level review for LTTng has yet to be done.
|
`tracetools` has a run-time dependency on [LTTng](https://lttng.org/docs/v2.11/).
|
||||||
|
LTTng provides tracing capabilities.
|
||||||
|
|
||||||
|
It is **Quality Level 1**, see its [Quality Declaration document](../LTTng_QUALITY_DECLARATION.md).
|
||||||
|
|
||||||
## Platform Support [6]
|
## Platform Support [6]
|
||||||
|
|
||||||
|
@ -182,6 +183,7 @@ The table below compares the requirements in REP-2004 with the current state of
|
||||||
|3.iv| Copyright in source files | ✓ |
|
|3.iv| Copyright in source files | ✓ |
|
||||||
|3.v.a| Quality declaration linked to from README | ✓ |
|
|3.v.a| Quality declaration linked to from README | ✓ |
|
||||||
|3.v.b| Centralized declaration available for peer review | |
|
|3.v.b| Centralized declaration available for peer review | |
|
||||||
|
|3.v.c| References any Level N lists the package belongs to | ✓ |
|
||||||
|4| **Testing** ||
|
|4| **Testing** ||
|
||||||
|4.i| Feature items tests | ✓ |
|
|4.i| Feature items tests | ✓ |
|
||||||
|4.ii| Public API tests | ✓ |
|
|4.ii| Public API tests | ✓ |
|
||||||
|
@ -194,7 +196,7 @@ The table below compares the requirements in REP-2004 with the current state of
|
||||||
|5| **Dependencies** ||
|
|5| **Dependencies** ||
|
||||||
|5.i| Must not have lower level ROS dependencies | ✓ |
|
|5.i| Must not have lower level ROS dependencies | ✓ |
|
||||||
|5.ii| Optional ROS lower level dependencies | ✓ |
|
|5.ii| Optional ROS lower level dependencies | ✓ |
|
||||||
|5.iii| Justifies quality use of non-ROS dependencies | |
|
|5.iii| Justifies quality use of non-ROS dependencies | ✓ |
|
||||||
|6| **Platform Support** ||
|
|6| **Platform Support** ||
|
||||||
|6.i| Support targets tier 1 ROS platforms | ✓ |
|
|6.i| Support targets tier 1 ROS platforms | ✓ |
|
||||||
|7| **Security** ||
|
|7| **Security** ||
|
||||||
|
@ -202,7 +204,4 @@ The table below compares the requirements in REP-2004 with the current state of
|
||||||
|
|
||||||
\* : going forward
|
\* : going forward
|
||||||
|
|
||||||
Comparing this table to the [Quality Level Comparison Chart of REP-2004](https://www.ros.org/reps/rep-2004.html#quality-level-comparison-chart) led us to conclude that this package qualifies for Quality Level 3.
|
Comparing this table to the [Quality Level Comparison Chart of REP-2004](https://www.ros.org/reps/rep-2004.html#quality-level-comparison-chart) led us to conclude that this package qualifies for Quality Level 2.
|
||||||
|
|
||||||
Missing for Quality Level 2:
|
|
||||||
* 5.iii Justifies quality use of non-ROS dependencies
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue