Ignition Gazebo motivation

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.

3 Likes