1# Contributing to TinyTemplate 2 3## Ideas, Experiences and Questions 4 5The easiest way to contribute to TinyTemplate is to use it and report your experiences, ask questions and contribute ideas. We'd love to hear your thoughts on how to make TinyTemplate 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/TinyTemplate/issues 10 11## Code 12 13Pull requests are welcome, though please raise an issue or post a comment for discussion first. We're happy to assist new contributors. 14 15If you're not sure what to work on, try checking the [Beginner label](https://github.com/bheisler/TinyTemplate/labels/Beginner) 16 17To make changes to the code, fork the repo and clone it: 18 19`git clone git@github.com:your-username/TinyTemplate.git` 20 21Then make your changes to the code. When you're done, run the tests: 22 23``` 24cargo test 25``` 26 27It's a good idea to run clippy and fix any warnings as well: 28 29``` 30rustup component add clippy-preview 31cargo clippy 32``` 33 34Finally, run Rustfmt to maintain a common code style: 35 36``` 37rustup component add rustfmt-preview 38cargo fmt 39``` 40 41Don'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. 42 43Some things that will increase the chance that your pull request is accepted: 44 45* Write tests 46* Clearly document public methods, with examples if possible 47* Write a good commit message 48 49Good documentation is one of the core goals of the TinyTemplate project, so new code in pull requests should have clear and complete documentation. 50 51## Github Labels 52 53TinyTemplate uses a simple set of labels to track issues. Most important are the difficulty labels: 54 55- Beginner - Suitable for people new to TinyTemplate 56- Intermediate - More challenging, likely involves some non-obvious design decisions or knowledge of CUDA 57- Bigger Project - Large and/or complex project such as designing a safe, Rusty wrapper around a complex part of the CUDA API 58 59Additionally, there are a few other noteworthy labels: 60 61- Breaking Change - Fixing this will have to wait until the next breaking-change release 62- Enhancement - Enhancements to existing functionality or documentation 63- Help Wanted - Input and ideas requested 64 65## Code of Conduct 66 67We follow the [Rust Code of Conduct](http://www.rust-lang.org/conduct.html). 68