2023 ROS Metrics Report

Download the full report here:
metrics-report-2024-01.pdf (2.9 MB)

Once a year we check up on the general health, well-being, and growth of the ROS community by collecting metrics from the various ROS projects and services in a report. The goal of this metrics report is to give the community a snapshot of the growth and composition of the ROS community. There were a lot of changes to the ROS Community this year that required us to retool our metrics collection process. In April of 2023 our website analytics provider, Google Analytics, changed over to a new system, Google Analytics 4, that is not compatible with the old system. In August of 2023 we moved answers.ros.org over to Robotics Stack Exchange. Thankfully, Stack Exchange has a pretty great API, and this year we added a few charts that we hope will encourage you to go answer a few questions on Robotics Stack Exchange.

We take the privacy of the ROS community seriously, and we try to minimize the collection of user data, which makes constructing this report difficult. We lean heavily on proxy measurements to estimate the overall growth and health of the community. This year the metrics report consists of aggregate statistics from various ROS services, including:

  • ROS Discourse
  • Robotics Stack Exchange
  • The ROS Wiki
  • Google Analytics attached to various ROS websites
  • ROS Index
  • ROS Download Data
  • Github Contributions
  • Google Scholar Citations

This year, for the first time ever, we’re reporting Gazebo simulator metrics with our ROS metrics. These metrics are the synthesis of our logs the packages.osrfoundation.org and packages.ros.org. We include total package downloads across the two servers, downloads of Gazebo and Gazebo Classic, and Gazebo downloads broken out by distro.

Now, let’s get to the good news! We are happy to report that the ROS community is healthy, growing, and that we are more than half-way through the ROS 2 transition! Just shy of 58% of all downloads from our servers are now ROS 2. ROS 2 questions also make up 85% of ROS questions asked on Robotics Stack Exchange! ROS 2 Humble had more downloads in October 2023 than ROS 1 Noetic (32.79% vs 30.51%)

This year, most of the ROS metrics we checked have demonstrated fairly substantial growth, usually in the range of 15-25%. The one place where growth was flat, or negative, was in package downloads from our servers. For the year, ROS package downloads were only up 10% overall, and down slightly for the month of October 2023. This was also true for Gazebo. Gazebo downloads for the month of October 2023, the only year-over-year data we presently have, were down just shy of 1%. We have a theory about why downloads are down when every other metric is up, and it has to do with Docker.

As we mentioned last year, Docker use is on the rise, and we believe the official Docker images are eating into downloads from our own servers. Docker itself reports that the official ROS containers have been downloaded over ten million times. It is worth noting that each of these Docker containers includes dozens of ROS packages, so it represents much greater than ten million missed ROS package downloads. We’re not complaining, we love Docker! We did reach out to Docker Hub to see if we could access their official image download data to verify our theory. We had a number of productive conversations but they were unable to provide us with that data in time for this year’s report.

Here are some highlights from the report that illustrate how the ROS community is growing.

  • 550,365,601 ROS packages downloaded in 2023 (up 9.78%).
  • Docs.ros.org users increased by 34.29%.
  • ROS Discourse posts increased by 19%.
  • 2328 Questions were asked on Robotics Stack Exchange.
  • 87% of Robotics Stack Exchange questions were about ROS 2.
  • Our ROS LinkedIn account grew by 60% to 115,000 followers.
  • ROS Kinetic was 1.14% of package downloads in October 2023.
  • ROS 2 Humble has more downloads than Noetic!
  • ROS 2 now makes up 57.88% of ROS Downloads.
  • 11,701 academic citations of the original ROS paper.
  • 910+ companies using ROS (that we know of).

We’ve included exports of a few key slides that may be useful to everyone. The slides below show the deb package downloads by ROS distro in October of 2023 and October of 2022. Currently ROS 2 makes up just shy of 58% of all ROS downloads (probably more now) and the ROS 1 variants that use Python 2.7 have gone from about 20% of our downloads to less than 7% in just a year (it was ~70% in 2020).





The full report can be downloaded as a PDF using the link above. Many of these metrics are also available at metrics.ros.org. If you would like to borrow slides from the report, or need more information about where these numbers came from, feel free to contact us at community@openrobotics.org.

Past metrics reports can be found below.

A full list of ROS metrics reports can be found on the ROS Wiki.

19 Likes

Hi @Katherine_Scott

thank you for sharing the information!

Out of curiosity, do we have the data like how many robots and robotics products are in the market using ROS or ROS 2? (Not just using, but also products in the market.)

thanks,
Tomoya

I just realized, that the downloads are the sum of all downloads of all packages.
Therefore percentage of ros2 downloads might tell the whole story, as e.g. ros-iron-desktop-full might contain way less or more packages, as ros-noetic-desktop-full.

Is there a way to show the download numbers of certain packages by ros distro ?
E.g. ros-humble-std-msgs, ros-iron-std-msgs.
This might give a better estimate on ros installations per distro

On the metrics page I only found * service-msgs (178,797) in the top package list.

1 Like

Unfortunately we don’t have that kind of information. The only reason we have a company list is because every time I see a robotics company I check their job listings for a ROS requirement and then add them to the list. I’ve added three today alone! If someone wants to volunteer an intern to go through the list and record the products for each company, we could probably generate a product list.

One thing that’s been on my mind lately is what I call “second order” ROS users, i.e. companies that use a ROS-based robot for their business. If you look at all the AMR vendors the number of second order ROS users is probably in the tens of thousands.

I have download numbers for every ROS package off of our servers broken down by month. If you have a compelling need for that information I might be able to provide it.

The thing to keep in mind is that we’re simply reporting the results for a single server. That server is a significant part of the community, but certainly not the entire community. People build from source, download from mirrors, and use Docker containers all the time. What we’re really interested is in the magnitude and direction of the change, not necessarily the absolute value.

With so many ROS packages, it is really difficult to know which are the ones people actually use. Is there any reason why that per-package download information couldn’t be just routinely available, instead of needing a “compelling need” to access it?

I would be interested in playing around with that data if could be available.

@rkent It is all here, knock yourself out.

I have download numbers for every ROS package off of our servers broken down by month. If you have a compelling need for that information I might be able to provide it.

Let me clarify, I don’t see the need to include that data in the report or in some other fashion. As I said previously, I wouldn’t read too much into the absolute value of any download, the magnitude and direction are the only things you can really infer.

My big concern is that we want to avoid package maintainers / vendors using the package download data as a horse race (e.g. LiDAR package A has more downloads than LiDAR package B, ergo LiDAR A is the “best” LiDAR).

Come to think of it … in vscode I usually install the extension that has the highest download count … and on Amazon I buy the stuff that has good reviews and a large number of them. An efficient world can be a harsh place, and it’s a personal choice where we set the dial. Certainly something one can discuss. Personally, I believe I can handle seeing my ROS packages come in in last place.

1 Like

So, I played around with the december statistics.

I mentioned the package std-msg for a specific reason. It is stable (no second downloads due to updates), and it is mandatory to a new ros installation.

Running with this idea in mind, we can infer, that every download of this package is a new ros installation.

So I ended with this numbers :

Distro foxy noetic indigo humble rolling dashing galactic iron melodic kinetic
Downloads 10425 12599 109 46605 11339 330 3291 10476 7906 2170
Percentage 9,9 11,97 0,1 44,2 10,7 0,31 3,12 9,95 7,51 2,06

And a ros1 vs ros2 usage of
21.5% vs 78.5%

5 Likes

Thanks for sharing @JM_ROS . This is great to see. One challenge I see with all these measurements though is that the use of Docker has increased over the years and hence it is much more likely that people use docker with ros2 than with ros1. This leads to two problems: people may use existing docker image for ROS, which, as Kat mentioned may lead to an under-count. Or they apt-get install ROS packages into their own docker images which could lead to an over-count if they rebuild the image in their CI every time there is a new PR or similar.

Not sure there is a way to account for this, but as a start it might be interesting to count unique IPs downloading these packages if that data is available.

1 Like

Unique IPs wouldn’t help. We have 10s of robots behind a single IP and hundreds of students behind just a few…