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.
|
||||
|
||||
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/).
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ This document is a declaration of software quality for the `tracetools` package,
|
|||
|
||||
# `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).
|
||||
|
||||
|
@ -63,8 +63,6 @@ All merge requests must resolve related documentation changes before merging.
|
|||
|
||||
## 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]
|
||||
|
||||
`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]
|
||||
|
||||
`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]
|
||||
|
||||
|
@ -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.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 | ✓ |
|
||||
|
@ -194,7 +196,7 @@ The table below compares the requirements in REP-2004 with the current state of
|
|||
|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 | |
|
||||
|5.iii| Justifies quality use of non-ROS dependencies | ✓ |
|
||||
|6| **Platform Support** ||
|
||||
|6.i| Support targets tier 1 ROS platforms | ✓ |
|
||||
|7| **Security** ||
|
||||
|
@ -202,7 +204,4 @@ The table below compares the requirements in REP-2004 with the current state of
|
|||
|
||||
\* : 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.
|
||||
|
||||
Missing for Quality Level 2:
|
||||
* 5.iii Justifies quality use of non-ROS dependencies
|
||||
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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue