ROBOTIC.INDUSTRIES

Robot Software

ROS 1 vs ROS 2: What Changed and What Broke

ROS 1 reached end of life in May 2025. What ROS 2 changed underneath, which concepts survived, and the five migration problems that consume most of the effort.

Engineering workstation in a robot cell with monitors showing motion data
Engineering workstation in a robot cell with monitors showing motion data

ROS 1 reached end of life with the final Noetic release in May 2025, so the question is no longer whether to migrate. The substantive change is that the central roscore master is gone, replaced by peer-to-peer discovery over DDS, and with it come real-time friendly execution, quality of service settings, lifecycle-managed nodes and a security model. Topics, services and the node graph survive largely intact.

May 2025ROS 1 Noetic end of life
0central master processes in ROS 2
2027 and 2029support end for the current LTS releases
5migration problems that dominate the effort

What actually changed

ROS 1 against ROS 2
AspectROS 1ROS 2
DiscoveryCentral roscore masterPeer-to-peer via DDS
TransportCustom TCPROS and UDPROSDDS with pluggable implementations
Single point of failureYes, the masterNo
Quality of serviceLatched topics onlyReliability, durability, history, deadline, liveliness
Real-time suitabilityPoor, allocations in the hot pathDesigned for it, with care
Node lifecycleAd hocManaged states with transitions
SecurityNoneDDS-Security: authentication, encryption, access control
Multi-robotAwkward, namespace tricksDomain IDs, native
Windows and embeddedLimitedSupported
Build systemcatkincolcon with ament
Pythonrospyrclpy on a shared C core

The row worth dwelling on is quality of service. In ROS 1 a subscriber either received messages or it did not. In ROS 2 a publisher and subscriber must have compatible settings, and incompatible ones connect silently and deliver nothing. A best-effort publisher and a reliable subscriber is the single most common cause of a topic that publishes into the void.

Silent incompatibility is the migration tax. There is no error when quality of service settings do not match, because the middleware treats it as a legitimate configuration. Checking publisher and subscriber settings is the first diagnostic step when data stops flowing, before touching the code.

The five problems that consume the effort

  1. Quality of service mismatches. Sensor data usually wants best effort with a small history depth; commands want reliable. Getting this wrong produces either silence or unbounded latency under load.
  2. Discovery on a busy network. Peer-to-peer discovery scales poorly beyond roughly 30 to 50 nodes on a shared subnet, because every participant announces to every other. Discovery servers or a different middleware become necessary sooner than teams expect.
  3. Time. ROS 2 separates system time, steady time and simulation time, and code that assumed one clock in ROS 1 needs auditing. Simulation time handling is a frequent source of subtle bugs.
  4. Parameters. The global parameter server is gone; parameters belong to nodes and are declared, typed and optionally validated. Configuration files usually need rewriting rather than porting.
  5. Executors and callbacks. Callback groups and multi-threaded executors give control over concurrency that ROS 1 did not offer, and code written assuming a single-threaded spin can deadlock without them.

What survived

The conceptual model is intact, which is why migration is work rather than a rewrite. Nodes, topics, services, actions, transforms, launch files, message definitions and the general package structure all carry over. Message definitions largely port with mechanical changes, and the tooling equivalents are recognisable. Most application logic moves with modest edits; the effort sits in the infrastructure around it.

A migration strategy that works

  1. Start with the message definitions. They are the contract, and porting them first lets both stacks coexist.
  2. Use a bridge during transition. Running a ROS 1 to ROS 2 bridge lets a system migrate node by node rather than in one cut, which is essential on anything with hardware drivers.
  3. Port drivers last or first, never in the middle. Hardware interfaces are where the platform differences are sharpest, so isolate them at one end of the plan.
  4. Choose the LTS release. Long-term support versions carry multi-year support windows; intermediate releases carry roughly a year. For production, the LTS choice is not close.
  5. Fix quality of service settings explicitly. Do not rely on defaults, and write the intended setting into the code with a comment saying why.

Frequently asked questions

Is ROS 1 still supported?

No. The final ROS 1 distribution, Noetic Ninjemys, reached end of life in May 2025. Systems still running it receive no upstream fixes, including security fixes.

What is the biggest difference between ROS 1 and ROS 2?

The removal of the central master. ROS 2 uses peer-to-peer discovery over DDS, which eliminates the single point of failure and brings quality of service settings, security and real-time friendly execution with it.

Why does my ROS 2 topic publish nothing?

Most often a quality of service mismatch. Incompatible reliability or durability settings between publisher and subscriber prevent a connection without raising an error, because the middleware treats it as valid configuration.

How many nodes can ROS 2 discovery handle?

Plain peer-to-peer discovery degrades somewhere around 30 to 50 participants on a shared subnet, since every participant announces to every other. Larger systems use a discovery server or a middleware implementation designed for scale.

Which ROS 2 release should a product use?

A long-term support release. LTS versions carry multi-year support, currently ending in 2027 and 2029 for the two most recent, while intermediate releases carry roughly a year.

Can ROS 1 and ROS 2 run together?

Yes, through a bridge that translates messages between the two. That is the standard way to migrate a system with hardware drivers, since it allows node-by-node porting instead of a single cutover.

Sources

  1. ROS 2 releases and support windowsOpen Robotics documentation, distribution dates and end-of-life schedule
  2. About quality of service settingsOpen Robotics documentation, compatibility rules between publishers and subscribers
  3. ROS on DDSROS 2 design article explaining the middleware decision and its consequences