ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A answers.ros.org

Discussion on ROS to ROS2 transition plan

@mikeferguson - that’s a very good point that bridging needs to be supported for a longer time. I would think that the Ubuntu 20.04 ROS2 LTS release could also support 18.04, just as the Bouncy release today supports both 18.04 and 16.04. I think that’s a reasonable request, maybe @gerkey can comment on whether that could be done to help with the transition.

All your points are spot on. As a commercial company just joining the “ROS” wave, we see absolutely no reason to do anything with ROS1. ROS2 on the other hand is very attractive for many of the reason that you point out.

FWI, I can’t speak for other commercial companies, but if we do what we think we are going todo, we are likely to spend about $1B on robot software development over the next 10 years. $0 will go to ROS1. Much of it is likely to go towards ROS2 functionality. That’s not immoral, its just good business. We don’t see ROS1 as a “commercially” viable technology base, at least not for our markets (which are personal defense and security robots.)

If ROS2 weren’t a thing, we’d likely spend our money on enhancing our own proprietary system and then releasing as much of it as we can as open source code.

I don’t believe that we are alone. ROS2 can become the foundation of machines serving a wide variety of commercial market segments that are each worth 10’s of billions of dollars. As a result, if the community can provide the courage, vision and know how to lead, then large sums of investment are likely to flow into ROS2 over the next couple of years.

2 Likes

OK, so that’s a coherent, evidence-based argument that I think I buy. That does kind-of set the clock running, though. Question: how much of ROS1 will we end up porting? Bonus points: How long will this take? Can we, as a community, reasonably do it over one LTS cycle?

At the end of the day. Development will go where money requires it to. There are many business leaders in this thread who have knowledge of this information of where they are allocating their resources towards. I think if one goes through and reads through the responses, in most cases it is clear whether or not they are interested in putting resources towards ROS1 willingly (or because of due diligence).

For an effort this large, its probably best to write some scripts that reasonably translates some code patterns into ROS2 code patterns. Either that, or provide a shim at a clever spot. Either that, or a giant blog post/cheat sheet from an expert who has done a ROS1->ROS2 transition of their code base.

Does anyone know of an existing ROS2 robot that has been transitioned from ROS1? I would be up to analyze some code and see if there is a potential static translation/best effort translation I could write a script for for most ROS nodes.

What I potentially see in this is a service (yes, $$) that helps businesses port their code from ROS1->ROS2 in a timely manner. Not everyone needs to go through this manually for all parts. For such a large community and a large open source code base - automation here is a winning strategy for all.

@gerkey @rgariepy @mikeferguson @wdsmart @gavanderhoorn Is anyone on your teams doing something like this? Are you guys allocating resources towards it? How many of you would utilise something like this?

Does anyone know of an existing ROS2 robot that has been transitioned from ROS1? I would be up to analyze some code and see if there is a potential static translation/best effort translation I could write a script for for most ROS nodes.

I have a Turtlebot3 on backorder essentially to learn how painful this transition from ROS1 -> ROS2 might be. Eventually, we want to test ROS2 as a platform on which to implement multi-robot cooperative intralogistics on AMRs that carry payloads up to 3 tons (so, a serious application involving safety and performance considerations - not a toy). Happy to report on my findings as they become available. At the moment, we are building our own software stack based on DDS which will take us through early prototypes. If ROS2 becomes available and fits our requirements, we will use it; otherwise we will continue with custom stack. Personally, I believe in giving back to the community. I have happily paid for open source software before to support their development. But I am afraid, it is not always my call.

1 Like

@mkhansen’s initial post surely was well-intended, but I don’t think @bmagyar talking about burning bridges came “out of the blue”. When members of the ROS2 TSC casually talk about stopping all further ROS1 releases, and OSRF makes no reassuring replies on this matter, I also get the feeling that this is premature, and people are planning to burn some bridges. Please don’t take this as an attack, I am trying to explain the emotions behind some of the reactions here.

My impression is that over the past few months, ROS2 has really started to gain some traction, which of course is great. There has been an influx of new developers from some big-name companies with lots of resources (again, this is great!), and of course they all focus on ROS2 (which is what I would do if I started from scratch today). Most people who are firmly in the ROS2 camp seem to take it as a given that there will be a transition from ROS1 to ROS2, and that this transition will be quick. This makes those of us who have been using ROS for years and have accumulated a large code base understandably uneasy. I don’t believe there will be a quick transition. It will probably be more like the python2/python3 transition, only slower. This sucks, but it’s a result of the decision to change everything all at once in ROS2, instead of the “ship of Theseus” way of transitioning.

I understand that OSRF cannot commit resources to ROS1 forever. But when that day comes, please let’s try to find a successor organization that takes over stewardship of ROS1. There are lots of companies that are built on ROS1. If these companies realize how serious the situation has become, maybe they will cooperate to commit some developer time to the maintenance of ROS1.

1 Like

Don’t pretend that you’re trying to have a constructive discussion here and that you were using “morally wrong” just for brevity’s sake. Throwing around words like “morally wrong”, “super villain” and “embezzlement” does not further a civil discourse, and it distracts from the points you’re trying to make (assuming you’re actually interested in an open exchange on the subject matter).

2 Likes

I’ve observed this phenomenon several times in the past. New company joins the “ROS wave”, spends lots of resources to build their system based on the state of the art in ROS, and sometimes even contributes some great stuff back. After this initial investment, the effort is redirected to maintenance, tailoring the code to specific customers, and sales. There is rarely a willingness to adopt whatever has become the new state of the art in ROS, if there is no clear benefit to the company’s use case.

There is nothing wrong with ROS1 for some markets, and there are successful companies based on it. As @Dejan_Pangercic pointed out, ROS2 provides some features that are required for other industries, and yours is probably one of them.

No, it hasn’t been censored. It was flagged as inappropriate by the community (and very rightly so, given how you’ve responded), but users can still read your comment. Accusing Open Robotics of embezzling funds, without any proof, is a new low point. I don’t understand what you’re trying to get out of this using these tactics.

4 Likes

@Martin_Guenther thanks a lot for bringing this up. I was not aware of this being the case and will make everything I can that we do it better in the future. Of course there has to be a firm transition plan and no divide.

@Martin_Guenther I appreciate your providing context and I’m not at all surprised by the strong responses that have been elicited by this discussion. We’re talking about a large and potentially high-impact change. I’m encouraged by the deeply felt reaction, as it confirms the significance of ROS in the global community.

With regard to reassuring replies from Open Robotics: we’ve (mostly) stayed out of the discussion on purpose, to keep the floor open for a broad sharing of opinions. Our team is internally conflicted on the question of when and how to stop releasing ROS 1. It’s a project that some of us have spent 10+ years, in some cases our entire professional careers to date, working on, so we’re loathe to let it go. But like almost everyone else working in this industry, we have more things that we’d like to do than we have time to do them.

It’s great to see specific concerns and concrete proposals like those raised by @ooeygui, @mikeferguson, and @mkhansen. Those comments are exactly the kind of thing that we can take into consideration when looking at the pros and cons of the available strategies.

1 Like

I’ve worked with many open source communities in the past. Based on those experiences, I think there are some really innovative ways we can reach a win-win status with this community. Look for that to play out over the next couple of years. The best way to judge things is based on actual outcomes, so while I respect your opinion and perspective, I would also request that you give us a chance to prove that we are good members of this community by our actions, deeds and works.

A post was split to a new topic: ROS2 Documentation

I think you have misunderstood me, I didn’t mean to criticize you. My apologies if I haven’t made myself clear! :smiley:

Given the fact that no one here has any examples of porting ROS1 code to ROS2, except for a scheduled interest by @Vilas_Chitrakara, I’m going to believe that this entire discussion is speculation because no one knows the real resources required to port a system from ROS1 to ROS2 or if that effort is greater than maintaining a ROS1 release.

I’ve predicted this before and I’ll reiterate - the ROS2 release is going to split the community so that there are two distros of ROS eventually maintained. Industry backed/invested ROS2 (for the next 5~ years) and current Open Source ROS1. Users from current open source ROS1 won’t move to ROS2 until industry paves way. So, we’ve got another ~5 years of ROS1 in my opinion.

The only people who benefit from seeing the amount of ROS2 users go up in this thread is Open Robotics/OSRF as it stands presently. I don’t think anyone else is making a profit off of a ROS2 based system as of now. So until ROS2 features become mainstream this trend will continue. Of course, Open Robotics would never admit that they are not making profit off of ROS2. So with that reasoning I’m going to assume they are already making profit off of it (because they will always claim to be). BUT. I bet their revenues (not including funding/investments for ROS2) are mostly in ROS1 projects as of now. Actually I guarantee it and would bet money on it.

So, that begs the question… who’s got skin in the game for ROS2?

The community as a whole will benefit by more people being in ROS2, but as it stands as of this date all of the vested interest is in Open Robotics/OSRF. IMHO that means Open Robotics should provide some resource allocation towards porting some robots/example systems so that others can follow in their footsteps. However now that Open Robotics is a for-profit business, it’s a little bit contradictory that they should help their competitors out, don’t ya think? :slight_smile: Another point validating the prediction that the ROS community is going to split for the next 5 years.

Is this good? Maybe. We do need a bridge/defined porting process to prevent this though. Surprised no one is being paid to think about this engineering problem out in the open source world. More proof that the only people actively moving to ROS2 are industry backed and are probably holding their solutions/cards to their chest. More proof that industry will only eventually open source their ROS2 solutions/implementations when it is no longer beneficial to competitors. (e.g in 3-5 years time).

That being said. If anyone out there is interested in publicly supporting an open source path forward for a ROS1->ROS2 transition, feel free to contact me :smiley: … one last thing… OSRF … how was a transition plan not designed for or planned for or accounted for?? BIG fail.

Besides the technical and logistical issues here, I don’t understand how there are so many commentators that appear to have inside knowledge of how OR runs their business, where they get their funding or what their evil plans are for ROS 1 and/or ROS 2.

Am I happy with how things are going: no, perhaps not with everything.

Do I start posting accusatory comments on a thread that started with the question “how can we make sure the a transition to ROS 2 can be done in an efficient and as painless manner as possible?”: no, I don’t.

Do I get out the bucket of vitriol, take a large gulp and fire up Discourse? Neither.

Could things have been perhaps more clearly communicated by the various stake-holders and people involved: yes, surely. And that would have avoided quite a bit of frustration.

Unfortunately the situation is as it is right now, so can we please be constructive and make the best of it?

And @TheDash: “no one here has any examples” -> you conclude this after 1 day?


Edit: just to clarify: I’m not defending anyone here. I’m simply amazed by the level of the comments that pass by here in this thread and felt a need to respond to that.

7 Likes

I would just like to politely point out that this post was made to get that exact conversation started - and it has started. You can’t just come up with a plan like that out of nowhere.

1 Like

For those who are taking the position that a “one or the other” approach is the only way to go: We’ve had some aspects of ROS2 running in production-critical systems for nearly 3 months now, and we continue to be a maintainer of ros_comm (and numerous other ROS1 packages besides). We push bugfixes and improvements back to the community for both.

One thing I wanted to mention was that @gerkey stated the above 8-9 person-months for an average ROS1 LTS release. I’d like to get an estimate of what it will be to do the Python2 -> Python3 conversion in addition to the ‘normal’ library upgrades and such of an average new LTS release. My guess is that it’s significantly more, thus my original proposal.

Also, I think the idea of the community taking up the work to do it is a completely valid one. If people don’t want to move to ROS1, then nothing should stop them from self-organizing and taking on the work of doing the Python2->3 port themselves and creating a new LTS in 2020.

So maybe the transition plan could be a combination of things:

  1. A migration script to do 80% of the ROS1 -> ROS2 conversion for those who want to migrate
  2. An improved ROS1 bridge for running hybrid systems?
  3. ROS2 support in 2020 on both 18.04 and 20.04
  4. Support of Melodic until 2023
  5. Better documentation of ROS2 (see @mikeferguson thread)

Anything I missed there that is discussed in this thread?

On some platforms (e.g. Gentoo) ROS 1 users are already using Python 3 today. So “some part” of the code base is already Python 3 compatible. The amount of work necessary is hard to estimate. From my experience changing existing Python code to support both (version 2 and version 3) is commonly fairly simple. There are only very few cases where it is more difficult. As soon as a distro would be setup offering Jenkins bases CI / PR jobs using Python 3 those should be fixable iteratively. This is also a task where contributions from the community could go a long way to spread the workload.