# Contributing

Thank you for considering contributing to khard!

- Contributing
- Benchmarking, profiling and performance
- API Reference

Khard is developed on Github where you are welcome to post bug reports, feature requests or join the discussion in general.

## Bug reports

If you want to report a bug keep in mind that the following things make it much easier for maintainers to help:

- update to the latest version if possible and verify the bug there

- report the version(s) that are affected

- state the python version you are using

- if there are stack tracebacks post them with your bug report

- supply a minimal configuration (config file and vCards) to reproduce the error

## Feature requests

Please stick to the following standards when you open pull requests:

- Write “good” commit messages, especially a proper subject line. This is also explained in the Git book.

- Format your python code according to PEP 8. Tools like pylint also help in writing maintainable code.

- Khard has a test suite, please provide tests for bugs that you fix and also for new code and new features that are introduced.

- Please verify all tests pass before sending a pull request, they will be checked again in CI but it might be a lot faster to check locally first: travis

## Development

It is recommended to create a virtualenv to isolate the development environment for Khard from your system’s Python installation:

    python3 -m venv khard-dev-venv
    . khard-dev-venv/bin/activate

The you can install the dependencies with `pip`:

    pip3 install --editable .
    khard --help

If you have the Nix package manager installed you can use the `flake.nix` that is provided with Khard. It provides an isolated Python version with all dependencies with `nix develop`.