# Contributing guidelines

Wanna contribute to Patroni? Yay - here is how!

## Chatting

Just want to chat with other Patroni users? Looking for interactive troubleshooting help? Join us on channel #patroni in the PostgreSQL Slack.

## Running tests

Requirements for running behave tests:

1. PostgreSQL packages need to be installed.

2. PostgreSQL binaries must be available in your PATH. You may need to add them to the path with something like PATH=/usr/lib/postgresql/11/bin:$PATH python -m behave.

3. If you’d like to test with external DCSs (e.g., Etcd, Consul, and Zookeeper) you’ll need the packages installed and respective services running and accepting unencrypted/unprotected connections on localhost and default port. In the case of Etcd or Consul, the behave test suite could start them up if binaries are available in the PATH.

> Install dependencies:

    # You may want to use Virtualenv or specify pip3.
    pip install -r requirements.txt
    pip install -r requirements.dev.txt

After you have all dependencies installed, you can run the various test suites:

    # You may want to use Virtualenv or specify python3.

    # Run flake8 to check syntax and formatting:
    python setup.py flake8

    # Run the pytest suite in tests/:
    python setup.py test

    # Run the behave (https://behave.readthedocs.io/en/latest/) test suite in features/;
    # modify DCS as desired (raft has no dependencies so is the easiest to start with):
    DCS=raft python -m behave

## Reporting issues

If you have a question about patroni or have a problem using it, please read the README before filing an issue. Also double check with the current issues on our Issues Tracker.

## Contributing a pull request

1. Submit a comment to the relevant issue or create a new issue describing your proposed change.

2. Do a fork, develop and test your code changes.

3. Include documentation

4. Submit a pull request.

You’ll get feedback about your pull request as soon as possible.

Happy Patroni hacking ;-)