This REP describes the metapackages for the ROS Melodic release and for releases that follow until otherwise replaced by a similar update REP.
This REP updates REP 131 [3] and REP 142 [5] for changes in packages.

For a discussion on the general motivation and role of variants,
please see REP 108 [1].

As of ROS Hydro we have completed the transition to using
metapackages instead of variants.
For more information on metapackages see REP 127 [2].

This document covers the common metapackages used for recommended
installations.
It is expressed in the ros/metapackages repository on github.com
[4].

This REP proposes the same entrypoints as REP 108 and merely updates
the variant definitions to reflect the organizational changes in ROS
stacks.
In particular, in ROS Melodic the robot metapackage is contracted to remove
robot_model and instead explicitly list the necessary packages.

The definitions in this REP are more focused and concise for clearer
purpose, and do not list all transitive dependencies explicitly.

The capability variants organize commonly used libraries that are
specific to a class of use case.
We also define a simulators variant that provides an organizational
role for higher-level variants.
We discourage GUI dependencies in these stacks, if possible.

The desktop variants are main entry points for users.
The desktop_full is a "batteries included" experience for users and
attempts to collect stable, well-documented libraries.
These libraries may be specific to certain classes of robots, such as
mobile robots, though they are not specific to a particular robot.
The desktop variant is more minimal and only provides the stacks in
the robot variant, plus visualization and debugging tools.
Both of these variants contain tutorials for the stacks they provide.