CONTRIBUTING.md
# Contributing
As Arx is an open source library, any contributions from the community are greatly appreciated. This document details the guidelines for making contributions to Arx.
## Reporting issues
Prior to reporting an issue, please ensure:
- [ ] You have used the search utility provided on GitHub issues to look for similar issues.
- [ ] You have checked the documentation (for the version of Arx you are using).
- [ ] You are using the latest version of Arx (if possible).
Issues may be one of four different types listed below. Please use the respective [issue template](/.github/ISSUE_TEMPLATE) when creating an issue:
- **Error or warning** ([template](/.github/ISSUE_TEMPLATE/error-or-warning.md))<br>For reporting an error or warning generated by Arx.
- **Unexpected or incorrect functionality** ([template](/.github/ISSUE_TEMPLATE/unexpected.md))<br>For reporting something that doesn't seem to be working correctly or is unexpected.
- **Improvement to an existing feature** ([template](/.github/ISSUE_TEMPLATE/improvement.md))<br>For suggesting an improvement to a feature already offered by Arx.
- **Suggesting a new feature** ([template](/.github/ISSUE_TEMPLATE/new-feature.md))<br>For proposing a new feature to Arx that would be beneficial.
## Making changes to Arx
- **Add specs**: Your pull request won't be accepted if it doesn't have any specs.
- **Document any change in behaviour**: Make sure the README, YARD documentation and all other relevant documentation is kept up-to-date.
- **Create topic branches**: Will not pull from your master branch!
- **One pull request per feature**: If you wish to add more than one new feature, please make multiple pull requests.
- **Meaningful commit messages**: Make sure each individual commit in your pull request has a meaningful message.
- **De-clutter commit history**: If you had to make multiple intermediate commits while developing, please squash them before making your pull request.
### Branch naming conventions
Branch names must be of the form `type/short-phrase-or-description`, where `type` is either a:
- `patch`: Making a change (including removal) of an existing feature.
- `feature`: Adding a new feature.
Branches should typically feature only one main change. If making multiple unrelated changes, please create separate branches and open separate pull requests.
### Making pull requests
**Ensure you use the [pull request template](/.github/PULL_REQUEST_TEMPLATE.md).**
Pull request titles must be of the form `[type:specifier] Pull request title`, where `type` is the same as the branch type (read above).
The `specifier` should be one of:
- `lib`: Changes to any code in the `lib` directory.
- `gem`: Changes to any gem related files, such as `arx.gemspec`, `Rakefile` or `LICENSE`.
- `ci`: Changes to `.travis.yml` or `.coveralls.yml`.
- `specs`: Changes to any code in the `specs` directory.
- `git`: Changes to any Git-related code, such as `.gitignore`.
- `docs`: Changes to any documentation configuration (`.yardopts`), or `README.md`, `CONTRIBUTING.md`, `CHANGELOG.md`.
Continuous integration (Travis CI) builds must pass in order for your pull request to be merged.
## License
By contributing, you agree that your contributions will be licensed under the same [MIT License](/LICENSE) that covers this repository.