[Documentation] [TitleIndex] [WordIndex

Software Status

A key goal of the ROS-Industrial package is to provide open source packages that are capable and reliable enough to be utilized in production level code. This goal is often at odds with the agile software development practices of the ROS community. Often times software is introduced at a less than production level. To identify this software as such, ROS-Industrial has adopted a simple three level scale for classifying software readiness. This status by design is not based on any quantitative evaluation, although these will come later. Rather, the status is merely the author/developer/maintainer's informed opinion on whether the code is production ready.

Status Hierarchy

The software status indicators shall apply to ROS-Industrial releasable software units (meta-packages and/or repositories). In some cases, package level status may also be given when appropriate (although this is not desired).

Assigning Status

The first two status levels, experimental and developmental, can be assigned without review. This is typically done by the developer or maintainer. The highest status status level should only be assigned with the agreement of other reviewers. Other reviewers may include developers, maintainers, or users.

Wiki Embedding

The status levels should be embedded in the wiki, just below the auto generated header (see the industrial_core page as an example). The status level can be tied to a ROS version using the wiki version macros:

{{{#!wiki version fuerte
Fuerte status
}}}

To ensure consistent (and easily updatable) verbiage, the status should be linked to the original text using the wiki Include macro as follows:

Production ready

<<Include(Industrial/Software_Status/Production_Ready)>>

Developmental

<<Include(Industrial/Software_Status/Developmental)>>

Experimental

<<Include(Industrial/Software_Status/Experimental)>>

Full Example

The following example shows status embedding for two different ROS versions (use the ROS version buttons to change version).

Wiki Text

{{{#!wiki version fuerte_and_older
<<Include(Industrial/Software_Status/Experimental)>>
}}}
{{{#!wiki version groovy
<<Include(Industrial/Software_Status/Developmental)>>
}}}
{{{#!wiki version hydro_and_newer
<<Include(Industrial/Software_Status/Production_Ready)>>
}}}

Wiki Result

  Show EOL distros: 

Experimental

EXPERIMENTAL: This status indicates that this software is experimental code at best. There are known issues and missing functionality. The APIs are completely unstable and likely to change. Use in production systems is not recommended. All code starts at this level. For more information see the ROS-Industrial software status page.

Developmental

DEVELOPMENTAL: This status indicates that this software is not yet production ready code. The software has some level of unit-testing. There are known issues and missing functionality. The APIs are unstable but unlikely to change drastically. Use in production systems will likely require modifications including improvements and/or bug fixes. For more information see the ROS-Industrial software status page.

Production Ready

PRODUCTION: This status indicates that this software is production ready code. It meets qualitative criteria for being used in production systems. There are few or no known issues, and none are critical. The APIs are stable and unlikely to change. The software has a comprehensive test suite, documentation, and has been used on production level code in the past. The code has undergone a limited level of review to obtain this status. For more information see the ROS-Industrial software status page.

Status Definitions

Production Ready

PRODUCTION: This status indicates that this software is production ready code. It meets qualitative criteria for being used in production systems. There are few or no known issues, and none are critical. The APIs are stable and unlikely to change. The software has a comprehensive test suite, documentation, and has been used on production level code in the past. The code has undergone a limited level of review to obtain this status. For more information see the ROS-Industrial software status page.

Developmental

DEVELOPMENTAL: This status indicates that this software is not yet production ready code. The software has some level of unit-testing. There are known issues and missing functionality. The APIs are unstable but unlikely to change drastically. Use in production systems will likely require modifications including improvements and/or bug fixes. For more information see the ROS-Industrial software status page.

Experimental

EXPERIMENTAL: This status indicates that this software is experimental code at best. There are known issues and missing functionality. The APIs are completely unstable and likely to change. Use in production systems is not recommended. All code starts at this level. For more information see the ROS-Industrial software status page.

Future Improvements

The assignment of these simple three level indicators is simply a start to real ROS software evaluation. It meets the urgent need to communicate software maturity to ROS-Industrial users. As time goes on, this evaluation is expected to include quantitative software measurements that are more accurate than the current qualitative evaluations currently used.


2018-09-15 12:21