--
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.
So sorry, here it is:
http://wiki.ros.org/sig/NextGenerationROS/StrategyReview
So sorry, here it is:
http://wiki.ros.org/sig/NextGenerationROS/StrategyReview
From what I've read in those other communities, there's is no right or wrong answer: it depends on its members, its motivation and it mostly evolves over time (gcc used to be open source with hidden development). Hence, I don't see the point of those rebuttals on the wiki page: there is no right or wrong.
On that wiki page, to me, only point 3.3 and 4.4 are worth discussing. Other ones just seem like opinions and I agree to disagree.
So sorry, here it is:
http://wiki.ros.org/sig/NextGenerationROS/StrategyReview
Hi Thibault,it might be that I misread the tone in this document since English is not my native language.But from my personal point of view the whole page has a very negative / accusatory attitude which I don't think this is appropriate.Especially if you expect the page to serve as an objective "strategy review".
Beside that I have a few comments regarding the "15 facts" at the top of the wiki page.> 1. ROS2 uses DDS-implementations as the communication layer, this decision has been announced #ros2announce, #ros2query
ROS 2 is not tied to DDS. ...
Btw. there is a ROS 2 article about exactly this which should be referenced here.
The selection of the RMW implementation happens for C++ at link time - not at compile time.This is also mentioned in a ROS 2 article and should be referenced.
> 3. The only DDS implementation with a standard Open-Source license is OpenSplice, which however has seen only 3 commits in the last 12 months, and less than 50 in the last 4 years (#OpenhubOpenSplice)The quoted statistics are meaningless since PrismTech only pushes their released code into that GitHub repository.Their development does not happen in a public repository.While that is not a great thing I don't think the statistics are of any relevance - it is similar to a statistic of a GBP / release repository in ROS 1.
> 4. OSRF still negotiates with RTT Connext over providing a suitable open-source license, a non-standard free-for-research license is available #ros2announce
We can't tell you anything about our bidirectional communication with companies like RTI.
But the chances are that there will be another proven DDS implementation with an OSI approved license in the future.
Another alternative which you did not mention is the implementation from eProsima.
> 5. DDS provides no request-response, only something similar to actionlibDDS does have a request/response specification (http://www.omg.org/spec/DDS-RPC/) and most vendors already implement (part of) the standard.The ROS 2 alpha 1 release already provide a request / response API very similar to the one available in ROS 1.I don't see how this is similar to actionlib though.
> 6. ROS2 core packages and tool support sources are completely separated from ROS1 sourcesThe rational for this decision as well as the pros and cons have been discussed in very detail and are summarized in an article.
> 7. The ROS2 client API is not backwards compatible with ROS1> 8. The ROS2 build tool (ament) is not backwards compatible with catkin> 9. All message definition packages are being duplicated as ROS2 packages> 12. ROS2 defines different language baselines than ROS1 (Python3, C++11)All of these have been discussed in lengthy detail on the mailing list in the last months.A lot of arguments have been mentioned there and I simple don't want to reiterate them here.Also a lot of options have been suggested to mitigate the effort necessary when migrating from ROS 1 to ROS 2.Please link to the past discussions here.
> 10. Some message definitions differ between ROS1 and ROS2 in name and structurePlease be specific and enumerate the messages and types which do differ and also describe how they are different.
> 13. OSRF members have claimed that ROS2 targets industry users first, and academia secondThe major goal of ROS 2 is to address shortcomings of the ROS 1 design.Support for Windows, support for embedded systems, support for multi robot system via wireless, more deterministic behavior to name a few.While a lot of these use cases are relevant for industrial applications that does not mean that academia is only a second level community for ROS 2.I am pretty sure that a lot of ROS 1 users from academia will be eager to have some of the ROS 2 features available.
> 14. OSRF members claim that ROS1 will continue to be released for a long timeBoth systems ROS 1 and ROS 2 will coexist for quite a while.Phrase it to be "a claim of OSRF members" implies a very different thing here.Please rephrase this in an objective way.
> 15. No REP, not even in draft form, has been created for any ROS2 featureClearly there is a lot of documentation about the ROS 2 design.Are the documents called REPs? No, but the existing articles serve a similar purpose.
--
Hi Thibault,Looking through the page it appears that there are several areas in which you would like more information or would like to suggest a different approach.
But presenting them as "the following facts about ROS2 can be reviewed" is very misleading.
We don't need to have an investigation of facts for an open source project with open design documents, open issue trackers, and an open mailing list.
We want to answer everyone's questions as well as hear everyone's feedback on our design, process, and products. Especially with the ROS 2.0 effort we've worked hard to be transparent with our design and decision making process by posting articles on the design
website.
Every decision has tradeoffs and we work hard to reach the best solution possible given all our inputs and constraints.
This mailing list is the best forum for this. This mailing list is publicly archived and has over 200 people subscribed who have actively chosen to listen to the ongoing ROS 2.0 discussions.
1.1, 1.2, 5.5 To my ears (USA deep-South dialect), the word "schism" suggests the bloody European wars of religion of the 16th and 17th centuries.
3.1 Parallel maintenance causes high effort / low qualityHow about "Parallel maintenance looks hard"?
3.2 ROS2 improvements will not be backported to ROS1 (e.g. ament)I don't remember anyone saying ament will never be backported to ROS 1. The discussion I recall was that no one wants to think about doing it right now. It might very well be done at some point, after the implementation becomes more mature.
I would also note that this seems like a bounded problem. It looks to me
that parallel maintenance should increase developer workload 25-110%
This is probably solvable by increasing the the number of active
developers or by moving many packages from 'development' to
'maintenance' or 'inactive'
Being able to reuse messages should help with this.
> 3.2 ROS2 improvements will not be backported to ROS1 (e.g. ament)
>
> I don't remember anyone saying ament will never be backported to ROS 1. The
> discussion I recall was that no one wants to think about doing it right
> now. It might very well be done at some point, after the implementation
> becomes more mature.
I think it is important to note that this is primarily a resource
contention problem not a technical or policy decision as far as I can tell.
If more companies that using ROS commercially support OSRF, then there
will be more resources for backporting changes when they are mature.
> in
> particular for doing additional tasks that do not increase the ROS value
> (providing the same feature for multiple middlewares, instead of adding new
> features).
Of course supporting multiple middlewares does not add value to most of
our work, however it appears critical for some applications. ...
My guess is that at some point OSRF is going to pick one opensource
middleware as the default and everyone who doesn't have to worry about
safety certifications will use that.
> Making more packages become inactive surely "solves" this, but somehow I
> fail to see how packages becoming unmaintained is great for ROS users.
Marking a package as "unmaintained" lets new developers know that the
package could use a maintainer.
Unmaintained packages are not great for the ROS community but we need to
find a reasonable set of compromises to move forward.
> Maybe you have non-public packages used inside companies in mind. If a
> company does not rely on open-source packages (other than core), then this
> may not be a problem in industry (I put that in the refutal). But it is a
> problem in academia. And it affects ROS1 users.
As a package maintainer I'm really concerned about seeing my workload
double during the transition period.
I think this is probably the strongest point against a long transition
from ROS1 to ROS2.
I don't really see how a working ROS1 to ROS2 bridge will significantly
reduce work for active package maintainers.
Is there a set of features we can define as ROS1.5 such that we can support
ROS1.5 and ROS2 from a single code base?
What compromises would allow us to work towards the features of ROS2
without doubling our workload?
OSRF's mission statement (which is legally binding, btw) is "to
support the development, distribution, and adoption of open source
software for use in robotics research, education, and product
development." (http://www.osrfoundation.org/about/)
We don't have a separate statement for any specific development effort
(ROS, Gazebo, CloudSim, etc.).
There is a design document that lays out some of the motivation for ROS 2.0:It's possible that there isn't enough detail there. For example, the bullet point about "Non-ideal networks" doesn't mention specific examples I have heard about problems with sending messages larger than a UDP datagram on a lossy wifi network. If you use TCP, things get congested, but if you use UDP you'll likely never actually receive all the datagrams from a single message, so you receive nothing.Would extra detail in that article be helpful?
We considered this option and concluded that, given the intrusive nature of the changes that would be required to achieve the benefits that we are seeking, there is too much risk associated with changing the current ROS system that is relied upon by so many people.
OSRF has done a great job at describing in great detail the problems with ROS1. What I don't understand is how the problems with ROS1 lead to the decision that ROS2 should be re-written from scratch. With respect to enhancing ROS1 instead of the current ROS2 plan, the "Why ROS2?" document states:We considered this option and concluded that, given the intrusive nature of the changes that would be required to achieve the benefits that we are seeking, there is too much risk associated with changing the current ROS system that is relied upon by so many people.This is a pretty major decision that is stated here without any analysis of where the risk is coming from.The plan that is currently being pursued (i.e. to re-implement all of ROS) will mean that in order to migrate, they will need to migrate their entire system. Furthermore, not being able to change only one thing at a time will make it hard to debug issues that arise from the migration. So, I'm still trying to understand the guiding philosophy that lead to this decision.
For example, how is fixing the transport layer too "intrusive" and why would it involve too much risk? I've mentioned this before, but for the transport, instead of re-writing everything, why not make a DDS-based transport layer available for all major client libraries. ROS1 could be given a DDS transport plugin (call it "DDSROS") and similar capabilities could be added to rospy and rosjava.At the same time, OSRF can continue to develop "rclc" and the experimental "rclcpp" implementation which could be used alongside roscpp to also use this transport layer, but with a "modernized" API. Maybe instead of making this completely separate from roscpp, it could be put in the same library under the `ros::future` namespace or something along those lines. This is where support for all the new ROS infrastructure could but put and rolled in gradually. Similar functionality could be done with a `rospy.future` module.
Really, ROS2 as it is currently being developed is more of a ROS competitor than a second version. I'm also still curious about how Ignition Robotics fits into all of this. Is it also a ROS competitor?
-j--
You received this message because you are subscribed to a topic in the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ros-sig-ng-ros/coG7Wdkbb4E/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ros-sig-ng-ro...@googlegroups.com.
For example, how is fixing the transport layer too "intrusive" and why would it involve too much risk? I've mentioned this before, but for the transport, instead of re-writing everything, why not make a DDS-based transport layer available for all major client libraries. ROS1 could be given a DDS transport plugin (call it "DDSROS") and similar capabilities could be added to rospy and rosjava.At the same time, OSRF can continue to develop "rclc" and the experimental "rclcpp" implementation which could be used alongside roscpp to also use this transport layer, but with a "modernized" API. Maybe instead of making this completely separate from roscpp, it could be put in the same library under the `ros::future` namespace or something along those lines. This is where support for all the new ROS infrastructure could but put and rolled in gradually. Similar functionality could be done with a `rospy.future` module.
I'll defer answering these questions to someone more knowledgeable.Really, ROS2 as it is currently being developed is more of a ROS competitor than a second version. I'm also still curious about how Ignition Robotics fits into all of this. Is it also a ROS competitor?Ignition Robotics is more closely related to Gazebo than ROS at the moment. Gazebo has been monolithic, with its own libraries for math, transport, etc. We have been splitting these libraries out, and they have been rebranded as Ignition Robotics libraries, in case non-Gazebo software is interested in using it but would be put off by the Gazebo name. I wouldn't name it as a ROS competitor.
I imagine the ignition-transport library is the piece that prompted the question? That library is mainly a rewrite of gazebo's custom transport layer. One difference is that the Ignition Robotics libraries can follow FHS by installing to /usr, which is a requirement for gazebo (unlike ROS, which is currently in /opt).Steve-j--
You received this message because you are subscribed to a topic in the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ros-sig-ng-ros/coG7Wdkbb4E/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
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.
Jon,
sometimes you need a parallel implementation to see how you could evolve the current state, because otherwise you're too biased by the effort to change some things. A clean-slate approach, if you will.
In my personal impression, which is based on digging around in it for half a year now, ROS's communication sub-system could benefit from such a clean-slate approach.
btw, I think that's separate from changing the API. You could do that while keeping the current API, which is something that is certainly dear to everybody here.
Therefore, one could ask why ROS2 is also changing API. My personal impression, again, is that reducing complexity in some aspects will require at least semantic changes.
For example, a *lot* of the complexity of the current system is caused by the "feature" that you can modify the registered callbacks while being in one. The amount of locking expended to make this possible is really quite astounding. An alternative approach,
which is however not 100% semantically backwards compatible, is to hold of processing changes to the registered callbacks until after processing of the current callback is complete. I don't know which approach is currently taken in rclcpp, but it's something
to look at, just to give an example of things where breaking compatibility could really reduce complexity.
cheers
On 09/24/2015 06:06 AM, Thibault Kruse wrote:
> On Thursday, September 24, 2015 at 12:16:11 AM UTC+2, Bill Morris wrote:
>> I would also note that this seems like a bounded problem. It looks to me
>> that parallel maintenance should increase developer workload 25-110%
>> This is probably solvable by increasing the the number of active
>> developers or by moving many packages from 'development' to
>> 'maintenance' or 'inactive'
>> Being able to reuse messages should help with this.
>>
> I don't know where you see any potential for more active developers,
We can do better at training new developers. Improving documentation,
and making ROS more accessible.
Perhaps, open source development could be integrated into a industry
certification/training program. ie. each person working to become a
"Certified ROS Developer" would be expected to go through the process of
submitting pull requests to improve ROS.
Can we make opportunities for professional roboticists to contribute
more to ROS? One idea, which may be completely impractical, would be to
have a sabbatical program for engineers working in industry to work on
ROS2 at OSRF or a nearby university for a month.
Can companies sponsor a full-time staff position at OSRF?
--
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.