bindings icon indicating copy to clipboard operation
bindings copied to clipboard

feat: initial ROS2 AsyncAPI contribution by SIEMENS AG

Open gramss opened this issue 9 months ago • 4 comments

Description

  • Initial PR for ROS2 integration into AsyncAPI as introduced by #254

Maintaining will be done through @amparo-siemens and me. Further maintainers and improvements suggested in #254 are highly welcome.

This binding is tested already in a few internal tools and generators as seen in this presentation: ROSCon DE

cc: @renzo-sie (thank you for the preparations!) and @fmvilas

gramss avatar Mar 07 '25 11:03 gramss

My 2c as a ROS dev: ROS 2 parameters are a must-have for this to represent a ROS 2 interface.

@Achllle while we think that could be really interesting to include the parameters, we don't think that it is a hard requirement to have them to be able to have the first version of the ROS2 bindings. What do you think? Do you already have some ideas to include them? Would you want to have a first call with us to talk about this topic and further steps?

amparo-siemens avatar Mar 17 '25 12:03 amparo-siemens

Considering the ROS 2 version of this effort, node_idl / NoDL includes them in their spec, I would argue this is a must-have for a complete spec. It's fine by me if it happens in two phases, but the point of a spec is that it's complete.

Achllle avatar Mar 17 '25 18:03 Achllle

Considering the ROS 2 version of this effort, node_idl / NoDL includes them in their spec, I would argue this is a must-have for a complete spec. It's fine by me if it happens in two phases, but the point of a spec is that it's complete.

yes. I agree that parameters need to be added to the ros2 bindings. In our use cases, we did not use them so far. That is why they slipped our implementation. I would like to add them in a second step.

From what I've gathered, parameters are interfaced through fixed services that all nodes have, unless pro-actively deactivated. What can be transported is also fixed in terms of data / message types. So like you put it, it might only be necessary to add to a node==application what parameters it has and probably not list all the additional service interfaces that a node has under the hood.

We need to investigate this more. I still am having trouble how it embeds into an asyncAPI binding.. Is somebody in the ros-infrastructure team already familiar with asyncAPI @Achllle ?

gramss avatar Mar 17 '25 21:03 gramss

The best way to get involvement from the ROS community would be via a post in ROS discourse!

Achllle avatar Mar 17 '25 21:03 Achllle

The best way to get involvement from the ROS community would be via a post in ROS discourse! @Achllle

https://discourse.ros.org/t/invitation-to-collaborate-on-asyncapi-specification-for-ros2/42915 Finally came around to get the discourse post together.

@fmvilas if you have the time, it would be a pleasure to have you join such a meeting. @amparo-siemens and myself try to bring a short summary up until the meeting about the status of the ongoing discussion here.

gramss avatar Apr 01 '25 08:04 gramss

@gramss @amparo-siemens @fmvilas I'm hoping this doesn't get stuck in limbo - what needs to be done to get this over the finish line?

Achllle avatar May 16 '25 17:05 Achllle

Thanks for bringing this up, @Achllle. I somehow missed the notifications. My recommendation is to tidy up this PR a bit and mark all the conversations as resolved when they are. This way it will be clearer what's still missing.

That said, in general, my role here is to be a facilitator. You folks are the ROS 2 experts. I can only suggest stuff and ask questions but ultimately it's up to you to decide how to structure the binding. Sure, let's not misuse stuff like $ref and other parts of the spec but other than that, you decide. For the good and for the bad 😄

Let's make sure we give this a final push 👍 If I ever miss another notification feel free to ping me on Slack or LinkedIn.

fmvilas avatar May 19 '25 10:05 fmvilas

Thank you all!

@fmvilas I have tidied up all open conversations. Agree that we should have the $ref discussion in asyncapi/spec#930

I hope we can finally merge this now 👍

Again, thank you all for your contributions! We are already in the process of finishing up and open sourcing our next tool, to generate ROS 2 asyncAPI specifications (based on this spec). Expect this to be delivered in the next months, latest before ROSCon Singapur.

Enjoy the summer everybody.

gramss avatar May 31 '25 13:05 gramss

LGTM as it is 👍

We should now proceed with the PRs in the github.com/asyncapi/spec and github.com/asyncapi/spec-json-schemas repos. I don't think we have to add anything to the github.com/asyncapi/parser-js repo.

In the spec repo, we should add the ros2 binding in the Server Object, Channel Object, Operation Object, Message Object, and all the binding references in the Components Object. This is the file to modify: https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#componentsObject. The PR title should start with feat because we want this to trigger a new version the spec: 3.1.0.

In the spec-json-schemas repo, we should add the ros2 binding JSON Schema definition in the same places as above. I'm less familiar with this repo but maybe @jonaslagoni or @Pakisan can guide you a little bit.

And that's it, with that in place we can finally proceed to merge everything have have the ros2 binding available.

cc @derberg @dalelane @char0n @GreenRover please have a look and let them know if I missed something 🙏

fmvilas avatar Jun 02 '25 08:06 fmvilas

LGTM as it is 👍

We should now proceed with the PRs in the github.com/asyncapi/spec and github.com/asyncapi/spec-json-schemas repos. I don't think we have to add anything to the github.com/asyncapi/parser-js repo.

In the spec repo, we should add the ros2 binding in the Server Object, Channel Object, Operation Object, Message Object, and all the binding references in the Components Object. This is the file to modify: https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#componentsObject. The PR title should start with feat because we want this to trigger a new version the spec: 3.1.0.

In the spec-json-schemas repo, we should add the ros2 binding JSON Schema definition in the same places as above. I'm less familiar with this repo but maybe @jonaslagoni or @Pakisan can guide you a little bit.

And that's it, with that in place we can finally proceed to merge everything have have the ros2 binding available.

cc @derberg @dalelane @char0n @GreenRover please have a look and let them know if I missed something 🙏

@gramss Yep, just bring schemas back to schemas repo and everything will be fine

Write to me if you will stuck

Pakisan avatar Jun 04 '25 20:06 Pakisan

LGTM as it is 👍 We should now proceed with the PRs in the github.com/asyncapi/spec and github.com/asyncapi/spec-json-schemas repos. I don't think we have to add anything to the github.com/asyncapi/parser-js repo. In the spec repo, we should add the ros2 binding in the Server Object, Channel Object, Operation Object, Message Object, and all the binding references in the Components Object. This is the file to modify: https://github.com/asyncapi/spec/blob/master/spec/asyncapi.md#componentsObject. The PR title should start with feat because we want this to trigger a new version the spec: 3.1.0. In the spec-json-schemas repo, we should add the ros2 binding JSON Schema definition in the same places as above. I'm less familiar with this repo but maybe @jonaslagoni or @Pakisan can guide you a little bit. And that's it, with that in place we can finally proceed to merge everything have have the ros2 binding available. cc @derberg @dalelane @char0n @GreenRover please have a look and let them know if I missed something 🙏

@gramss Yep, just bring schemas back to schemas repo and everything will be fine

Write to me if you will stuck

@Pakisan could you tell us where exactly we need to add our contribution? Is it into the definitions folder? Or in the bindings folder? Should we add them in the bindings and the definitions will be automatically updated? Thank you for your help :smile:

amparo-siemens avatar Jun 05 '25 08:06 amparo-siemens

@amparo-siemens @gramss

Put your bindings under https://github.com/asyncapi/spec-json-schemas/tree/master/bindings

And create PR. Under it I'll review your changes and will provide further instructions

upd:

Bind them with each needed object, like this https://github.com/asyncapi/spec-json-schemas/blob/master/definitions/3.0.0/messageBindingsObject.json

Server, Message, Channel etc.

Pakisan avatar Jun 10 '25 11:06 Pakisan

Is there anything pending here @fmvilas? 😄

amparo-siemens avatar Jul 04 '25 10:07 amparo-siemens

@fmvilas schemas were merged today https://github.com/asyncapi/spec-json-schemas/pull/582

What's next steps are?

fyi: @derberg

Pakisan avatar Aug 08 '25 13:08 Pakisan

well schemas should not be released as bindings and spec is not released 😃 for that we need new release cycle to start, and volunteer release coordinator: https://github.com/asyncapi/spec/blob/master/RELEASE_PROCESS.md

derberg avatar Aug 08 '25 14:08 derberg

I volunteer to become release coordinator for 3.1.0. Unless someone else wants to try that ride 😄 Or want to pair with me.

@amparo-siemens to answer your question, what's still pending is that we should release a new version of the spec to accommodate the ROS2 binding. Once that's done, everything else will follow. You know, this binding, the spec-json-schema PR that was reverted, and I think that's it because the parser-js will pick up changes from the spec-json-schema repo automatically IIRC.

This is a minor release so it shouldn't take long. What's making it to take longer is the holiday season. I was out the whole July, partially active in August as I'm writing a book, Lukasz will be out some days in August, and I bet other spec code owners will be out too. So, in short, I can't promise this will be done in August but if everyone is available, I'll try my best.

fmvilas avatar Aug 12 '25 11:08 fmvilas

@fmvilas there might be another repo waiting for this to become official.. 😇 ROSITA (ROS Siemens Introspection Tool for AsyncAPI)

gramss avatar Aug 22 '25 11:08 gramss

haha! love the name 🌹

fmvilas avatar Sep 02 '25 17:09 fmvilas

@fmvilas any update on the V3.1 minor release? 🙂

gramss avatar Sep 27 '25 10:09 gramss

@fmvilas any update on the V3.1 minor release? 🙂

Release on me, my bad. I'll prepare needed things in a few days

Pakisan avatar Sep 27 '25 10:09 Pakisan

in case you missed https://github.com/asyncapi/spec-json-schemas/pull/582#issuecomment-3347636902

@amparo-siemens @gramss I'm available for onboarding call. Please reach out to me at [email protected] to sync on the exact day and time. It's purely bindings maintainance onboarding but I'll also share overall info about how the AsyncAPI Initiative operates.

derberg avatar Oct 22 '25 12:10 derberg

in case you missed asyncapi/spec-json-schemas#582 (comment)

@amparo-siemens @gramss I'm available for onboarding call. Please reach out to me at [email protected] to sync on the exact day and time. It's purely bindings maintainance onboarding but I'll also share overall info about how the AsyncAPI Initiative operates.

Sorry, we missed it. We will reach you now 🙂

amparo-siemens avatar Oct 22 '25 12:10 amparo-siemens

Hey folks, fyi we scheduled our Spec Triage meeting: https://github.com/asyncapi/spec/issues/1131#issuecomment-3533564832

First time in a very, very long time 😄 I think v3-trauma has passed 😄

derberg avatar Nov 14 '25 16:11 derberg