We want to make contributing to this project as easy and transparent as possible. If you identify and bugs, have improvements to the code or documentation, we will be happy to review your code and integrate the changes into the main branch.
If you are planning on porting PlanOut to other languages or platforms, please let us know! We are happy to review ports in detail, and either post them on our own repository, or link to your own repository as a submodule.
The Python reference implementation mirrors the functionality of PlanOut and core parts of Facebook's experimentation stack, which is written in Hack (we hope to open source parts of this implementation in the near future). As we improve PlanOut internally, we will continue to maintain the Python implementation as to maintain feature parity.
We actively welcome your pull requests.
- Fork the repo and create your branch from
master
. - If you've added code that should be tested (most code should be!), add unit tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes.
- Make sure your code lints.
- If you haven't already, complete the Contributor License Agreement ("CLA").
In order to accept your pull request, we need you to submit a CLA. You only need to do this once to work on any of Facebook's open source projects.
Complete your CLA here: https://developers.facebook.com/opensource/cla
We use GitHub issues to track public bugs. Please ensure your description is clear and has sufficient instructions to be able to reproduce the issue.
Facebook has a bounty program for the safe disclosure of security bugs. In those cases, please go through the process outlined on that page and do not file a public issue.
- 80 character line length
- PEP-8 (if contributing Python code)
By contributing to PlanOut, you agree that your contributions will be licensed under its BSD license.