# Contributing
Thanks for contributing!
## Getting Started
### Required software
- [Rust toolchain](https://www.rust-lang.org/en-US/install.html)
- [`cargo-readme`](https://github.com/livioribeiro/cargo-readme) (`cargo install
cargo-readme`)
- [GNU Make](https://www.gnu.org/software/make/)
- [Docker](https://www.docker.com/) or another Docker-compatible container
engine
- The docker command used by the Makefile can be specified with `DOCKER_COMMAND`, e.g.
```
make DOCKER_COMMAND=containerd docker/redis
```
## Making Changes
- Before committing changes, make sure to run `make fmt` to format the changes
- Add an entry to the `CHANGELOG.md` file
- The `README.md` is generated using `cargo-readme` from the crate level
documentation in `src/lib.rs`. This means the `README.md` should never be
modified by hand. To sync changes made to `src/lib.rs`, run `make docs`
- The CI system will run all tests using `make ci`. Make sure to run all tests
before submitting your pull request
## Make goals overview
```bash
# The goal used by the CI system
make ci
# Runs all examples
make examples
# Runs all tests
make tests
# Syncs all docs
make sync
# Formats the source code
make fmt
# Performs multiple checks (formatting, clippy and documentation sync)
make check
# Removes all generated artifacts, including docker containers
make clean
```
## Submitting Changes
Pull Requests should be made against master.
Travis CI will run the test suite on all PRs.
Remember to update the changelog!