CONTRIBUTING.md

Summary

Maintainability
Test Coverage
# 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.