Contents
Editing the ROS Wiki
See EditingTheWiki.
Connect with the Community
ROS Discourse
discourse.ros.org is the community's discussion forum. It is not for specific technical questions, but rather bigger picture topics, announcements and news.
Please do not post questions on the discourse.ros.org!
They should go to Robotics Stack Exchange. As of August 11th, 2023 ROS Answers has been deprecated in favor of Robotics Stack Exchange.
Deprecated ros-users mailing list
For the time being posts from Discourse are being forwarded to the previously used ros-users@lists.ros.org mailing list to smooth the transition. For existing subscribers it is recommended to create an account on Discourse, customize your notifications, and unsubscribe from ros-users. Direct postings to ros-users will be disabled. For further details refer to the Discourse announcement.
ROS Answers
ROS Answers was the original ROS Question and Answers website. As of August 11th, 2023 ROS Answers is deprecated. ROS Answers content is now mirrored at Robotics Stack Exchange and is still available as a read-only website. ROS users should use Robotics Stack Exchange as a replacement for ROS Answers.
Robotics Stack Exchange
As of August 11th, 2023, Robotics Stack Exchange is the official question and answer website for the ROS community. We recommend ROS users use Robotics Stack Exchange as their primary mechanism for getting support.
Special Interest Groups
Special Interest Groups - or SIGs - focus on specific subtopics, and help guide development efforts.
SIG mailing lists have been deprecated in favor of Discourse categories. Please read http://discourse.ros.org/t/ros-sig-migration-method/35
Refer to the SIG summary page for links to old SIGs and their mailing lists.
ROSCon
ROSCon is the annual ROS developers conference. It is a great opportunity to meet others in the community in real life. And even if you cannot attend we record the presentations. Visit roscon.ros.org to find out about upcoming events and browse the archives of all the past events.
Development and Best Practices
For a more robot-integration standpoint, see ROS Use Patterns and Best Practices.
For developing ROS libraries and core components see the ROS Developer's Guide.
For maintaining and releasing ROS libraries and core components see the ROS Maintenance Guide.
An older ROS Best Practices still exists here
For usability see Usability Resources.
For ROS-specific test driven development, a tutorial is available (contributed by Víctor González).
Latest Distribution Releases
On the Distributions page, you will see a list of current and future ROS distribution pages. Planning notes for upcoming distributions will be on the relevant wiki page, e.g. Hydro Planning.
ROS Enhancement Proposals (REPs)
The REP process, closely modeled on Python's PEP process, allows the community to participate in the ongoing development of ROS. For more information, see the REPs page.
Repositories
To maximize community participation, we follow a federated repository model: rather than having one true place for all ROS packages, users and developers around the world can host their own repositories of ROS packages. You can setup your own public repository or use free hosting online.
GitHub
The ROS community has standardized repository location by suggesting that everyone use GitHub. The Open Source Robotics Foundation has switched to use GitHub as the primary hosting site. The ease of collaboration using the GitHub ecosystem has proven very effective. See Recommended Repository Usage.
GitHub Organizations
There are several GitHub organizations which host many of the core ROS packages. This is the primary location for submitting Issues/bugs, contributing patches and discussing issues directly with the developers. You are encouraged to fork projects and send pull requests as needed.
Historical Hosting Sites
Core ROS packages and Willow Garage development work has historically been hosted at the following locations but they are no longer active:
SourceForge.
- code.ros.org
- kforge.ros.org
If you find references to these hosting sites, you'll want to look for newer references to where they have migrated to.
Create Your Own ROS package Repository
There are hundreds of ROS repositories hosted by companies, universities, and individuals around the world. Whether you're releasing one ROS package or hundreds, feel free to start your own repository to share your code with the rest of the community.
Once you created your own public repository, add that to ROS package index for automatically generating document. Doing so will automatically populate the information of your package on ros.org so that it can get better visibility among the community. It also enables ros.org to add your packages into the package list, which is utilized in various service it provides (e.g. package search).
Release Binary Packages
To release binary packages we use the bloom tool. Here is the list of tutorials for releasing software onto the ROS buildfarm for binary packaging.
Submitting a package for indexing
- This is not specifically bloom related but is a related task to the first time release. Making the release below will prompt to add the package source to the index too.
Releasing a package for the first time
- Start with this tutorial if the packages you want to release have not been released previously.
Releasing a new version of a catkin package
- Start with this tutorial if the packages you want to release have been released before.
If you have two factor authorization enabled on github, and you want bloom to be able to manually create pull requests for you:
Some helpful information to maintain a ROS package which are not directly related to bloom:
Here are some unofficial notes and tutorials which can provided additional help if you are having trouble releasing:
Participating in Software Reviews
Design and peer review documentation for ROS packages are available online. On all package pages, e.g. actionlib, there is a link to 'Reviews' that will show you a list of any API or documentation reviews that have occurred. These review notes generally contain design goals and motivation as well.
The general process for a review is (this may be out of date: we generally use GitHub now):
- Maintainer puts together documentation for review (e.g. documenting APIs, design notes)
- Maintainer creates a new review page for the review that links to the relevant documentation
A week before the review meeting, an e-mail is sent to ros-users
- Comments are collected in the review page
- Meeting is held where comments are reviewed. If necessary, review process is repeated until approval is reached.
While meetings have generally been held in person, it is possible to have open meetings (e.g. GitHub) if people express interest on the mailing list.