# Contributing to InSpec
We are glad you want to contribute to InSpec!
We utilize **Github Issues** for issue tracking and contributions. You can contribute in two ways:
1. Reporting an issue or making a feature request [here](#issues).
2. Adding features or fixing bugs yourself and contributing your code to InSpec.
## Contribution Process
We have a 3 step process that utilizes **Github Issues**:
1. Sign or be added to an existing [Contributor License Agreement (CLA)](https://supermarket.chef.io/become-a-contributor).
2. Create a Github Pull Request.
3. Do [Code Review](#cr) with the **InSpec Team** on the pull request.
### Chef Pull Requests
We strive to ensure high quality throughout the InSpec experience. In order to ensure
this, we require a couple of things for all pull requests to InSpec:
1. **Tests:** To ensure high quality code and protect against future regressions, we require all the
code in InSpec to have at least unit test coverage. See the [test/unit](https://github.com/chef/inspec/tree/master/test/unit)
directory for the existing tests and use ```bundle exec rake test``` to run them.
2. **Green Travis Run:** We use [Travis CI](https://travis-ci.org/) in order to run our tests
continuously on all the pull requests. We require the Travis runs to succeed on every pull
request before being merged.
3. **Up-to-date Documentation:** Every code change should be reflected in an update for our [documentation](https://github.com/chef/inspec/tree/master/docs). We expect PRs to update the documentation with the code change.
In addition to this it would be nice to include the description of the problem you are solving
with your change. You can use [Chef Issue Template](#issuetemplate) in the description section
of the pull request.
### Chef Code Review Process
The Chef Code Review process happens on Github pull requests. See
[this article](https://help.github.com/articles/using-pull-requests) if you're not
familiar with Github Pull Requests.
Once you a pull request, the **InSpec Team** will review your code
and respond to you with any feedback they might have. The process at this point is as follows:
1. thumbs-ups are required from the **InSpec Team** for all merges.
2. When ready, your pull request will be merged into `master`, we may require you to rebase your PR to the latest `master`.
3. Once the PR is merged, you will be included in `CHANGELOG.md`.
### Contributor License Agreement (CLA)
Licensing is very important to open source projects. It helps ensure the
software continues to be available under the terms that the author desired.
Chef uses [the Apache 2.0 license](https://github.com/chef/chef/blob/master/LICENSE)
to strike a balance between open contribution and allowing you to use the
software however you would like to.
The license tells you what rights you have that are provided by the copyright holder.
It is important that the contributor fully understands what rights they are
licensing and agrees to them. Sometimes the copyright holder isn't the contributor,
such as when the contributor is doing work for a company.
To make a good faith effort to ensure these criteria are met, Chef requires an Individual CLA
or a Corporate CLA for contributions. This agreement helps ensure you are aware of the
terms of the license you are contributing your copyrighted works under, which helps to
prevent the inclusion of works in the projects that the contributor does not hold the rights
to share.
It only takes a few minutes to complete a CLA, and you retain the copyright to your contribution.
You can complete our
[Individual CLA](https://supermarket.chef.io/icla-signatures/new) online.
If you're contributing on behalf of your employer and they retain the copyright for your works,
have your employer fill out our
[Corporate CLA](https://supermarket.chef.io/ccla-signatures/new) instead.