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 Humble to REP 2000 #326

Merged
merged 7 commits into from
Nov 18, 2021
Merged
Changes from 1 commit
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
113 changes: 113 additions & 0 deletions rep-2000.rst
Original file line number Diff line number Diff line change
Expand Up @@ -823,6 +823,119 @@ Package manager use for dependencies:
- OpenEmbedded: opkg


Build System Support:

- ament_cmake
- cmake
- setuptools

Humble Hawksbill (May 2022 - May 2027)
--------------------------------------

Targeted platforms:

+--------------+------------------+---------------+------------------+------------+-----------------+----------------+
| Architecture | Ubuntu Jammy | Windows 10 | RHEL 8 | macOS | Debian Bullseye | OpenEmbedded / |
| | (22.04) | (VS2019) | | | (11) | webOS OSE |
+==============+==================+===============+==================+============+=================+================+
| amd64 | Tier 1 [d][a][s] | Tier 1 [a][s] | Tier 2 [d][a][s] | Tier 3 [s] | Tier 3 [s] | |
+--------------+------------------+---------------+------------------+------------+-----------------+----------------+
| arm64 | Tier 1 [d][a][s] | | | | Tier 3 [s] | Tier 3 [s] |
+--------------+------------------+---------------+------------------+------------+-----------------+----------------+
| arm32 | Tier 3 [s] | | | | Tier 3 [s] | Tier 3 [s] |
+--------------+------------------+---------------+------------------+------------+-----------------+----------------+

The following indicators show what delivery mechanisms are available for each platform.

" [d] " Distribution-specific (Debian, RPM, etc.) packages will be provided for this platform for packages submitted to the rosdistro.

" [a] " Binary releases are provided as a single archive per platform containing all packages in the Galactic ROS 2 repos file [10]_.

" [s] " Compilation from source.

Middleware Implementation Support:

+--------------------------+---------------------+---------------+----------------------------+--------------------------------+
| Middleware Library | Middleware Provider | Support Level | Platforms | Architectures |
+==========================+=====================+===============+============================+================================+
| rmw_cyclonedds_cpp | Eclipse Cyclone DDS | Tier 1 | All Platforms | All Architectures |
+--------------------------+---------------------+---------------+----------------------------+--------------------------------+
| rmw_fastrtps_cpp | eProsima Fast-DDS | Tier 1 | All Platforms | All Architectures |
+--------------------------+---------------------+---------------+----------------------------+--------------------------------+
| rmw_connextdds | RTI Connext | Tier 1 | Ubuntu, Windows, and macOS | All Architectures except arm64 |
+--------------------------+---------------------+---------------+----------------------------+--------------------------------+
| rmw_fastrtps_dynamic_cpp | eProsima Fast-DDS | Tier 2 | All Platforms | All Architectures |
+--------------------------+---------------------+---------------+----------------------------+--------------------------------+

Middleware implementation support is dependent upon the platform support tier.
For example a Tier 1 middleware implementation on a Tier 2 platform can only receive Tier 2 support.

Minimum language requirements:

- C++17
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any reason not to target c++20?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there any reason not to target c++20?

There are a few reasons we don't think we are going to do this for Humble:

  1. Every time we've switched C++ versions, it has taken some non-trivial amount of work to keep things working without warnings. Someone would have to step up to do that work.
  2. All of our Tier 1 platforms probably support C++20 well, but not all of the Tier 2 and Tier 3 ones do.
  3. Part of the ROS 2 community deals with safety certification, things like MISRA. Since those standards tend to lag behind the relevant standards, switching to a new C++ version too early can leave those users behind.

- Python 3.8


Dependency Requirements:

+-------------+---------------------------------+-------------------------------------------------------------------+
| | Required Support | Recommended Support |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Package | Ubuntu Jammy | Windows 10** | RHEL 8 | macOS** | Debian Bullseye | OpenEmbedded** |
+=============+================+================+==========+===============+==================+=====================+
| CMake | 3.21.3 | 3.22.0 | 3.18.2 | 3.14.4 | 3.18.4 | 3.16.1 / 3.12.2**** |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| EmPY | 3.3.2 |
audrow marked this conversation as resolved.
Show resolved Hide resolved
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Gazebo | 11.8.0* | N/A | N/A | 11.0.0 | 11.0.0* | N/A |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Ignition | Fortress* | N/A | N/A | Edifice* | Edifice* | N/A |
audrow marked this conversation as resolved.
Show resolved Hide resolved
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Ogre | 1.10* | N/A |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| OpenCV | 4.5.4 | 4.5.4 | 3.4.6 | 4.2.0 | 4.5.1 | 4.1.0 / 3.2.0**** |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| OpenSSL | 1.1.1l | 1.1.1l | 1.1.1g | 1.1.1f | 1.1.1i | 1.1.1d / 1.1.1b**** |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Python | 3.10.0 | 3.8.3 | 3.6.8 | 3.8.2 | 3.9.1 | 3.8.2 / 3.7.5**** |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Qt | 5.15.2 | 5.12.10 | 5.12.5 | 5.12.3 | 5.15.2 | 5.14.1 / 5.12.5**** |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| | **Linux only** |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| PCL | 1.12.0 | N/A | 1.12.0 | N/A | 1.11.1 | 1.10.0 |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| **RMW DDS Middleware Providers** |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Cyclone DDS | 0.8.x (Réplique) |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Fast-DDS | 2.4.x |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+
| Connext DDS | 5.3.1 | N/A | 5.3.1 | N/A |
+-------------+----------------+----------------+----------+---------------+------------------+---------------------+

" * " means that this is not the upstream version (available on the official Operating System repositories) but a package distributed by OSRF or the community (package built and distributed on custom repositories).

" ** " Rolling distributions will see multiple version changes of these dependencies during their lifetime.
clalancette marked this conversation as resolved.
Show resolved Hide resolved
The versions shown for OpenEmbedded are those provided by the 3.1 Dunfell release series; the versions provided by the other supported release series are listed here: https://github.com/ros/meta-ros/wiki/Package-Version-Differences .
clalancette marked this conversation as resolved.
Show resolved Hide resolved
Note that the OpenEmbedded releases series for which a ROS distro has support will change during its support time frame, as per the OpenEmbedded support policy shown here: https://github.com/ros/meta-ros/wiki/Policies#openembedded-release-series-support .
However, it will always be supported by least one stable OpenEmbedded release series.

" \**** " webOS OSE provides this different version.

This document only captures the version at the first release of a ROS distribution and will not be updated as the dependencies move forward.
These versions are thus a low watermark.


Package manager use for dependencies:

- Ubuntu, Debian: apt
- Windows: Chocolatey, pip
- macOS: Homebrew, pip
- RHEL: dnf
- OpenEmbedded: opkg


Build System Support:

- ament_cmake
Expand Down