Skip to content
Sean DuBois edited this page Aug 12, 2018 · 24 revisions

Contributing

Thank you very much for contributing pion-WebRTC! This project only exists because of the work of individuals.

Creating an issue

Feel free to submit bugs and feature requests to the issue tracker. If you believe something will lead to a discussion sign up for the Golang Slack and join the #pion channel. It is much easier to debug/discuss with the shorter feedback loop.

You can also use our mailing list we use this for longer discussions to give others time to respond.

Contributing Code

Thank you for contributing! Every PR is different, but here are some high level rules that should help make it a success. This isn't an exhaustive list, but these are some bullet points that should help make contributing easy.

  • When writing your code consider the users first, pion-WebRTC is only as good as what people can build with it!
    • Try to conform to the WebRTC JS API as closely as possible. Users should be able to use API without even reading the docs.
    • Should be actionable. Many parts of the WebRTC API don't apply to our use cases, use your best judgement.
    • If you are creating something new, create an example to demo it and help users explore it quickly!
    • Seperate into reusable modules so others can easily read and reuse your work.
  • Create your PR early. Even if the code isn't complete this gives others the chance to know your working on it.
  • Make sure all the linters and checks pass, for extra credit try to even raise the code coverage!

Once your PR is ready you just need one review by a pion-WebRTC developer, then you can merge to master. To become a pion-WebRTC developer you need to just have one PR merged to master.

Project Ideas

All the following projects are currently unowned, so feel free to work on anything here! If you do start on something please reach out so we can remove it from the list

Add an example of pion-WebRTC <-> pion-WebRTC

Add e2e tests of pion-WebRTC <-> pion-WebRTC

Add e2e tests of pion-WebRTC <-> Chromium

Port DTLS code to Native Go (instead of OpenSSL)

We have a Wiki article explaining DTLS, and its purpose in the WebRTC stack here

There are some existing DTLS Golang implementations, but they aren't complete

This will be a difficult task, but is something we can split between multiple devs

Separate the stack into reusable modules

WebRTC is made up of many distinct technologies, which can be seen here

We have implemented a lot of these things and most of these components deserve their own package. Create a plan to seperate these things out, we should not lose any development speed and still have all the CI we have now.