diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..18063b1f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,61 @@ +# Contributing to Sylvia + +Sylvia welcomes contribution from everyone in the form of suggestions, bug +reports, pull requests, and feedback. This document gives some guidance if you +are thinking of helping us. + +## Submitting bug reports and feature requests + +When reporting a bug or asking for help, please include enough details so that +the people helping you can reproduce the behavior you are seeing. For some tips +on how to approach this, read about how to produce a [Minimal, Complete, and +Verifiable example](https://stackoverflow.com/help/mcve). + +When making a feature request, please make it clear what problem you intend to +solve with the feature, any ideas for how Sylvia could support solving that +problem, any possible alternatives, and any disadvantages. + +## Running checks + +Before submitting a pull request, please make sure that the following checks pass: + +```sh copy +cargo test && cargo fmt --check && cargo clippy --all-features -- -D warnings +``` + +If anything does not pass, typically it will be +easier to iterate and fix it locally than waiting for the CI servers to run +tests for you. + +You also have to run the tests in the `example` directory if your pull request affected the `sylvia-derive` crate: + +```sh copy +cd examples && cargo test +``` + +## Commit messages + +Sylvia requires the commit messages to follow the +[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) +specification. This convention makes it easier to understand the changes in the +project and to automate the release process. + +Ideally the commit message should also reference the issue number that it aims to fix. + +``` +feat: Support new type of message (#123) + +Additional valuable information about added functionality in the commit. +``` + +## Releasing + +Sylvia uses the [release-plz](https://github.com/release-plz/release-plz) GitHub action to automate the release process. Instead of running `cargo publish` manually, simply merge the automatic PR generated by this action and it would take care of the rest. + +## Versioning + +Sylvia follows the [Semantic Versioning](https://semver.org/) scheme. + +## Conduct + +wip