Please bear with me on a long post about urdfdom.
For those who don’t know, GitHub - ros/urdfdom: URDF parser houses the source code that both ROS 1 and ROS 2 use to parse and interact with URDF files.
Since 2012, the code there has had a dependency on TinyXML (the original version). Further, that dependency is exposed via the public API, in the form of a few functions that either consume or produce a TinyXML object.
Unfortunately, TinyXML itself has been deprecated for a long time. So we want to move urdfdom exclusively to TinyXML2, but we have been concerned that doing that would break current users of the urdfdom API.
One thing we could do here would be to have a transition period where we introduced TinyXML2 APIs alongside the existing TinyXML ones. I suggested this earlier this year, and SMillerDev took up the challenge. Unfortunately, the resulting PR is large and we would have to maintain a lot more code.
Instead, we recently took a look at the uses of urdfdom across all packages in Rolling, and we found that there are zero callers of the affected APIs there. That doesn’t mean there are zero callers in the world; we can’t see things that aren’t released publicly. However, the fact that there are no callers in Rolling gives us confidence that there are few callers of these APIs in the world.
Therefore, we are very seriously considering closing the PR adding in TinyXML2 APIs and merging this PR that replaces TinyXML with TinyXML2. That would break the API, but it would be much simpler going forward and we don’t expect too much fallout from it.
This post acts as both a notice that we are going to do this, and as a question: do you depend on the TinyXML APIs from urdfdom? If you do, please respond and let us know how you are using them. If we don’t hear back from users that these APIs are important to them, then we will likely break the API and bump the major number of the urdfdom library.
Please also respond if you have any other questions or concerns about this change. Thank you.