Getting Involved#

OpenDP is a community effort and we welcome your contributions! OpenDP development takes place on GitHub, so you will need to create a GitHub account to get started.

Bug Reports#

Email security@opendp.org to report a security issue.

Please open a new issue for any other bug report. We also welcome new issues for usability problems! We want to know if you’ve encountered, say, a missing piece of documentation, or a particularly confusing interface.

Code and Proof Contributions#

Please open a new issue for any new code or proof contribution.

We would like to have an opportunity to talk with you and make design suggestions before you invest significant effort in your contribution. Opening an issue first also gives us a chance to connect you with people who are doing similar work or identify existing tooling that may be useful to you.

If you open an issue for adding a new constructor, please include a link to the research paper(s) your contribution will be derived from, if you already have an existing implementation, and make a case for why this constructor should be added to the library.

  • Is it unique and does it have reasonable utility?

  • If it has a similar behavior as another constructor, can you show that it has greater utility or useful trade-offs?

Once you get feedback, you can move on to the Contribution Process.

Resolve an Issue#

Take a look through the issue board if you do not already have a specific contribution in mind.

Once you find an issue you can tackle, comment on the issue to claim it. Feel free to ask clarifying questions!

You can follow the Contribution Process from here on.

Write Documentation#

We need your help to make OpenDP more accessible through documentation. There are many forms of documentation!

  • Python docstrings and type hints

  • Long-form sphinx documentation located here

  • Expanding Rustdocs on core library modules (example), structures and constructors

  • Notebooks and example applications

Please open a new issue to take ownership of a piece of documentation.

You can follow the Contribution Process from here on.

Add Tests#

We need your help to make OpenDP more stable by adding tests.

All tests (even ones embedded inside docstrings and this docs site) are checked automatically via CI.

There are also classes of tests that we are completely missing:

  • performance benchmarking for regressions and timing attacks

  • tests for utility

  • applying stochastic testers to relations

Please open a new issue to communicate what you are planning to work on.

You can follow the Contribution Process from here on.

Review Pull Requests#

It always helps to have another set of eyes reviewing code. This can also be a great way to familiarize yourself with the library internals and development process.

Respond to Discussion Posts#

We want to develop discussions into a useful community forum. Sharing your experience on this public forum would, of course, help make differential privacy more accessible!