## Contributing
In the spirit of [free software][free-sw], **everyone** is encouraged to help
improve this project.

[free-sw]: http://www.fsf.org/licensing/essays/free-sw.html

Here are some ways *you* can contribute:

* by using alpha, beta, and prerelease versions
* by reporting bugs
* by suggesting new features
* by writing or editing documentation
* by writing tests
* by writing code (**no patch is too small**: fix typos, add comments, clean up
  inconsistent whitespace)
* by refactoring code
* by closing [issues][]
* by reviewing patches

[issues]: https://github.com/sferik/multi_json/issues

## Submitting an Issue
We use the [GitHub issue tracker][issues] to track bugs and features. Before
submitting a bug report or feature request, check to make sure it hasn't
already been submitted. When submitting a bug report, please include a
[Gist][gist] that includes a stack trace and any details that may be necessary
to reproduce the bug, including your gem version, Ruby version, and operating
system. Ideally, a bug report should include a pull request with failing tests.

[gist]: https://gist.github.com/

## Submitting a Pull Request
1.  [Fork the repository.][fork]
2.  [Create a topic branch.][branch]
3.  Add tests for your unimplemented feature or bug fix.
4.  Run `bundle exec rake test`. If your tests pass, return to step 3.
5.  Implement your feature or bug fix.
6.  Run `bundle exec rake test`. If your tests fail, return to step 5.
7.  Run `open coverage/index.html`. If your changes are not completely covered
    by your tests, return to step 3.
8.  Run `bundle exec rake mutant` and kill any surviving mutants.
9.  Run `bundle exec rake lint` and fix any offenses.
10. Run `bundle exec rake yardstick` and add any missing documentation.
11. Run `bundle exec rake steep` and ensure that the code typechecks.
12. Add, commit, and push your changes.
13. [Submit a pull request][pr] that summarizes *what* changes you made and
    *why* you made them. If you made any significant decisions along the way,
    describe the options you considered and how you thought about the
    tradeoffs.

[fork]: http://help.github.com/fork-a-repo/
[branch]: http://learn.github.com/p/branching.html
[pr]: http://help.github.com/send-pull-requests/
