Contributing.md

# Contributing

I value contributions to Enviable--bug reports, discussions, feature requests,
and code contributions. New features should be proposed and
[discussed][discussed].

Before contributing patches, please read the [Licence](./Licence.md).

Enviable is governed under the [Contributor Covenant Code of Conduct][cccoc].

## Code Guidelines

We have several guidelines to contributing code through pull requests to App
Identity reference implementations:

- All code changes require tests. In most cases, this will be added or updated
  unit tests. We use [ExUnit][ExUnit].

- We use code formatters, static analysis tools, and linting to ensure
  consistent styles and formatting. There should be no warnings output from
  compile or test run processes. We use `mix compile --warnings-as-errors`,
  [Credo][Credo], and `mix format` (with [Styler][Styler])

- Proposed changes should be on a thoughtfully-named topic branch and organized
  into logical commit chunks as appropriate.

- Use [Conventional Commits][conventional] with our [conventions][conventions].

- Versions must not be updated in pull requests.

- Documentation should be added or updated as appropriate for new or updated
  functionality.

- New dependencies are discouraged and their addition must be discussed,
  regardless whether it is a development dependency, optional dependency, or
  runtime dependency.

- All GitHub Actions checks marked as required must pass before a pull request
  may be accepted and merged.

[cccoc]: ./Code-of-Conduct.md
[conventional]: https://www.conventionalcommits.org/en/v1.0.0/
[conventions]: https://github.com/KineticCafe/app-identity/blob/main/Contributing.md#commit-conventions
[credo]: https://github.com/rrrene/credo
[styler]: https://github.com/adobe/styler
[discussed]: https://github.com/halostatue/enviable/discussions
[exunit]: https://hexdocs.pm/ex_unit/ExUnit.html