Ignition Gazebo motivation

Hello everyone,

I’m new to the Gazebo community and recently saw the warning about Gazebo 11 being the latest version, but I’m not understanding the motivation for transitioning to Ignition Gazebo, can someone explain it to me?

By motivation, I mean the reasons that led the developer team to opt for Gazebo Ignition, instead of a Gazebo 12, for example.

Hi @fainnc, good question. We have a high-level explanation on Ignition’s About page:

After over 15 years of development it was time for a significant upgrade and modernization. This upgrade also provided the opportunity to move away from a monolithic architecture to a collection of loosely coupled libraries. The scope of these changes required a new code base and name to distinguish Ignition from its predecessor.

To provide more context, the simulation team at Open Robotics started moving Gazebo’s codebase into reusable libraries years ago, starting with SDFormat, and then with multiple Ignition libraries like Math, Transport and Messages.

While transitioning from Gazebo’s internal libraries to the reusable ones, we realized that migrating the entire codebase while tick-tocking all public APIs would be an immense and slow effort. We went through the entire process of deprecating gazebo::math on Gazebo 8 and removing it on Gazebo 9, which required a lot of core code changes, as well as a big migration effort for downstream users. At that point, we started questioning whether the slow migration would be worth the effort and ended up never fully migrating gazebo::transport to ignition::transport.

But most importantly, we realized that it would be tough to make important architecture improvements while still providing a gentle tick-tock upgrade route for downstream users. Ignition’s codebase has various large improvements such as an entity-component-system architecture, and the abstract Ignition Physics and Ignition Rendering interfaces. We’d either have to compromise to very little change, or we’d add so much extra complexity to the migration itself that its development may shadow all the actual functionality being developed.

For these reasons, we decided to make the Gazebo 11 release out of the classic codebase and support it for 5 years, and in parallel provide Ignition Gazebo releases so that users would have time to migrate from one to the other.

Fun fact: When we started the development of Ignition Gazebo, we initially planned for its first version to be “Gazebo 11”, see all the references to gz11 branches in the Ignition org.

I hope this sheds some light :fire: into the decisions that were made.


Thanks for the reply.

I’m loving the Gazebo simulator, I started by modifying some plugins and I hope to have a significant contribution to the community in the future.


I really enjoyed this new Ignition code architechture. Now it seems easier to have your own custom rendering engine, physics, plugins… Not only that, but the new features and GUI are awesome.

Other thing that I really enjoyed is the fact that ROS and Ignition are separeted. There is no full installation of ROS2 that brings Ignition together. You must use a bridge between the two of them, which IMO makes things more clear for the newcomers, what is the role of ROS and Ignition. There is no need of installing Ignition/Gazebo inside the robot.

1 Like

A slightly relevant discussion was held here: Why are ROS and Ignition/Gazebo diverging (or not converging)? - General - ROS Discourse .