Contributing to ROS
ROS is an open-source ecosystem built and improved through contributions from its community. This article introduces the main ways you can contribute to ROS and helps you identify an appropriate first contribution based on your skills and experience.
ROS (Robot Operating System) is an open-source ecosystem. We rely on contributions from our community to help us grow and improve. This article introduces the ways in which you can contribute to ROS.
Summary
ROS is an open source, federated collection of tools and libraries that is built through contributions from our community. Whether you are a developer, researcher, company, or student, your contribution helps us to grow and improve.
Your first contribution
Everyone can contribute to ROS. Depending on your skills and experience, you can review and update the ROS documentation, contribute code, fix issues, review code submitted by others, participate in design discussions, and help others learn to use ROS or overcome their problems.
Complete beginner?
Work through the beginner tutorials, and check them for accuracy or improve explanations.
Getting familiar with ROS?
Check the issue lists and fix one of the issues labelled “good first issue”.
Triage an issue.
Experienced robotics developer?
Watch for questions on Robotics Stack Exchange, and offer support.
Review code submitted by others, to help improvements and bug fixes get merged faster for the benefit of everyone.
Contribute to ROS development
Anyone can contribute to the development of ROS. If you are a complete beginner looking for an entry point, start with a simple contribution such as fixing a small issue from the Good first issues list If you are a more experienced developer, consider contributing at a deeper level by designing new features, reviewing code from other developers, or fixing complex bugs.
Review a code pull request
Reviewing a pull request involves carefully checking proposed changes to make sure they are correct, well written, and do not introduce issues. Anyone can review a pull request. If you are a beginner, reviewing a pull request is a great way to learn the codebase and ask questions where something is unclear. If you are a more experienced developer, you can contribute by identifying design, performance, or security issues and ensuring overall code quality.
Contribute to code
Contributing to our open source code involves reviewing an existing project and making improvements such as fixing bugs, improving issues, or developing features.
Ready to contribute?
Familiarize yourself with our developer guidelines and tools.
Pick an issue from one of the issue lists:
Fix the issue and submit the pull request.
More information is in <Placeholder link to new “Make a pull request” article>
Ready to contribute?
Familiarize your with how to review a pull request.
More information is in <Placeholder link to new “Reviewing a pull request” article>.
Pick an issue from the pull request list: Pull request list
Contribute to QA
Triage an issue
Triaging an issue involves reviewing the reported issue to understand the problem, assess its impact, and decide what action to take next. If you are a beginner, you can help by checking whether an issue can be reproduced and providing additional details where needed. If you are a more experienced contributor, you can prioritize issues, identify root causes, and guide how and when they should be resolved.
Ready to contribute?
Pick an issue to triage:
Triage the issue.
More information is in <Placeholder link to new “Triaging an issue” article>
Report an issue
Reporting issues involves identifying and describing problems in the software so they can be understood and fixed. You can report any issues you encounter with information to help developers quickly diagnose and resolve the issue. If you are a beginner following a tutorial, for example, you can include the steps needed to reproduce the problem. If you are a more experienced contributor, you can also provide relevant technical details.
Ready to contribute?
Report your first issue.
More information is in <Placeholder link to new “Reporting an issue” article>
Report security vulnerabilities
Reporting security vulnerabilities involves responsibly identifying and disclosing potential security issues so they can be safely addressed and resolved.
If you spot a security vulnerability, contact security@openrobotics.org
Contribute to future design
Contributing to design involves shaping how features are structured and interact, ensuring they are intuitive, scalable, and aligned with user needs.
Join a discussion
Taking part in discussions involves contributing ideas and feedback about how features and systems can be designed and improved. Every contribution is valuable, even small questions or suggestions. If you are a more experienced contributor, you can help shape design decisions, evaluate different approaches, and guide the overall direction of the project.
Ready to contribute?
Join an ongoing discussion, and share your thoughts: Open Robotics Discourse
Suggest a feature
ROS continues to evolve, and suggesting features is a valuable way to help improve the experience for everyone. If you spot a way that ROS can be improved, you can post about it to get feedback from the community on its validity. If your idea is significant enough, it may even be worth making a Robotics Enhancement Proposal for it. Don’t forget to check the existing list of requests first!
Ready to contribute?
Check if the enhancement has already been suggested:
Enhancement issues on GitHub. For example, take a look at the project list, where you can view project enhancement requests
Talk to the community about your suggested enhancement in the ROS Ideas category at Discourse
Submit an enhancement suggestion as an issue on the appropriate repository, or, for more significant ideas (and when recommended to do so in discussion about your idea), submit a new REP
More information on submitting an issue is in <Placeholder link to new “Reporting an issue” article>.
Improve graphical interfaces
ROS includes a number of graphical interfaces. Anyone can suggest interface improvements, especially those with UX design experience. This helps to shape a more intuitive and user-friendly design.
Ready to contribute?
Submit a UI improvement, for example, your suggestion or your design work.
More information is in <Placeholder link to new “Submitting an issue” article>
Implement a UI improvement.
Become a project member (maintainer)
ROS maintainers ensure that the project is making progress. The responsibilities of maintainers include:
Reviewing incoming code contributions for style, quality, and overall fit into the goals of the repository and ROS
Ensuring that CI continues to stay green
Merging pull requests that meet the quality and CI standards
Addressing issues opened up by users
A maintainer is responsible for guiding development, reviewing contributions, and helping ensure the quality and direction of ROS. At ROS, there are two maintainer roles: as a Committer, or as a Project Management Committee (PMC) Member. All PMC Members are also Committers. A Committer can merge pull requests, while a PMC Member helps guide the overall direction and governance of the project.
Ready to contribute?
Each core repository in the ROS project has Committers who are responsible for that repository. Becoming a new Committer of one or more of those repositories is a process based on mentorship. The process begins with an existing PMC Member inviting you to be mentored, or you volunteering and finding a PMC Member willing to mentor you. For full and current details of the process, please see the ROS Project Charter Generally, you will need to have demonstrated a sustained period of making contributions such as reviewing PRs and submitting PRs before someone is likely to invest time into mentoring you. Approximately every 3 months, the ROS team will review the contributions in all of the repositories and send out invitations to new maintainers. Once the invitation is accepted, the new maintainer will be asked to go through a short training process on the mechanisms and policies of the ROS repositories. After that training process is completed, the new maintainer will be given write access to the appropriate repositories.
Guidance for maintainers: ROS Core Maintainer Guide
Contribute to documentation
Contribute to improving and expanding the ROS documentation.
Review a documentation pull request
Reviewing a pull request involves carefully checking proposed documentation changes to make sure the content is clear and correct. Anyone can review a pull request. Reviewing a pull request is a great way to learn about ROS and ask questions where something is unclear.
Write and update documentation
Contributing to the ROS documentation is a great way to learn about and improve ROS. Writing and updating documentation ensures it stays aligned with the code. Whenever you update the code, you should also update the documentation so that it remains accurate and reliable. Anyone can help with maintaining the existing documentation. If you are a beginner, you can help by fixing small issues such as typos or unclear instructions. More experienced contributors can improve and expand documentation.
Ready to contribute?
Read our documentation contribution guidelines: <Placeholder link to updated contribution to docs article>.
Browse the documentation issue list, and choose an issue to fix: ROS documentation issue tracker
Update the documentation to fix the issue.
More information is in <Placeholder link to new “Creating and updating documentation” article>.
Test and review documentation
Testing and reviewing documentation makes sure it is clear, accurate, and easy to follow in practice. It involves checking that instructions work as expected and reflect how the code behaves. If you are a beginner, you can follow our tutorials and how-to guides and report anything that is unclear or incorrect. If you are a more experienced contributor, you can validate technical accuracy, identify gaps, and improve the overall structure and clarity.
Ready to contribute?
Follow a tutorial, how-to guide, or other documentation. If you spot something inaccurate or unclear, provide your feedback.
More information is in <Placeholder link to new “Reporting an issue” article>
Provide support
ROS users come from a wide range of technical backgrounds and use different operating systems. Some are completely new to ROS, so even those with a little experience can play an important role in supporting others as they get started.
If you notice a question on Robotics Stack Exchange that relates to an issue you have encountered, consider sharing what worked for you. If you aren’t entirely sure your answer is correct, just say so. The community is there to help, and others will step in to clarify or add more detail if needed. Helping others is also one of the fastest and most effective ways to improve your own ROS knowledge. Even if you don’t know the answer to someone’s question immediately, try finding a solution, and when you have one, post that as an answer to the question.
Ready to contribute?
Provide pointers on Robotics Stack Exchange: Robotics Stack Exchange
Chat with new community members by visiting the official Open Robotics Discourse: Open Robotics Discourse
Participate in the community
There are various ways to join the ROS community, allowing you to participate, collaborate, and contribute effectively. Here are some ways you can join in:
Attend events, from local informal meetings to our annual developer conference, ROSCon:
Community organized events: View the calendar
Official Open Robotics events: View the calendar
Host an online community group event: Fill in the form to add your event to the calendar
You can also ask for help with hosting an event on Zulip or Discourse
Host a local meet-up: Fill in the form to add your event to the calendar
(Help with hosting local meet-up link to be provided)
Join discussion groups and chats:
Promote ROS
If you want to get involved in promoting ROS, why not train or mentor others, or host a meetup in your area.
Ready to contribute?
Support people with working through the tutorials, starting with First steps with ROS
Be part of our community on social media: <Placeholder: LINK TO LIST OF SOCIALS TO BE PROVIDED>
Become an OSRA member
Becoming an OSRA member lets you influence the organization’s direction, collaborate with a wider community, and contribute more directly to the growth and impact of our projects.
Learn more about OSRA and about becoming a member