-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
[ROS] Add Official Docker image for ROS2 #1381
Conversation
I'm totally lost as to why this is being proposed as a new image instead of
being tags of the existing "ros" image?
|
Very understandable; the confusion perhaps stems from that the projects are so similarly named but in many ways separate parallel efforts. Among the differences between ROS (hereon referred to as ROS1) and ROS2: separate package ecosystem, non-interchangeable APIs, different wire-transport implementation, new build system, modified message types, different CLI syntax, etc... Although ROS1 and ROS2 share similar concepts of topics/services/actions/parameters/nodes/namespaces, they are not compatible. I suppose one may argue that such different projects sharting the same naming could collocate under the same repo using only tags, like with python and version 2 and 3. Yet this comparison falls short in few ways:
Another difference is that both ROS1 and ROS2 are ongoing projects. Though the distro names of the two do not collide, I would suspect it confusing to folks reading tags and attempting to determine which are ROS1 compient and which are ROS2, or what is the latest LTS version of either?:
But suppose we could add another sub-super prefix to the tags to denote ROS1 vs ROS2, but at that point I think the repo name would be nice to do that with. Another is that currently the Lastly, the projects necessitate different instructions in how they are containerized, again due to the build/install and run CLIs, but also as the transport implementation, e.g. XMLRPC vs DDS, centralized master broker vs disitrolized discovery, requires different user documentation, thus the differences between the ROS1 and ROS2 README docs I've written. For more background on branding, see the communities 'Why ROS 2.0' design artificial for further motivation: Perhaps @nuclearsandwich @tfoote or @sloretz could speak to this effect or suggest alternatives. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We talked about this internally and I think that although we've been hosting many ROS2 resources in separate locations this is just another version of ROS so it does make sense to just use new tags under the existing repository. There will be overlapping alphabetic listings and latest will give you the latest LTS which for now will stay ROS1 until we have an official LTS for ROS2 then we can switch it over. In other places they are only differentiated by the distro name such as the debian packages so people can/should be able to differentiate things.
At some point the ros:latest always does make a switch between rosdistros and if you want a specific version you should use a specific tag. I also wouldn't add another layer to the tags. The distros are unique between ROS1 and ROS2 and we now have indicators in the environment that can differentiate them.
@tfoote , I'd fine with merging the repos. I'll have to rework the CI, but doable. TaggingWhat should be tagged as latest? Use the latests supported ROS1 LTS, or the most recent release of ROS2?
I'm leaning towards the most release of ROS2 support migration (or perhaps the latest stable release of ROS2, depending on if we follow through with rolling releases), but is sounds like you'd recommend leaving it to ROS1 for now until a ROS2 LTS is released. DocumentationShould we still overhaul the documentation to include ROS2 though? I think mediating the nuances between ROS1 and ROS2 deployment would be out of scope in the simple introductory readme. As mentioned above, the details one has to consider when containizing ROS is rather different between versions. |
3d35b9b
to
58f26d4
Compare
most users seach for ros2 when looking for ros2 docs. also avoids conflating ros2 with ros1
Story for rosdep with runner multidtage not yet ready or convincing. Demo example for development and caching workflow instead.
no need to demo cleaning of ephemeral .git files to improve determinism
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks great. couple typos and nitpicks remaining
Co-authored-by: Mikael Arguedas <[email protected]>
Co-authored-by: Mikael Arguedas <[email protected]>
Ping @tianon @yosifkit @mikaelarguedas , with the release of ROS2 Foxy, this is ready to be merged, as we'd like the docs to be update to reflect the move to ROS2 and provide relevant examples. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this seems fine -- just one comment about the one-sentence-per-line change that you probably want to look into.
It does seem like this is getting kind of lengthy, and might end up being a bit annoying to read on https://hub.docker.com/_/ros, so it might make sense to move a lot of this content to somewhere on https://www.ros.org/ and link to it from here instead, but that's ultimately your call.
I think we could trim down the discussion bit that's not as essential as the use examples, but I'll do that in a separate PR, as we'll need to update the tag listing once we've added support for the ros1-bridge tag later on anyway. |
In preparation for the release of for adding ROS2 to images to the Official Docker Library: docker-library/official-images#5183
This README is derived from that of ROS1, but has been adapted to reflect ROS2. Changes include:
Let me know if you have any thoughts or suggestions.
ping @tfoote @nuclearsandwich @sloretz