# Contributing
These are the contribution guidelines for caterpillar.
Development takes place on GitHub at https://github.com/dvzrv/caterpillar.
## Writing code
This project is written in [Rust](https://www.rust-lang.org/) and formatted using the default [rustfmt](https://github.com/rust-lang/rustfmt) of the most recent version of Rust.
All contributions are linted using [clippy](https://github.com/rust-lang/rust-clippy) and spell checked using [codespell](https://github.com/codespell-project/codespell).
To aide in development, it is encouraged to use the local `.ci/check.sh` script as [git pre-commit hook](https://man.archlinux.org/man/githooks.5#pre-commit):
```shell
$ ln -f -s ../../.ci/check.sh .git/hooks/pre-commit
```
## Writing commit messages
The commit message style follows [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/).
To aide in development, install [cocogitto](https://github.com/cocogitto/cocogitto) and add its [git-hooks](https://man.archlinux.org/man/githooks.5):
```shell
$ cog install-hook all
```
## Creating releases
Releases are created by the developers of this project using [cocogitto](https://github.com/cocogitto/cocogitto) by running:
```shell
cog bump --auto
```
The above will automatically bump the version based on the commits since the last release, add an entry to `CHANGELOG.md`, create a tag, push the changes to the default branch of the project and create a release on https://crates.io.
## License
All code contributions are dual-licensed under the terms of the [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) and [MIT](https://spdx.org/licenses/MIT.html).
All test environment scripts are licensed under the terms of the [LGPL-3.0-or-later](https://spdx.org/licenses/LGPL-3.0-or-later.html).
All documentation contributions fall under the terms of the [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/).
All configuration file contributions fall under the terms of the [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/).
License identifiers and copyright statements are checked using [reuse](https://git.fsfe.org/reuse/tool). By using `.ci/check.sh` as git pre-commit hook, it is run automatically.