1# Contributing to Criterion.<span></span>rs 2 3## Ideas, Experiences and Questions 4 5The easiest way to contribute to Criterion.<span></span>rs is to use it and report your experiences, ask questions and contribute ideas. We'd love to hear your thoughts on how to make Criterion.<span></span>rs better, or your comments on why you are or are not currently using it. 6 7Issues, ideas, requests and questions should be posted on the issue tracker at: 8 9https://github.com/bheisler/criterion.rs/issues 10 11## A Note on Dependency Updates 12 13Criterion.<span></span>rs does not accept pull requests to update dependencies unless specifically 14requested by the maintaner(s). Dependencies are updated manually by the maintainer(s) before each 15new release. 16 17## Code 18 19Pull requests are welcome, though please raise an issue for discussion first if none exists. We're happy to assist new contributors. 20 21If you're not sure what to work on, try checking the [Beginner label](https://github.com/bheisler/criterion.rs/issues?q=is%3Aissue+is%3Aopen+label%3ABeginner) 22 23To make changes to the code, fork the repo and clone it: 24 25`git clone git@github.com:your-username/criterion.rs.git` 26 27You'll probably want to install [gnuplot](http://www.gnuplot.info/) as well. See the gnuplot website for installation instructions. 28 29Then make your changes to the code. When you're done, run the tests: 30 31``` 32cargo test --all 33cargo bench 34``` 35 36It's a good idea to run clippy and fix any warnings as well: 37 38``` 39rustup component add clippy-preview 40cargo clippy --all 41``` 42 43Finally, run Rustfmt to maintain a common code style: 44 45``` 46rustup component add rustfmt-preview 47cargo fmt --all 48``` 49 50Don't forget to update the CHANGELOG.md file and any appropriate documentation. Once you're finished, push to your fork and submit a pull request. We try to respond to new issues and pull requests quickly, so if there hasn't been any response for more than a few days feel free to ping @bheisler. 51 52Some things that will increase the chance that your pull request is accepted: 53 54* Write tests 55* Clearly document public methods 56* Write a good commit message 57 58## Github Labels 59 60Criterion.<span></span>rs uses a simple set of labels to track issues. Most important are the 61difficulty labels: 62 63* Beginner - Suitable for people new to Criterion.rs, or even new to Rust in general 64* Intermediate - More challenging, likely involves some non-trivial design decisions and/or knowledge 65 of Criterion.<span></span>rs' internals 66* Bigger Project - Large and/or complex project such as designing a complex new feature 67 68Additionally, there are a few other noteworthy labels: 69 70* Breaking Change - Fixing this will have to wait until the next breaking-change release 71* Bug - Something isn't working right 72* Enhancement - Request to add a new feature or otherwise improve Criterion.<span></span>rs in some way 73 74## Code of Conduct 75 76We follow the [Rust Code of Conduct](http://www.rust-lang.org/conduct.html). 77