# ABI/API Compliance Checker in github workflow

**URL:** <https://discourse.openrobotics.org/t/abi-api-compliance-checker-in-github-workflow/38141>\
**Category:** ROS General\
**Tags:** ros2, quality-assurance, ci\
**Created:** [June 8, 2024, 7:44pm UTC](https://discourse.openrobotics.org/t/abi-api-compliance-checker-in-github-workflow/38141 "2024-06-08T19:44:43Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![tomoyafujita](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/tomoyafujita/32/6097_2.png) [@tomoyafujita](https://discourse.openrobotics.org/u/tomoyafujita)\
**Post date:** [June 8, 2024, 7:44pm UTC](https://discourse.openrobotics.org/t/abi-api-compliance-checker-in-github-workflow/38141/1 "2024-06-08T19:44:43Z")

</div>

Hi ROS users and developers,

i would like to open discussion and have feedback from community.

> <https://github.com/ros2/rclcpp/issues/2555>
>
> \## Feature request
> 
> \#### Feature description
> 
> Integrate ABI/API compliance c…hecker in github workflow to check ABI compatibility for every PR to see if the fix can be backported automatically with label.
> 
> \#### Background
> 
> Currently, for every PR, we (developers and maintainers) check the ABI compatibility if the PR is backportable to already available distribution. Sometimes it could be hard to tell with looking at the source code for sure, this also depends on the developers's skill and experience. (I personally run ABI compliance checker to make sure for this.)
> 
> Basically all bug fixes should be backported to the downstream distribution, but sometimes we miss and do that \`need-to-do\` or \`requested\` basis. (we can find comments requesting or asking for the backport to released distribution.)
> 
> To avoid this burden for developers and maintainers and keep the high quality for ROS distribution, it would be nice to have ABI compliance checker automatically run against the PR, so that we will be able to know the fix is ABI compatible with the tag or label provided by the workflow.
> 
> \### Note
> 
> This \`ABI Compatible\` or \`Backport-able\` tag is an additional information for maintainers, says this does not mean we have to backport the fix to already released distros.
> Although ABI is compatible, different behavior or significant different user-experience should be avoided breaking the user space.
> 
> \#### Implementation considerations
> 
> \- we can integrate https://github.com/lvc/abi-compliance-checker to github workflow. (or any other tools or recommendation?)
> \- build target branch and PR branch or repo to check the ABI compatibility for every commits.
> \- new label \`ABI compatible\` needs to be introduced and tagged by workflow.
> 
> I am creating this issue on rclcpp (because that is where i can find this situation most.) but the following core repositories can have the same ABI checker CI.
> 
> \- https://github.com/ros2/rcl.git
> \- https://github.com/ros2/rcl\_logging.git
> \- https://github.com/ros2/rcpputils.git
> \- https://github.com/ros2/rcutils.git
> \- https://github.com/ros2/rmw.git
> \- https://github.com/ros2/rmw\_connextdds.git
> \- https://github.com/ros2/rmw\_cyclonedds.git
> \- https://github.com/ros2/rmw\_dds\_common.git
> \- https://github.com/ros2/rmw\_fastrtps.git
> \- https://github.com/ros2/rmw\_implementation.git
> \- https://github.com/ros2/rosbag2.git
> 
> \`\`\`mermaid
> flowchart TD
> A\[PR / Every Commit\] --\>|workflow| B\[ABI Compliance Check\]
> B --\> C{ABI Compatible?}
> C --\>|Yes| D\[Tag / Label\]
> D --\> E\[Code Review\]
> C --\>|No / Not Required| E\[Code Review / Approval\]
> C --\>|ABI Compatible Required?| A\[PR / Every Commit\]
> E --\>|Mergifyio| F\[Backport Process\]
> \`\`\`
> 
> after all, i think this will do some good for ROS users, developers and maintainers to accelerate the development process and ROS quality.
> 
> Tomoya,

### Problem

- Development and Operation Burden: maintainer and developer burden to check ABI compatibility for backport.
- Quality: we sometimes miss backporting for released distribution unless requested. (bug fixes basically should be backported to available distribution to keep the consistent quality for all supported distribution.)

### Proposal

Integrate ABI/API compliance checker in github workflow to check ABI compatibility for every PR to see if the fix can be backported automatically with label.

### What’s in it for us?

- User: Quality Improvement, potentially all bug fixes that ABI compatible with can backport to already released distribution.
- Developer/Maintainer: Cost Effective, automatically determine if the fix is backport-able for already released distribution. (automatically labeled.)

 ![image](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/e/b/eb5e56f897e1dea07e36750e7e271f74e2edfd50.png)

_ **Comments and feedbacks are welcome!!! Please share your thoughts!** _

Best,  
Tomoya

---

_[View the full topic](https://discourse.openrobotics.org/t/abi-api-compliance-checker-in-github-workflow/38141)._
