Skip to content

Commit

Permalink
Add quality declarations for each package except test_msgs (#92)
Browse files Browse the repository at this point in the history
* Create package-level READMEs and add some inline comments

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* PR Fixup

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* PR fixup

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* Add QUALITY_DECLARATION for all but test_msgs

Signed-off-by: Stephen Brawner <brawner@gmail.com>

Switch QDs to their QL current-level (4)

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* PR Fixup

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* PR Fixup

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* PR Fixup

Signed-off-by: Stephen Brawner <brawner@gmail.com>
  • Loading branch information
brawner committed Apr 30, 2020
1 parent a3942b9 commit f5b4ab3
Show file tree
Hide file tree
Showing 46 changed files with 1,110 additions and 118 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,11 @@
# rcl_interfaces repository
This repository contains a set of packages that primarily contain interface files (.msg and .srv) which are used both to implement client library concepts and for testing.

# rcl_interface packages
* [action_msgs](action_msgs/README.md): Messages and services for [ROS 2 actions](http://design.ros2.org/articles/actions.html)
* [builtin_interfaces](builtin_interfaces/README.md): Message definitions for types in the OMG IDL Platform Specific Model
* [composition_interfaces](composition_interfaces/README.md): Services for managing composeable nodes.
* [lifecycle_msgs](lifecycle_msgs/README.md): Message and service definitions for managing lifecycle nodes.
* [rcl_interfaces](rcl_interfaces/README.md): Message and service definitions for ROS client libraries
* [rosgraph_msgs](rosgraph_msgs/README.md): Message definitions relating the ROS Computation Graph
* test_msgs: Used exclusively for testing purposes
111 changes: 111 additions & 0 deletions action_msgs/QUALITY_DECLARATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
This document is a declaration of software quality for the `action_msgs` package, based on the guidelines in [REP-2004](https://www.ros.org/reps/rep-2004.html).

# `action_msgs` Quality Declaration

The package `action_msgs` claims to be in the **Quality Level 4** category.

Below are the rationales, notes, and caveats for this claim, organized by each requirement listed in the [Package Requirements for Quality Level 4 in REP-2004](https://www.ros.org/reps/rep-2004.html).

## Version Policy [1]

### Version Scheme [1.i]

`action_msgs` uses `semver` according to the recommendation for ROS Core packages in the [ROS 2 Developer Guide](https://index.ros.org/doc/ros2/Contributing/Developer-Guide/#versioning).

### Version Stability [1.ii]

`action_msgs` is not yet at a stable version, i.e. `>= 1.0.0`.

### Public API Declaration [1.iii]

All message and service definition files located in `msg` and `srv` directories are considered part of the public API.

### API Stability Within a Released ROS Distribution [1.iv]/[1.vi]

`action_msgs` will not break public API within a released ROS distribution, i.e. no major releases once the ROS distribution is released.

### ABI Stability Within a Released ROS Distribution [1.v]/[1.vi]

`action_msgs` does not contain any C or C++ code and therefore will not affect ABI stability.

## Change Control Process [2]

`action_msgs` follows the recommended guidelines for ROS Core packages in the [ROS 2 Developer Guide](https://index.ros.org/doc/ros2/Contributing/Developer-Guide/#package-requirements).

### Change Requests [2.i]

This package requires that all changes occur through a pull request.

### Contributor Origin [2.ii]

This package uses DCO as its confirmation of contributor origin policy. More information can be found in [CONTRIBUTING](../CONTRIBUTING.md).

### Peer Review Policy [2.iii]

Following the recommended guidelines for ROS Core packages, all pull requests must have at least 1 peer review.

### Continuous Integration [2.iv]

All pull request must pass CI on all [tier 1 platforms](https://www.ros.org/reps/rep-2000.html#support-tiers)

### Documentation Policy [2.v]

All pull requests must resolve related documentation changes before merging.

## Documentation

### Feature Documentation [3.i]

`action_msgs` has a list of provided [messages and services](README.md).
New messages and services require their own documentation in order to be added.

### Public API Documentation [3.ii]

`action_msgs` has embedded API documentation, but it is not currently hosted.

### License [3.iii]

The license for `action_msgs` is Apache 2.0, the type is declared in the [package.xml](package.xml) manifest file, and a full copy of the license is in the repository level [LICENSE](../LICENSE) file.

There is an automated test which runs a linter that ensures each file has a license statement.

### Copyright Statements [3.iv]

The copyright holders each provide a statement of copyright in each source code file in `action_msgs`.

There is an automated test which runs a linter that ensures each file has at least one copyright statement.

The nightly test can be found at [here](http://build.ros2.org/view/Epr/job/Epr__rcl_interfaces__ubuntu_bionic_amd64/lastBuild/)

## Testing [4]

`action_msgs` is a package providing strictly message and service definitions and therefore does not require associated tests and has no coverage or performance requirements.

## Dependencies [5]

### Direct Runtime ROS Dependencies [5.i]/[5.ii]

`action_msgs` has the following runtime ROS dependencies:
* `builtin_interfaces`
* `rosidl_default_runtime`
* `unique_identifier_msgs`

It has several "buildtool" dependencies, which do not affect the resulting quality of the package, because they do not contribute to the public library API.

### Direct Runtime Non-ROS Dependencies [5.iii]

`action_msgs` does not have any runtime non-ROS dependencies.

## Platform Support [6]

`action_msgs` supports all of the tier 1 platforms as described in [REP-2000](https://www.ros.org/reps/rep-2000.html#support-tiers), and tests each change against all of them.

Currently nightly results can be seen here:
* [linux-aarch64_release](https://ci.ros2.org/view/nightly/job/nightly_linux-aarch64_release/lastBuild/testReport/action_msgs/)
* [linux_release](https://ci.ros2.org/view/nightly/job/nightly_linux_release/lastBuild/testReport/action_msgs/)
* [mac_osx_release](https://ci.ros2.org/view/nightly/job/nightly_osx_release/lastBuild/testReport/action_msgs/)
* [windows_release](https://ci.ros2.org/view/nightly/job/nightly_win_rel/lastBuild/testReport/action_msgs/)

## Vulnerability Disclosure Policy [7.i]

This package does not yet have a Vulnerability Disclosure Policy
16 changes: 16 additions & 0 deletions action_msgs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# action_msgs
This package contains several messages and services useful for ROS 2 actions.
More information about actions can be found on its [design article](http://design.ros2.org/articles/actions.html).

For more information about ROS 2 interfaces, see [index.ros2.org](https://index.ros.org/doc/ros2/Concepts/About-ROS-Interfaces/).

## Messages (.msg)
* [GoalInfo](msg/GoalInfo.msg): Goal identifier message, with a goal id and time stamp.
* [GoalStatus](msg/GoalStatus.msg): Describes a goal's current state machine status.
* [GoalStatusArray](msg/GoalStatusArray.msg): An array of [GoalStatus](msg/GoalStatus.msg) messages.

## Services (.srv)
* [CancelGoal](srv/CancelGoal.srv): Cancel Goals either by id and/or timestamp.

## Quality Declaration
This package claims to be in the **Quality Level 4** category, see the [Quality Declaration](QUALITY_DECLARATION.md) for more details.
23 changes: 20 additions & 3 deletions action_msgs/msg/GoalStatus.msg
Original file line number Diff line number Diff line change
@@ -1,15 +1,32 @@
# An action goal can be in one of these states after it is accepted by an action server.
# An action goal can be in one of these states after it is accepted by an action
# server.
#
# For more information, see http://design.ros2.org/articles/actions.html

# Indicates status has not been properly set.
int8 STATUS_UNKNOWN = 0

# The goal has been accepted and is awaiting execution.
int8 STATUS_ACCEPTED = 1

# The goal is currently being executed by the action server.
int8 STATUS_EXECUTING = 2

# The client has requested that the goal be canceled and the action server has
# accepted the cancel request.
int8 STATUS_CANCELING = 3

# The goal was achieved successfully by the action server.
int8 STATUS_SUCCEEDED = 4

# The goal was canceled after an external request from an action client.
int8 STATUS_CANCELED = 5

# The goal was terminated by the action server without an external request.
int8 STATUS_ABORTED = 6

# Goal info (contains ID and timestamp)
# Goal info (contains ID and timestamp).
GoalInfo goal_info

# Goal status
# Action goal state-machine status.
int8 status
2 changes: 1 addition & 1 deletion action_msgs/msg/GoalStatusArray.msg
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# An array of goal statuses
# An array of goal statuses.
GoalStatus[] status_list
35 changes: 23 additions & 12 deletions action_msgs/srv/CancelGoal.srv
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,39 @@
# - If the goal ID is not zero and timestamp is not zero, cancel the goal with
# the given ID and all goals accepted at or before the timestamp.

# Goal info containing an ID and timestamp
# Goal info describing the goals to cancel, see above.
GoalInfo goal_info
---
# Return codes
##
## Return codes.
##

# Indicates the request was accepted without any errors.
# One or more goals have transitioned to the CANCELING state.
# The goals_canceling list is not empty.
#
# One or more goals have transitioned to the CANCELING state. The
# goals_canceling list is not empty.
int8 ERROR_NONE=0

# Indicates the request was rejected.
# No goals have transitioned to the CANCELING state.
# The goals_canceling list is empty.
#
# No goals have transitioned to the CANCELING state. The goals_canceling list is
# empty.
int8 ERROR_REJECTED=1

# Indicates the requested goal ID does not exist.
# No goals have transitioned to the CANCELING state.
# The goals_canceling list is empty.
#
# No goals have transitioned to the CANCELING state. The goals_canceling list is
# empty.
int8 ERROR_UNKNOWN_GOAL_ID=2

# Indicates the goal is not cancelable because it is already in a terminal state.
# No goals have transitioned to the CANCELING state.
# The goals_canceling list is empty.
#
# No goals have transitioned to the CANCELING state. The goals_canceling list is
# empty.
int8 ERROR_GOAL_TERMINATED=3

# Return code
# Return code, see above definitions.
int8 return_code
# Goals that accepted the cancel request

# Goals that accepted the cancel request.
GoalInfo[] goals_canceling
109 changes: 109 additions & 0 deletions builtin_interfaces/QUALITY_DECLARATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
This document is a declaration of software quality for the `builtin_interfaces` package, based on the guidelines in [REP-2004](https://www.ros.org/reps/rep-2004.html).

# `builtin_interfaces` Quality Declaration

The package `builtin_interfaces` claims to be in the **Quality Level 4** category.

Below are the rationales, notes, and caveats for this claim, organized by each requirement listed in the [Package Requirements for Quality Level 4 in REP-2004](https://www.ros.org/reps/rep-2004.html).

## Version Policy [1]

### Version Scheme [1.i]

`builtin_interfaces` uses `semver` according to the recommendation for ROS Core packages in the [ROS 2 Developer Guide](https://index.ros.org/doc/ros2/Contributing/Developer-Guide/#versioning).

### Version Stability [1.ii]

`builtin_interfaces` is not yet at a stable version, i.e. `>= 1.0.0`.

### Public API Declaration [1.iii]

All message and service definition files located in `msg` and `srv` directories are considered part of the public API.

### API Stability Within a Released ROS Distribution [1.iv]/[1.vi]

`builtin_interfaces` will not break public API within a released ROS distribution, i.e. no major releases once the ROS distribution is released.

### ABI Stability Within a Released ROS Distribution [1.v]/[1.vi]

`builtin_interfaces` does not contain any C or C++ code and therefore will not affect ABI stability.

## Change Control Process [2]

`builtin_interfaces` follows the recommended guidelines for ROS Core packages in the [ROS 2 Developer Guide](https://index.ros.org/doc/ros2/Contributing/Developer-Guide/#package-requirements).

### Change Requests [2.i]

This package requires that all changes occur through a pull request.

### Contributor Origin [2.ii]

This package uses DCO as its confirmation of contributor origin policy. More information can be found in [CONTRIBUTING](../CONTRIBUTING.md).

### Peer Review Policy [2.iii]

Following the recommended guidelines for ROS Core packages, all pull requests must have at least 1 peer review.

### Continuous Integration [2.iv]

All pull request must pass CI on all [tier 1 platforms](https://www.ros.org/reps/rep-2000.html#support-tiers)

### Documentation Policy [2.v]

All pull requests must resolve related documentation changes before merging.

## Documentation

### Feature Documentation [3.i]

`builtin_interfaces` has a list of provided [messages and services](README.md).
New messages and services require their own documentation in order to be added.

### Public API Documentation [3.ii]

`builtin_interfaces` has embedded API documentation, but it is not currently hosted.

### License [3.iii]

The license for `builtin_interfaces` is Apache 2.0, the type is declared in the [package.xml](package.xml) manifest file, and a full copy of the license is in the repository level [LICENSE](../LICENSE) file.

There is an automated test which runs a linter that ensures each file has a license statement.

### Copyright Statements [3.iv]

The copyright holders each provide a statement of copyright in each source code file in `builtin_interfaces`.

There is an automated test which runs a linter that ensures each file has at least one copyright statement.

The nightly test can be found at [here](http://build.ros2.org/view/Epr/job/Epr__rcl_interfaces__ubuntu_bionic_amd64/lastBuild/)

## Testing [4]

`builtin_interfaces` is a package providing strictly message and service definitions and therefore does not require associated tests and has no coverage or performance requirements.

## Dependencies [5]

### Direct Runtime ROS Dependencies [5.i]/[5.ii]

`builtin_interfaces` has the following ROS dependencies:
* `rosidl_default_runtime`

It has several "buildtool" dependencies, which do not affect the resulting quality of the package, because they do not contribute to the public library API.

### Direct Runtime Non-ROS Dependencies [5.iii]

`builtin_interfaces` does not have any runtime non-ROS dependencies.

## Platform Support [6]

`builtin_interfaces` supports all of the tier 1 platforms as described in [REP-2000](https://www.ros.org/reps/rep-2000.html#support-tiers), and tests each change against all of them.

Currently nightly results can be seen here:
* [linux-aarch64_release](https://ci.ros2.org/view/nightly/job/nightly_linux-aarch64_release/lastBuild/testReport/builtin_interfaces/)
* [linux_release](https://ci.ros2.org/view/nightly/job/nightly_linux_release/lastBuild/testReport/builtin_interfaces/)
* [mac_osx_release](https://ci.ros2.org/view/nightly/job/nightly_osx_release/lastBuild/testReport/builtin_interfaces/)
* [windows_release](https://ci.ros2.org/view/nightly/job/nightly_win_rel/lastBuild/testReport/builtin_interfaces/)

## Vulnerability Disclosure Policy [7.i]

This package does not yet have a Vulnerability Disclosure Policy
13 changes: 13 additions & 0 deletions builtin_interfaces/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# builtin_interfaces
A package containing message definitions for types defined in the OMG IDL Platform Specific Model.

For more information about ROS 2 time, see [design.ros2.org](https://design.ros2.org/articles/clock_and_time.html).

For more information about ROS 2 interfaces, see [index.ros2.org](https://index.ros.org/doc/ros2/Concepts/About-ROS-Interfaces/).

## Messages (.msg)
* [Duration](msg/Duration.msg): Describes a time duration composed of seconds and nanoseconds components.
* [Time](msg/Time.msg): Describes a point in time, composed of seconds and nanoseconds components.

## Quality Declaration
This package claims to be in the **Quality Level 4** category, see the [Quality Declaration](QUALITY_DECLARATION.md) for more details.
6 changes: 6 additions & 0 deletions builtin_interfaces/msg/Duration.msg
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
# Duration defines a period between two time points. It is comprised of a
# seconds component and a nanoseconds component.

# Seconds component, range is valid over any possible int32 value.
int32 sec

# Nanoseconds component in the range of [0, 10e9).
uint32 nanosec
5 changes: 5 additions & 0 deletions builtin_interfaces/msg/Time.msg
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
# Time indicates a specific point in time, relative to a clock's 0 point.

# The seconds component, valid over all int32 values.
int32 sec

# The nanoseconds component, valid in the range [0, 10e9).
uint32 nanosec
Loading

0 comments on commit f5b4ab3

Please sign in to comment.