# The DDS Race: what we've seen so far

**URL:** <https://discourse.openrobotics.org/t/the-dds-race-what-weve-seen-so-far/27421>\
**Category:** ROS General\
**Tags:** ros2, dds, rmw\
**Created:** [September 21, 2022, 4:34pm UTC](https://discourse.openrobotics.org/t/the-dds-race-what-weve-seen-so-far/27421 "2022-09-21T16:34:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![FelipeGdM](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/felipegdm/32/12650_2.png) [@FelipeGdM](https://discourse.openrobotics.org/u/FelipeGdM)\
**Post date:** [September 21, 2022, 4:34pm UTC](https://discourse.openrobotics.org/t/the-dds-race-what-weve-seen-so-far/27421/1 "2022-09-21T16:34:31Z")

</div>

Hello everyone!

My name is Felipe, I’m a mechatronics engineering student and I’m writing an article about ROS 2 messaging performance and in the process I spent some time to understand the evolution steps that brought us to where we are. It may be called “The DDS Wars” or “DDS Cambrian Explosion”, I personally prefer “The DDS Race” as it moves us forward as the [Space Race](https://en.wikipedia.org/wiki/Space_Race) but with no nuclear threat, the truth is a lot already happend and one may get lost on the way.

I’m trying to build a timeline of events and would love to hear from you if I’m missing something. To the best of my knowledge, this recolection of events wasn’t done before, so I believe it is a small contribution to the community.

As stated in the [ROS 2 design docs](https://design.ros2.org/articles/ros_middleware_interface.html) one of the objectives of creating the ROS Middleware Interface (RMW) is to seamslly support different DDS implementations. At the time of ROS 2 Ardent release, 3 different DDS implementations where supported, as shown in [REP-2000](https://www.ros.org/reps/rep-2000.html#ardent-apalone-december-2017-december-2018): Fast-RTPS, Connext DDS and OpenSplice, being Fast-RTPS the default one. The support for 3 different DDS providers in the first ROS 2 release arguably shows that the intentions of RMW creation where successful.

The major change in this scenario came in the end of 2019 with the [introduction of Cyclone DDS](https://github.com/ros-infrastructure/rep/pull/206) and the subsequent announcement that [OpenSplice Community development efforts would migrate to the Cyclone DDS project](http://discourse.ros.org/t/opensplice-move-to-eclipse-cyclone-dds-in-ros-2/12370). As [REP-2000](https://www.ros.org/reps/rep-2000.html#ardent-apalone-december-2017-december-2018) shows again, from ROS 2 Bouncy until Eloquent, 4 DDS providers were supported, the same 3 from Ardent plus the young Cyclone DDS. Fast-RTPS and Connext DDS received Tier 1 support and OpenSplice and Cyclone DDS received Tier 2 support

In the first ROS 2 LTS release, Foxy, things start to be more interesting. Fast-RTPS changed its name to Fast DDS, the support for OpenSplice was officialy dropped and [a new DDS provider emerged](http://discourse.ros.org/t/introduction-gurumdds-rmw-gurumnetworks/16866) with Tier 3 support, the commercial solution GurumDDS. As Cyclone DDS support was upgraded from Tier 2 to 1, the TSC announced that would [re-evaluate the default ROS middleware layer that ships with each ROS 2 distro](http://discourse.ros.org/t/community-feedback-default-rmw-for-ros-2-galactic/16450) along the available free and open source DDS solutions with permissive licenses and Tier 1 support.

For the upcomming release, Galactic, a technical report [was prepared](https://osrf.github.io/TSC-RMW-Reports/galactic/) with benchmarking tests and [community feedback](http://discourse.ros.org/t/community-feedback-default-rmw-for-ros-2-galactic/16450) in order to evaluate both options and the TSC decided to [change the default DDS provider from Fast DDS to Cyclone DDS](http://discourse.ros.org/t/ros-2-galactic-default-middleware-announced/18064).

For the second ROS 2 LTS release, Humble, the same [technical report was prepared](https://osrf.github.io/TSC-RMW-Reports/humble/) with benchmarks and [a community survey](http://discourse.ros.org/t/survey-default-dds-implementation-for-ros-2-humble-due-10-12-2021/22575) and the TSC chose [Fast DDS as default middleware for the new release](http://discourse.ros.org/t/fast-dds-selected-as-the-ros-2-humble-default-middleware/23374) in a very close decision in a [2-round vote with final stand of 10 votes against 9](https://docs.google.com/presentation/d/19WUgt57s8lBgV_aMFblvo_iwUujLuQVdusC_3DGZwI8/edit).

And this is where we stand today, from Ardent to Humble, eProsima’s solution is the default RMW provider, with the exception being the Galactic release, where Cyclone DDS was the chosen one.

It is important to remark that the TSC decision of default RMW provider has limited impact in the community, as stated before:

> [@ROS 2 Galactic Default Middleware Announced](https://discourse.openrobotics.org/t/ros-2-galactic-default-middleware-announced/18064/1):
>
> Importantly, changing the RMW configuration on your robot is simply a matter of [running a handful of commands](https://index.ros.org/doc/ros2/Installation/DDS-Implementations/)

It will definetelly affect first-time users of ROS 2, but any intermediate user is capable of switching between RMW implementations. Said that, I would argue that the TSC tech report is far more important than its decision on the default RMW, as the report provide a techninal review of the available options and is a valuable tool on the decision of which RMW to use. By the end of the day, the best source of information always is on-site testing, as it can account for all specificities of each use case. The good old [_nullius in verba_](https://en.wikipedia.org/wiki/Nullius_in_verba) still applies.

As we are approaching the time of the year that the survey is made, some suggestions may be made to improve the process as a whole. The main motivation of this post was the struggle to piece together all the information, as it was scattered all over ROS discourse, so I would suggest to use the same set of category/tags so it is easier to find this same-related topics.

For instance, at time of writing, [community feedback request for Galactic](http://discourse.ros.org/t/community-feedback-default-rmw-for-ros-2-galactic/16450) has “ros2”, “dds” and “galactic” tags while [community feedback request for Humble](http://discourse.ros.org/t/survey-default-dds-implementation-for-ros-2-humble-due-10-12-2021/22575) has “ros2”, “rmw” and “humble” tags. Even though both address the same subject, the only shared tag is “ros2”, which is present in almost every post nowadays. In the same way, the [Galactic announcement](http://discourse.ros.org/t/ros-2-galactic-default-middleware-announced/18064) and [Humble announcement](http://discourse.ros.org/t/fast-dds-selected-as-the-ros-2-humble-default-middleware/23374) only share the “ros2” tag. Maybe an umbrella tag “dds-evaluation” can solve this an put everyone together?

Another important remark is the disclosure of the voting result from TSC in the Humble announcement, as it is a significant step towards transparency of the process. It would be nice to see it again in the next editions of this decision. It would be even better if a press release was made (or something like that) so it would become a bibtex reference nicer than a google presentation, but I may be overstepping here 😆

At last, but not least, a nice meme to summarize the topic

> [@Fresh ROS memes, take 2](https://discourse.openrobotics.org/t/fresh-ros-memes-take-2/25597/32):
>
> ![image](https://us1.discourse-cdn.com/flex022/uploads/ros/original/2X/1/17f365aa4a134fc5f2ae242f18158aa464728049.jpeg)

I apologize if I missed some important event in the timeline or wrongly reported some of episodes, I would love to hear some feedback from you

---

<div class="post-metadata">

**Author:** ![mikeferguson](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/mikeferguson/32/211_2.png) [@mikeferguson](https://discourse.openrobotics.org/u/mikeferguson)\
**Post date:** [September 22, 2022, 2:38am UTC](https://discourse.openrobotics.org/t/the-dds-race-what-weve-seen-so-far/27421/2 "2022-09-22T02:38:23Z")

</div>

One note - based on the [TSC notes from 7-21-2022](http://discourse.ros.org/t/ros-2-tsc-meeting-minutes-07-21-2022/26647) - I don’t think there will be any change of default DDS implementation for the upcoming Iron release (in 2023). And then it looks like the TSC will avoid changing defaults between non-LTS and LTS releases - so the next review (and possible change) would be for the 2025/K release (as 2024/J will be an LTS).

---

<div class="post-metadata">

**Author:** ![christophebedard](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/christophebedard/32/1514_2.png) [@christophebedard](https://discourse.openrobotics.org/u/christophebedard)\
**Post date:** [September 22, 2022, 3:15am UTC](https://discourse.openrobotics.org/t/the-dds-race-what-weve-seen-so-far/27421/3 "2022-09-22T03:15:59Z")

</div>

The real winner of this ~~DDS~~ middleware space race will be email and [rmw\_email](https://github.com/christophebedard/rmw_email) 😜

 ![image](https://us1.discourse-cdn.com/flex022/uploads/ros/original/2X/5/5fd3dd897b40679aedb84d67f7b4eddaa76e4c56.jpeg)

---

<div class="post-metadata">

**Author:** ![Katherine\_Scott](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/katherine_scott/32/4434_2.png) [@Katherine\_Scott](https://discourse.openrobotics.org/u/Katherine_Scott)\
**Post date:** [September 22, 2022, 3:54pm UTC](https://discourse.openrobotics.org/t/the-dds-race-what-weve-seen-so-far/27421/4 "2022-09-22T15:54:01Z")

</div>

This is a wonderful little write up and I appreciate it!

I think recording our history is incredibly important, and my favorite classes in college were the ones where the professor contextualized the development of a particular algorithm with what else was happening at the time. Personally, I try to preface most of my talks with a history of ROS and Open Robotics / Willow Garage. We get a lot of questions about why certain things in ROS are designed in a certain way (cough, cough, build tools), and people fail to realize that decisions get made based on the current state of the art at a particular point in history.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/b/6/b607ee3cc8e908b1b613bd74a683d749fea635a1.svg) [@system](https://discourse.openrobotics.org/u/system)\
**Post date:** [October 22, 2022, 3:54pm UTC](https://discourse.openrobotics.org/t/the-dds-race-what-weve-seen-so-far/27421/5 "2022-10-22T15:54:57Z")

</div>

Closed on October 22, 2022, 3:54pm UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
