- Editing the ROS Wiki
- Connect with the Community
- Development and Best Practices
- Latest Distribution Releases
- ROS Enhancement Proposals (REPs)
- Create Your Own ROS package Repository
- Release Binary Packages
- Participating in Software Reviews
Editing the ROS Wiki
Connect with the Community
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 ROS Answers.
Deprecated ros-users mailing list
For the time being posts from Discourse are being forwarded to the previously used email@example.com 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.
The place for questions and answers about ROS. ROS Answers provides a forum, which can be filtered by tags to make sure the relevant people are included and not overload everyone.
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 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.
See the ROS Planet feed for what others are doing.
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
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.
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.
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.
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:
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.
- 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.
- Start with this tutorial if the packages you want to release have not been released previously.
- 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.