Contributing to DejaCode#

Thank you so much for being so interested in contributing to DejaCode. We are always on the lookout for enthusiastic contributors like you who can make our project better, and we’re willing to lend a helping hand if you have any questions or need guidance along the way. That being said, here are a few resources to help you get started.


By contributing to the DejaCode project, you agree:

  • To the Developer Certificate of Origin.

  • That your Contributions to DejaCode are licensed under Apache-2.0.

Do Your Homework#

Before adding a contribution or create a new issue, take a look at the project’s README, read through our documentation, and browse existing issues, to develop some understanding of the project and confirm whether a given issue/feature has previously been discussed.

Ways to Contribute#

Contributing to the codebase is not the only way to add value to DejaCode or join our community. Below are some examples to get involved:

First Timers#

You are here to help, but you’re a new contributor! No worries, we always welcome newcomer contributors. We maintain some good first issues and encourage new contributors to work on those issues for a smooth start.


“Can I work on this issue?”

You do not need our permission to work on an open issue. A good start is to present your understanding of the problem/bug and how you would fix it. Providing some code using a pull request will come handy, but being able to explain a solution is always a good start.

Make sure to read through this page and follow the recommendations.


“Is this issue is open?”

Unless closed, yes it is open.

Report Issues#

  • Report a new bug; just remember to be as specific as possible.

  • Create a new issue to request a feature, submit a feedback, or ask a question.

  • Look into existing bugs, try to reproduce the issue on your side, and discuss solutions in the comments.


Make sure to check existing issues, to confirm whether a given issue or a question has previously been discussed.

Code Contributions#

Code is contributed to the codebase using pull requests. A pull request should always be attached to an existing issue. When there is no existing issues, start by creating one to discuss potential solutions and implementation details before writing any code.

We use several conventions to ensure code quality regarding format, testing, and attribution.

Make sure to follow those conventions before submitting your code:

  1. Code validation

We use PEP8 conventions. A command is available to automatically format your code:

make valid
  1. Unit tests

We write tests, a lot of tests, thousands of tests. When fixing bugs or adding new features, you should add tests too. You can run the test suite with:

make test
  1. Commit messages and Developer Certificate of Origin

Follow the instructions at Writing good Commit Messages and check some examples.

You must include a “Signed-off-by” to your commit messages:

Signed-off-by: Philippe Ombredanne <>
  1. Your code is now ready to be pushed as a PR


Pull requests that are not passing the automated integration tests are unlikely to be reviewed. Focus on making all the “Checks” to pass before asking for a code review.

Documentation Improvements#

Documentation is a critical aspect of any project that is usually neglected or overlooked. We value any suggestions to improve DejaCode documentation.


Our documentation is treated like code. Make sure to check our writing guidelines to help guide new users.

Other Ways#

You want to contribute to other aspects of the DejaCode project, and you can’t find what you’re looking for! You can always discuss new topics, ask questions, and interact with us and other community members on Gitter.

Helpful Resources#