... other than the name?
So looking around a bit, it seems that so far, all pieces of ROS2 have independent sources / implementations, no part or tool of the ROS1 ecosystem is needed to build and use ROS2:
Buildsystem: catkin vs ament
C++ Client API / message generation: ros1 vs ros2 DDS
Node Runtime: ROS1 nodes + nodelets vs. ROS2 processes
It seems that ROS2 is planned to share not a single line of code with ROS1.
What about the other tools
rviz, roslaunch, rosrun, rqt_..., rosmsg, rospack, rosbag, rosnode, rostopic, rosparam
Will those all also be copied and maintained in their own repositories for ROS2, with new ideas being added for ROS2 but not backported, in order not to disturb ROS1? Because at a glance it seems that it would be difficult to make those tools work nicely with ROS2 as they are.
And then the same question goes for the most prominent non-core packes (http://www.ros.org/news/2014/04/ros-user-survey-the-results-are-in.html)
navigation, moveit, tf, ..._drivers, image_pipeline
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
And then the same question goes for the most prominent non-core packes (http://www.ros.org/news/2014/04/ros-user-survey-the-results-are-in.html)
navigation, moveit, tf, ..._drivers, image_pipelineI think there will be a lot more code sharing at this level. moveit, tf, and many of the drivers already have a ROS agnostic component and thin ROS 1 wrapper. So it will just require cross releasing the ROS agnostic part, so ROS 2 can depend on it, and writing the ROS 2 wrapper. In each case there will be opportunities to improve on the wrapper part by using new features of ROS 2. For example, I'm excited to get tf2 migrated and see what we can do to make sharing tf state much more efficient with the new transport (with multicast support) and intra-process communication options.Other items like the navigation stack and the image_pipeline have more ROS specific parts in them, but again these are prime candidates (in my opinion) for major improvements in terms of modularity and performance by using new features in ROS 2.
I share many of Thibault's concerns.Viewed in isolation, the ROS 2 design is wonderful. Things are much more modular, dependencies are minimal. The developers have done excellent work.Unlike Thibault, I don't mind the core implementation being different. There are advantages, as well as dangers, with a cleaner implementation.But, for the mass of shared, community-maintained packages, ROS 1 -> ROS 2 migration reminds me too much of the python2 -> python3 disaster. The Python developers decided to take a purist approach, came up with a cleaner design, and released it to "see if the dogs eat the food".The result is that many "dogs" still are not eating it. At first, Python did not even provide any way to maintain common code for both dialects. Yet, most programmers still had their own work to do, which did not include re-writing thousands of programs that already worked well.The ROS 1 community is a good example of these problems. The core developers were mostly able to deal with both dialects, but the rest of us never had a credible plan to migrate our ROS Python packages. The reasons mainly relate to circular dependencies and difficulties testing code in both python2 and python3 environments.With ROS 2 being python3-only, we now have a plan for that, but the earlier migration issues have not disappeared. They are now inextricably stuck in the whole ROS 1 -> ROS 2 migration swamp.I anticipate many years of overlap between ROS 1 and ROS 2. The Python developers originally estimated five years to migrate most of their code base. That was optimistic. Those of us who maintain ROS device drivers, perception, navigation, localization, and other essential packages are going to have to support both versions for longer than I really want to imagine.
The decision to retain the ROS 1 message file format with DDS was a good one. It gives us an opportunity to make migration and co-existence much easier. But now, dozens of low-level implementation decisions seem to be "snatching defeat from the jaws of victory", a clean-slate mentality undoing many of the potential benefits.
Please forgive me for focusing on some negatives. I really like ROS 2 a lot, but this group needs to discuss these problems before it's too late.
--joq
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For me and my use case, rviz is one of the biggest selling points of ROS. This includes the ease of writing rviz plugins for custom display types.
If rviz is on the other side of a ROS2<->ROS bridge, or if it's otherwise difficult to get messages from ROS2 into rviz, then it could lose a significant amount of its usefulness.
I'm also worried about how much code logic or metaprogramming it will take to share plugins between an rviz for ROS and an rviz for ROS2; if writing plugins for rviz on ROS2 isn't like writing normal subscribers, for example, it makes custom tools that much more difficult to write.
Sorry if that sounds like a lot of complaining; I think what I'm trying to argue for here is a native ROS2 version of rviz from day 1.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
-Fergs
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
It's easy to get depressed by the amount of work that is ahead to migrate something like the navigation stack, but I personally would love to dig into the nav stack, figure out how it could be better/faster/more modular using ROS 2, and implement something incrementally better than what's there. The question is always resources to do so, but I believe those will come eventually. So I try to be excited about the possibilities.
--joq
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
On Thu, Jul 16, 2015 at 4:04 PM, Jack O'Quin <jack....@gmail.com> wrote:On Thu, Jul 16, 2015 at 5:50 PM, William Woodall <wil...@osrfoundation.org> wrote:It's easy to get depressed by the amount of work that is ahead to migrate something like the navigation stack, but I personally would love to dig into the nav stack, figure out how it could be better/faster/more modular using ROS 2, and implement something incrementally better than what's there. The question is always resources to do so, but I believe those will come eventually. So I try to be excited about the possibilities.My question is: who is going to maintain all that old, crufty, but absolutely essential, code while all this fun, creative, new work is being done?In most major projects, maintenance outweighs new development by a considerable margin.Personally, I've spent much more time maintaining existing stuff in ROS 1 since joining WG almost exactly three years ago to "work on ROS 2" and that's part of the reason ROS 2 has been long talked about with little done on it. So from my perspective ROS 1 has been a much higher priority than ROS 2 for as long as I've been doing this. I don't expect that to change for a long time yet, except for in spurts where we try to sprint new stuff into ROS 2 (like we're currently doing). There are, and will continue to be, lots of people using ROS 1, so I don't expect there to be a lack of need to keep it working. I believe that motivation and resources (volunteer and financial) will come based on the need, but maybe I'm naive (I'm an engineer not a businessman).We're dedicated to keeping core ROS 1 packages working and up-to-date as well as maintaining infrastructure used by the community. I don't think our ROS 2 work has to get in the way of this.
On Thu, Jul 16, 2015 at 6:29 PM, William Woodall <wil...@osrfoundation.org> wrote:On Thu, Jul 16, 2015 at 4:04 PM, Jack O'Quin <jack....@gmail.com> wrote:On Thu, Jul 16, 2015 at 5:50 PM, William Woodall <wil...@osrfoundation.org> wrote:It's easy to get depressed by the amount of work that is ahead to migrate something like the navigation stack, but I personally would love to dig into the nav stack, figure out how it could be better/faster/more modular using ROS 2, and implement something incrementally better than what's there. The question is always resources to do so, but I believe those will come eventually. So I try to be excited about the possibilities.My question is: who is going to maintain all that old, crufty, but absolutely essential, code while all this fun, creative, new work is being done?In most major projects, maintenance outweighs new development by a considerable margin.Personally, I've spent much more time maintaining existing stuff in ROS 1 since joining WG almost exactly three years ago to "work on ROS 2" and that's part of the reason ROS 2 has been long talked about with little done on it. So from my perspective ROS 1 has been a much higher priority than ROS 2 for as long as I've been doing this. I don't expect that to change for a long time yet, except for in spurts where we try to sprint new stuff into ROS 2 (like we're currently doing). There are, and will continue to be, lots of people using ROS 1, so I don't expect there to be a lack of need to keep it working. I believe that motivation and resources (volunteer and financial) will come based on the need, but maybe I'm naive (I'm an engineer not a businessman).We're dedicated to keeping core ROS 1 packages working and up-to-date as well as maintaining infrastructure used by the community. I don't think our ROS 2 work has to get in the way of this.The main difference with device drivers is that we mostly work on supporting new models and fixing problems with existing hardware. For years, that work will need both ROS 1 and ROS 2 support. So, forking the code and providing only passive fixes in old releases is not a good option.
For the past five years or so, I've mostly been able to maintain a unified implementation that works with all current releases. The only significant exception was the catkin transition, which was painful. I released several catkin packages with significant bugs. The usual root cause was some kind of install error, exacerbated by the fact that unit tests cannot verify that everything needed has been installed. Maybe ament will handle that better by testing the install space. I really hope so.
--joq--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
It seems that ROS2 is planned to share not a single line of code with ROS1.It shares lots of code, but you're right that sharing mostly takes the form of copy, adjust to fit surrounding code, and update to use C++11 where appropriate. But this is mostly an artifact of the amount of changes that need to be made in these low level core packages.
What about the other tools
rviz, roslaunch, rosrun, rqt_..., rosmsg, rospack, rosbag, rosnode, rostopic, rosparam
Will those all also be copied and maintained in their own repositories for ROS2, with new ideas being added for ROS2 but not backported, in order not to disturb ROS1? Because at a glance it seems that it would be difficult to make those tools work nicely with ROS2 as they are.
[...]
rosrun, rosmsg, rosnode, rostopic, and rosparam will probably have completely new implementations since the bulk of their work will be using the ROS 2 interfaces. The only common code between the two would be CLI stuff. It's not clear to me if sharing between them would be a good idea, but gut reaction is that it would not. Also we're thinking about ways to avoid overloading of the tool names on the command line. In systems where you have ROS 1 and ROS 2 in play, then either rostopic from ROS 1 or ROS 2 will be first on the PATH, but both cannot be accessed if they have the same name. This could be avoided by never having one terminal with both sourced, but I imagine it could get confusing. Maybe we'll end up with ros2topic and ros2run and so on as aliases to avoid some of the overloading and confusion, but I always disliked that pattern since it sounds like you're converting something called ros to something called topic, for example.
On Thu, Jul 16, 2015 at 9:00 AM, Jack O'Quin <jack....@gmail.com> wrote:[...]But, for the mass of shared, community-maintained packages, ROS 1 -> ROS 2 migration reminds me too much of the python2 -> python3 disaster. [...]
I agree with your comparison to the Python2 => Python3 migration for the most part. I think the migration of the community from ROS 1 to ROS 2 will be slow and by attrition. But I don't see a better way, the only alternative with less effort is to avoid changes that really should be made, and I don't know of a way that Python could have made the changes it needed to make while avoiding the cost of transition for its community.
--
On Friday, July 17, 2015 at 12:05:18 AM UTC+2, William Woodall wrote:It seems that ROS2 is planned to share not a single line of code with ROS1.It shares lots of code, but you're right that sharing mostly takes the form of copy, adjust to fit surrounding code, and update to use C++11 where appropriate. But this is mostly an artifact of the amount of changes that need to be made in these low level core packages.
Ok, I do indeed mean "share" as in: If you change the line of code, it will affect both ecosystems, a bugfix fixes both.
(And as far as I am aware, no change *needs* to be done. ROS1 is a success. It's all about what changes OSRF *wants* to do.)
What about the other tools
rviz, roslaunch, rosrun, rqt_..., rosmsg, rospack, rosbag, rosnode, rostopic, rosparam
Will those all also be copied and maintained in their own repositories for ROS2, with new ideas being added for ROS2 but not backported, in order not to disturb ROS1? Because at a glance it seems that it would be difficult to make those tools work nicely with ROS2 as they are.[...]rosrun, rosmsg, rosnode, rostopic, and rosparam will probably have completely new implementations since the bulk of their work will be using the ROS 2 interfaces. The only common code between the two would be CLI stuff. It's not clear to me if sharing between them would be a good idea, but gut reaction is that it would not. Also we're thinking about ways to avoid overloading of the tool names on the command line. In systems where you have ROS 1 and ROS 2 in play, then either rostopic from ROS 1 or ROS 2 will be first on the PATH, but both cannot be accessed if they have the same name. This could be avoided by never having one terminal with both sourced, but I imagine it could get confusing. Maybe we'll end up with ros2topic and ros2run and so on as aliases to avoid some of the overloading and confusion, but I always disliked that pattern since it sounds like you're converting something called ros to something called topic, for example.
Did you consider choosing a different name than ROS at all?
Since most of the implementation is not backwards compatible, ROS2 seems as much a new middleware as MOOS or Orocos.
It would compete with ROS1 for contributors time, as in: Every hour spent on ROS2 is an hour not spent on ROS1, since code is generally not shared.
So the already tight maintainership situation in ROS will become even tighter, as maintainers will have to split their time, or support only one side of the trench.
A new name (like DDS Industrial Robotics Kit) could yield a new acronym to serve as prefix for all commands. And a new name would make it easier to justify the lack of backwards compatibility.
Having all code in middleware-agnostic modules wrapped with middleware specific code is a good idea, but not a realistic solution.
On Friday, July 17, 2015 at 12:31:24 AM UTC+2, William Woodall wrote:On Thu, Jul 16, 2015 at 9:00 AM, Jack O'Quin <jack....@gmail.com> wrote:[...]But, for the mass of shared, community-maintained packages, ROS 1 -> ROS 2 migration reminds me too much of the python2 -> python3 disaster. [...]I agree with your comparison to the Python2 => Python3 migration for the most part. I think the migration of the community from ROS 1 to ROS 2 will be slow and by attrition. But I don't see a better way, the only alternative with less effort is to avoid changes that really should be made, and I don't know of a way that Python could have made the changes it needed to make while avoiding the cost of transition for its community.
One thing the Python community did was to follow the PEP process, to let the community distinguish between changes that "really should be made", and changes which are just pet peeves of individuals. Why not introduce something like the PEP process for the ROS community? We could call it, ... let's see... REP?
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
On Fri, Jul 17, 2015 at 1:49 AM, Thibault Kruse <tibo...@googlemail.com> wrote:
So the already tight maintainership situation in ROS will become even tighter, as maintainers will have to split their time, or support only one side of the trench.As one of the major contributors and maintainers of ROS 1 (even before doing it full time) I'm keenly aware of this. I, and I'm certain many others, agree with the sentiment, but I'm not sure how else to reconcile this with the fact that we need to continue to make improvement to the core of ROS in order to meet the needs of more users. I think the approach we've taken will be slower and require more effort on our part and on the communities part, but it will also be the least risky and least disruptive to the ROS 1 ecosystem.
A new name (like DDS Industrial Robotics Kit) could yield a new acronym to serve as prefix for all commands. And a new name would make it easier to justify the lack of backwards compatibility.I'll take that as sarcasm. Do you have a constructive suggestion?
Having all code in middleware-agnostic modules wrapped with middleware specific code is a good idea, but not a realistic solution.Can you explain why you feel this is an unrealistic solution? Many components in ROS 1 already follow this pattern.
On Friday, July 17, 2015 at 12:31:24 AM UTC+2, William Woodall wrote:On Thu, Jul 16, 2015 at 9:00 AM, Jack O'Quin <jack....@gmail.com> wrote:[...]But, for the mass of shared, community-maintained packages, ROS 1 -> ROS 2 migration reminds me too much of the python2 -> python3 disaster. [...]I agree with your comparison to the Python2 => Python3 migration for the most part. I think the migration of the community from ROS 1 to ROS 2 will be slow and by attrition. But I don't see a better way, the only alternative with less effort is to avoid changes that really should be made, and I don't know of a way that Python could have made the changes it needed to make while avoiding the cost of transition for its community.
One thing the Python community did was to follow the PEP process, to let the community distinguish between changes that "really should be made", and changes which are just pet peeves of individuals. Why not introduce something like the PEP process for the ROS community? We could call it, ... let's see... REP?I've discussed the point about using REP's in ROS 2 before. To summarize, we plan to create REP's once we have a better idea of what would go in them. Many of the articles on the design website will be good starting points for REP's in the future, but at the moment nothing is concrete enough to form a document so thorough and thought out as a REP.
Despite what you might think, I really respect your opinion because it is often topical and salient, but I think that when you use sarcasm in a negative way or make comments personal by calling out individuals it detracts from the conversation. I also think that it makes it less likely that people feel like the email thread is a safe place to discuss their ideas and be a part of the conversation for fear of reprisal. I think it would be best for everyone if you could try to keep your comments positive or at least neutral. It's my opinion that your latest comments were not that, though you may disagree.
On Friday, July 17, 2015 at 12:56:12 PM UTC+2, William Woodall wrote:On Fri, Jul 17, 2015 at 1:49 AM, Thibault Kruse <tibo...@googlemail.com> wrote:So the already tight maintainership situation in ROS will become even tighter, as maintainers will have to split their time, or support only one side of the trench.As one of the major contributors and maintainers of ROS 1 (even before doing it full time) I'm keenly aware of this. I, and I'm certain many others, agree with the sentiment, but I'm not sure how else to reconcile this with the fact that we need to continue to make improvement to the core of ROS in order to meet the needs of more users. I think the approach we've taken will be slower and require more effort on our part and on the communities part, but it will also be the least risky and least disruptive to the ROS 1 ecosystem.
I am a bit tired of hearing this "non-disruptive of ROS1" argument. Basically ROS2 is the preparation for the mother of all disruptions to the ROS1 ecosystem. A slow, large-scale migration of thousands of packages to a different middleware. I believe it would be more honest if OSRF said that OSRF prefers disruption by migration over disruption by evolution, or something.
There is a great deal of value in the current ROS message definitions. The format is simple, and the messages themselves have evolved over years of use by the robotics community. Much of the semantic contents of current ROS code is driven by the structure and contents of these messages, so preserving the format and in memory representation of the messages has a great deal of value. In order to meet this goal, and in order to make DDS an implementation detail, ROS 2.0 should preserve the ROS 1.x like message definitions and in memory representation.
On Sat, Jul 18, 2015 at 5:09 AM, Thibault Kruse <tibo...@googlemail.com> wrote:
On Friday, July 17, 2015 at 12:56:12 PM UTC+2, William Woodall wrote:On Fri, Jul 17, 2015 at 1:49 AM, Thibault Kruse <tibo...@googlemail.com> wrote:So the already tight maintainership situation in ROS will become even tighter, as maintainers will have to split their time, or support only one side of the trench.As one of the major contributors and maintainers of ROS 1 (even before doing it full time) I'm keenly aware of this. I, and I'm certain many others, agree with the sentiment, but I'm not sure how else to reconcile this with the fact that we need to continue to make improvement to the core of ROS in order to meet the needs of more users. I think the approach we've taken will be slower and require more effort on our part and on the communities part, but it will also be the least risky and least disruptive to the ROS 1 ecosystem.
I am a bit tired of hearing this "non-disruptive of ROS1" argument. Basically ROS2 is the preparation for the mother of all disruptions to the ROS1 ecosystem. A slow, large-scale migration of thousands of packages to a different middleware. I believe it would be more honest if OSRF said that OSRF prefers disruption by migration over disruption by evolution, or something.ROS 1 non-disruption is not an argument. It is a requirement that has been forcefully communicated to OSRF by many (probably most) of the current ROS 1 community.
I believe the impetus for ROS 2 comes mainly from a different, more industrial product development community, who would like to use ROS but for various reasons cannot in its current form.This is somewhat over-simplified and just my opinion (OSRF speak quite well for themselves). But, if I am correct, the initial ROS 2 target users are not the research labs who make up much of the existing ROS 1 community.The academics I know want stability so they can run their experiments and publish papers. They do not care much about low-level infrastructure, and begrudge every minute spent upgrading. They hated the catkin migration. It was time-consuming, and for them rosbuild actually worked better.Many product developers want new features, like DDS, and light-weight C language interfaces with few dependencies. They need their wire-level protocols fully documented, sometimes even verified and certified. They are less interested in ease of migration from ROS 1.Why not just build separate products for the different user communities? That is generally easier to do. But, both the research and development communities stand to benefit from synergy between the two versions.
On Sat, Jul 18, 2015 at 5:09 AM, Thibault Kruse <tibo...@googlemail.com> wrote:
On Friday, July 17, 2015 at 12:56:12 PM UTC+2, William Woodall wrote:On Fri, Jul 17, 2015 at 1:49 AM, Thibault Kruse <tibo...@googlemail.com> wrote:So the already tight maintainership situation in ROS will become even tighter, as maintainers will have to split their time, or support only one side of the trench.As one of the major contributors and maintainers of ROS 1 (even before doing it full time) I'm keenly aware of this. I, and I'm certain many others, agree with the sentiment, but I'm not sure how else to reconcile this with the fact that we need to continue to make improvement to the core of ROS in order to meet the needs of more users. I think the approach we've taken will be slower and require more effort on our part and on the communities part, but it will also be the least risky and least disruptive to the ROS 1 ecosystem.
I am a bit tired of hearing this "non-disruptive of ROS1" argument. Basically ROS2 is the preparation for the mother of all disruptions to the ROS1 ecosystem. A slow, large-scale migration of thousands of packages to a different middleware. I believe it would be more honest if OSRF said that OSRF prefers disruption by migration over disruption by evolution, or something.ROS 1 non-disruption is not an argument. It is a requirement that has been forcefully communicated to OSRF by many (probably most) of the current ROS 1 community.