|
| 1 | +# Contributing Guidelines |
| 2 | + |
| 3 | +## Code of Conduct |
| 4 | +This project and everyone participating in it is governed by our |
| 5 | +[Code of Conduct](./CODE_OF_CONDUCT.md). By participating, you are expected to |
| 6 | +uphold this code. Please report unacceptable behavior to |
| 7 | +contact@coderspirit.xyz. |
| 8 | + |
| 9 | +## How can I contribute? |
| 10 | +- Reporting bugs |
| 11 | +- Proposing new features or improvements |
| 12 | + - For bug reports & proposals, consider the following: |
| 13 | + - Always be respectful, and mind the [Code of Conduct](./CODE_OF_CONDUCT.md) |
| 14 | + - Check if someone else already reported that bug or proposed that idea. |
| 15 | + - Try to be thorough and detailed with your explanations, to help others to |
| 16 | + understand them and take proper action. |
| 17 | +- Improving the current documentation |
| 18 | +- Contributing code |
| 19 | + - Always be respectful, and mind the [Code of Conduct](./CODE_OF_CONDUCT.md) |
| 20 | + - Backwards compatibility is almost sacred, please try to preserve it. |
| 21 | + - Try to respect the current coding style, to avoid style inconsistencies. |
| 22 | + |
| 23 | +## Tooling |
| 24 | + |
| 25 | +1. If you are developing from a Macos system, it is advisable to install the |
| 26 | + `findutils` package via `brew` (or your package manager of choice). |
| 27 | +2. To save time in CI and have more immediate feedback, it is a good idea to |
| 28 | + enable the Git hooks with the command: |
| 29 | + ```bash |
| 30 | + pnpm install-githooks |
| 31 | + ``` |
| 32 | + |
| 33 | +## Code Contributions: Acceptance Criteria |
| 34 | + |
| 35 | +In order for us to accept contributions, the merge request must fulfill certain |
| 36 | +requirements: |
| 37 | + |
| 38 | +### Style Guide |
| 39 | + |
| 40 | +There is no "official" style guide, although we enforce style through automated |
| 41 | +tools, such as [Prettier](https://prettier.io/) and |
| 42 | +[ESLint](https://eslint.org/). |
| 43 | + |
| 44 | +### Commit signatures |
| 45 | +For security & regulations compliance, commits must be cryptographically signed |
| 46 | +by [PGP](https://www.openpgp.org/)/[GPG](https://gnupg.org/), or SSH |
| 47 | +([since git v2.34](https://github.blog/2021-11-15-highlights-from-git-2-34/)). |
| 48 | +You can read more about this topic here: |
| 49 | + - [Git's documentation](https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work) |
| 50 | + - [Github's documentation](https://help.github.com/en/github/authenticating-to-github/signing-commits) |
| 51 | + - [Gitlab's documentation](https://docs.gitlab.com/ee/user/project/repository/gpg_signed_commits/). |
| 52 | + - [Signing Git commits with your SSH key](https://calebhearth.com/sign-git-with-ssh) |
| 53 | + |
| 54 | +### Commit messages |
| 55 | + |
| 56 | +Commit messages must be properly formatted (following the |
| 57 | +[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) rules). |
| 58 | +The reasons behind this decision are many: |
| 59 | + - The project's history has to be "easy" to read. |
| 60 | + - It's easier to extract statistics from the commit logs. |
| 61 | + - It's easier to generate useful changelogs. |
| 62 | + - This practice enforces that committers think twice about the nature of their |
| 63 | + contributions. |
| 64 | + - It allows us to automate version numbering (following |
| 65 | + [Semantic Versioning](https://semver.org/) rules) |
| 66 | + |
| 67 | +### Branch history |
| 68 | + |
| 69 | +The merge request's commits have to present a "clean" history, `git rebase` is |
| 70 | +your friend. This means: |
| 71 | + - linear history |
| 72 | + - commit messages matching what the commit does |
| 73 | + - no "experimental" commits + their revert commits |
0 commit comments