Contributing to RIOT

Lotte Steenbrink edited this page Oct 30, 2016 · 15 revisions
Clone this wiki locally

Welcome to RIOT! We're excited to have you on board as a future contributor. This guide is designed to get you started and give you some pointers on where you could dive into the RIOT project.

Community

We use the following tools to organize ourselves:

  • Mailing Lists: riot-devel and riot-users
  • Code hosting: http://www.github.com
  • Bug tracking: GitHub's issue tracker (notice our label guidelines)
  • Reviewing and integrating code: GitHub's pull request system
  • Live chat: IRC channel #RIOT-OS on freenode.net
  • Virtual meetings: We do biweekly virtual meetings with remote participation to coordinate development efforts and discuss. Newcomers are always very welcome to participate.
  • Hack'n'ACK parties: parts of the RIOT community meet every last Tuesday of a month to review, fix, and merge open Pull Requests. The Hamburg crew meets at HAW and Berlin people meet at the computer science institute of FU Berlin. People who are not located in Berlin or in Hamburg can also join remotely/virtually.

Getting started

The RIOT wiki provides you with a few documents to help you understand how RIOT works.
The Introduction aims at providing an overview over the design principles and main modules of RIOT.
Creating your first RIOT project explains how to write and build applications for RIOT.

If you have any questions, please don't hesitate to ask them on the mailing list or in the IRC channel.

Help wanted

In case you're not really sure where to start, we've created a list of suggestions.

Documentation

If you've found yourself struggling to understand a particular aspect, chances are you're not the first and won't be the last. Writing down what you've learned is a great way to recap your new knowledge and share it with others. You can also start to learn about RIOT by combing through existing documentation and fixing errors and typos. Any help with improving the documentation is greatly appreciated and makes a big difference to the RIOT project.
After you've finished writing, please publish your documentation in one of the following ways, depending on its type.

General knowledge, HOWTOs

Articles that focus on design aspects or how to use a particular module should be contributed to the RIOT wiki. After you've added your entry, please share it on the riot-dev mailing list so everyone is aware of its existence (and thank you).
If you'd like to document a solution to minor annoyances or common pitfalls, please do not hesitate to extend the Troubleshooting wiki page. Again, please share your additions with the riot-dev mailing list.

Code comments, HOWTOs for particular projects

Documentation that releates directly to the code at hand like the HOWTO files that can be found in some of the directories in RIOT/examples/ or comments in the code itself should be submitted through a pull request.

If you're not sure about the correct way to submit your writing, please ask on the mailing list or open an issue saying which documentation is missing. The other RIOTers will help you find the right format.

Issues

If RIOT behaves oddly, please do not hesitate to open an issue. Other RIOT developers will be happy to help figure out what the problem is and fix possible bugs. Please notice that we use a bunch of tags to label the issues. Their meanings are explained here.

Contribute code

If you think your work should be integrated in the main RIOT repository, take the following steps: (short version, a more detailed version is available here)

  1. Fork the RIOT git repository (if you haven't done this already)
  2. Create a branch
  3. Make commits
  4. make sure your code is in compliance with RIOTs coding conventions
  5. Push this branch to your fork on GitHub
  6. Do a pull request (Use the labels)
  7. Other RIOT members will provide feedback
  8. Address this feedback
  9. Your code is merged in RIOT master branch