# Contribution guide We really appreciate contribution and would love to see you joining the project :) But please read this document carefully before starting contribution. We probably won't accept most PRs that don't align with the following guidelines. ## Issue before PR Please only implement features that have an open issue or open an issue before starting to work on a feature. By that you don't waste time on a feature, that maybe won't be accepted and we can understand your code more easily. ## Use rustfmt Please format your code with rustfmt (`cargo fmt`) before committing it. By that there won't be any additional commits needed just to align the code with the rust style conventions. ## Update docs Please keep the docs up to date, when you change anything relevant to the documentation (API, etc.). ## 1 feature 1 commit Keeping commits limited to one feature makes it way easier to understand them and increases the probability that the commit will be accepted. ## commit message convention Please keep your commit messages in the following style: ``` type(scope): change notes ``` A commits type can be one of the following: - **feat**: feature - **fix**: bugfix - **refactor**: nothing new added but code restructured, etc - **docs**: documentation changes The commit scope is kinda free, but it's a good idea to use scopes, that have been used before. Scopes can be nested like this: `scope >> subscope >> subscope`. If the commit affects multiple scopes, you can set multiple scopes like this: `scope // scope`.