|
| 1 | +# Contributing |
| 2 | + |
| 3 | +## Bug Reports |
| 4 | + |
| 5 | +If submitting a bug report please search open and closed issues first. |
| 6 | + |
| 7 | +## Pull Requests |
| 8 | + |
| 9 | +If you want to add new or change existing behavior, please submit an issue explaining what you want to add or change and why **before** submitting a PR. |
| 10 | + |
| 11 | +In order to submit a pull request: |
| 12 | + |
| 13 | +1. Fork the project |
| 14 | +2. Create a topic branch off of `main`, following [branch naming](#branch-naming) conventions |
| 15 | +3. Push the topic branch to your fork |
| 16 | +4. Open pull request, following [PR formatting](#pr-formatting) conventions |
| 17 | + |
| 18 | +Please ensure that you also follow project conventions around [code style](#code-style), [testing](#testing), and [commit messages](#commit-messages). |
| 19 | + |
| 20 | +By submitting a PR, you agree to license your work under the license of this project. |
| 21 | + |
| 22 | +## Conventions |
| 23 | + |
| 24 | +### Branch Naming |
| 25 | + |
| 26 | +Please start your branch name with one of `feature`, `fix`, or `chore` as applicable, then a `/`, then a succinct description of what the branch is about (for example, `chore/contribution-guidelines`). |
| 27 | + |
| 28 | +- `feature` indicates the addition of new functionality or enhancement of existing functionality |
| 29 | +- `fix` indicates a fix for a bug or other existing problem |
| 30 | +- `chore` indicates changes that don't modify how the project works, such as refactoring or adding additional tests/documentation |
| 31 | + |
| 32 | +### Code Style |
| 33 | + |
| 34 | +Please run `mix format` prior to committing. |
| 35 | + |
| 36 | +### Testing |
| 37 | + |
| 38 | +If you're submitting a bug fix, please include a test or tests that would have caught the problem. |
| 39 | + |
| 40 | +If you're submitting new features, please add tests (and documentation) as appropriate. |
| 41 | + |
| 42 | +### Commit Messages |
| 43 | + |
| 44 | +Commit messages should attempt to follow [the seven rules of a great Git commit message](https://chris.beams.io/posts/git-commit/#seven-rules): |
| 45 | + |
| 46 | +1. Separate subject from body with a blank line |
| 47 | +2. Limit the subject line to 50 characters |
| 48 | +3. Capitalize the subject line |
| 49 | +4. Do not end the subject line with a period |
| 50 | +5. Use the imperative mood in the subject line |
| 51 | +6. Wrap the body at 72 characters |
| 52 | +7. Use the body to explain what and why vs. how |
| 53 | + |
| 54 | +### PR Formatting |
| 55 | + |
| 56 | +The title of the PR should succinctly describe what the PR accomplishes, while the body should briefly detail how that was accomplished if it isn't evident in the title. |
| 57 | + |
| 58 | +If the PR is related to an issue or issues reference them in the first line ("PR for issue #123."), but don't use keywords that would automatically close the issue (like "closes #123" or "fixes #123"). |
| 59 | + |
| 60 | +If a PR makes any breaking changes make sure those changes are highlighted in the body. |
0 commit comments