Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[REP-2013] ROS 2 Rust Client Library Integration #363

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

nuclearsandwich
Copy link
Contributor

Coming out of a recent thread on ROS Discourse I've started collecting information.

I'm looking to bikeshed a little on the REP title as I am not sure that client libraries is quite comprehensive.
I started with that because that was the subject of the discourse post which prompted the REP but I think that we're going to get into covering:

  • adding new package build types
  • adding new programming language support to the rosidl pipeline
  • adding new language-specific package managers to rosdep(1)
  • incorporating a new client library into the official ROS build farm
  • adopting an incorporated client library as part of "the ros2 core"

So whoever can help me condense that down will be doing me a favor. So far my favorite is "ROS 2 Programming Language Ecosystem Support".

(1) I think there are caveats here which make this not strictly required or even recommended but I also don't see an easy development path which doesn't include it.

I think there are several things that are going to start in this REP draft and then hopefully be removed to project-specific documentation for elaboration such as how to add build types to colcon and bloom, or how to add language-specific package managers to rosdep.


Since I'm going to link this publicly shortly after opening let me just say that this is an incredibly preliminary draft and is thus

  • certainly incomplete
  • likely unclear in several places
  • possibly flat out incorrect about one or more things

With that in mind, I'm primarily seeking feedback from the ROS 2 core team about what else ought to be laid out in this document while I complete the draft.
Once I feel like there is something legible here I think it will be easier for client library contributors and ROS community members to review and I'll drop the draft status of this PR and update posts requesting more feedback.

@ros-discourse
Copy link

This pull request has been mentioned on ROS Discourse. There might be relevant details there:

https://discourse.ros.org/t/process-for-third-party-client-libraries-to-be-incorporated-into-the-core-ros-2-distribution/27325/15

Copy link

@audrow audrow left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some thoughts based on an initial reading of the REP.


colcon is the recommended build tool for ROS 2.
It is highly extensible and support for nearly all package build types is provided by extensions rather than built into colcon core.
Support for most build types is also separated into base support and ros-specific support so that colcon can be used with that build type with or without ROS.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Support for most build types is also separated into base support and ros-specific support so that colcon can be used with that build type with or without ROS.
Support for most build types is also separated into base support and ROS-specific support so that colcon can be used with that build type with or without ROS.

Should ROS be capitalized?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah this was probably just me writing fast and not editing.


* C and C++ with CMake
* python and PyPI
* C and C++ with Meson
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put this next to the other C++ entry?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had ordered these based on their activity / proximity to core but that bears making explicit if I keep this line in the Rust-specific rewrite.


Integration and Infrastructure
==============================

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be useful here to have a summary saying what are all the parts at a high level and how do they relate to the full process of integrating a language?


bloom
^^^^^

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to add a leading line that says what bloom is and maybe to have a link to it.

Hopefully this will focus the rep and make it easier to review and at
the same time provide a template for projects like rclada.
This is a mostly a description of the status quo but I am pushing to get
most direct system build dependencies described via rosdep.
This REP should focus on Rust integration. Documentation providing
explanatory material for infrastructure should not be inlined but
referenced here.
@nuclearsandwich nuclearsandwich changed the title [REP-2013] ROS 2 Client Library Integration [REP-2013] ROS 2 Rust Client Library Integration Jul 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

Successfully merging this pull request may close these issues.

3 participants