Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add quality declarations for each package except test_msgs #92

Merged
merged 7 commits into from
Apr 30, 2020
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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).
brawner marked this conversation as resolved.
Show resolved Hide resolved

## 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.
brawner marked this conversation as resolved.
Show resolved Hide resolved

### 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
brawner marked this conversation as resolved.
Show resolved Hide resolved

## 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.
21 changes: 19 additions & 2 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)
brawner marked this conversation as resolved.
Show resolved Hide resolved
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