# Contributing

*Thanks for being there!*

There are many ways you can help in the Perceval project. This document will guide you through this process.

## Reporting issues

We use GitHub issues for bugs in the code that are **reproducible**. A good bug report should contain every information
needed to reproduce it. Before opening a new issue, make sure to:

* **use the GitHub issue search** for existing and fixed bugs;
* **check if the issue has been fixed** in a more recent version;
* **isolate the problem** to give as much context as possible.

If you have questions on how to use the project or have trouble getting started with it,
consider using [our forum](https://perceval.quandela.net/forum/) instead.

## Requesting features

Do you think a feature is missing or would be a great addition to the project? Please open a GitHub issue to describe it.

## Contributing to the documentation

We would like the documentation to be as complete as possible, providing details about the framework, but
also about the field - and serve as a fully consistent training material. From our experience, documentation is never
an achieved task - and feel free to contribute - all the documentation is part of the project in
https://github.com/merlinquantum/merlin.

## Developing code

*You want to share some code, that's great!*

* If you want to contribute with code but are unsure what to do,
  * search for *TODO* comments in the code: these are small dev tasks that should be addressed at some point.
  * look for GitHub issues marked with the *help wanted* label: these are developments that we find particularly suited for community contributions.
* If you are planning to make a large change to the existing code, consider asking first on [the forum](https://perceval.quandela.net/forum/) to confirm that it is welcome.

In any cases, your new code **must**:

* pass the existing tests
* pass the [`flake8`](https://flake8.pycqa.org/en/latest/) style checker

and **should**:

* add new tests

    → you can use the coverage report to help you find untested code (see [README](README.md#running-tests-and-benchmarks) )
* update the [documentation](docs/source/)

## Helping others

Sharing experiences on the [forum](https://perceval.quandela.net/forum/), or contributing to open discussions will be
highly appreciated!
