1# Contributing to nom 2 3Thanks a lot for contributing to this project! 4 5The following is a set of guidelines for contributing to [nom][1]. 6 7**Since the project is young**: consider those best practices prone to change. Please suggest improvements! 8 9[1]: https://github.com/geal/nom 10 11## Basics 12 13### License 14 15The project uses the [MIT][l1] license. By contributing to this project you agree to license 16your changes under this license. 17 18[l1]: https://opensource.org/licenses/MIT 19 20 21## What to do 22 23### Issues 24 25There is plenty of [features missing][i1] and possibly bugs might be already there. Feel free to add new [issues][i2] 26and to wrangle over those already [open][i3] and help fixing them. 27 28[i1]: https://github.com/geal/nom/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement 29[i2]: https://github.com/geal/nom/issues 30[i3]: https://github.com/geal/nom/issues?q=is%3Aopen+is%3Aissue 31 32### Code 33 34Implementing new codecs, container formats or protocols is always welcome! 35 36### Tests 37 38It is strongly suggested to provide test along changes so the coverage stays around the **85%**, helping to 39get to full coverage is pretty welcome. 40 41### Benchmark 42 43Help in making sure the code does not have performance regression, by improving the benchmark suite or just by 44running it weekly, is welcome as well. 45 46### Documentation 47 48To preview changes to the documentation: use `cargo doc` with [`cargo 49external-doc`](https://github.com/Geal/cargo-external-doc) 50 51## Style 52 53### Issue style 54 55Try to write at least 3 short paragraphs describing what were you trying to achieve, what is not working and 56the step by step actions that lead to the unwanted outcome. 57 58If possible provide: 59 60- a code snippet or a link to a [gist][is1] showcasing the problem, if is a library usage issue. 61- a backtrace, if it is a crash. 62- a sample file, if it is a decoding or encoding issue. 63 64[is1]: https://gist.github.com 65 66### Coding style 67 68The normal rust coding style is checked by [rustfmt][cs1]. 69Readable code is the first step on having good and safe libraries. 70 71To avoid slight differences appearing in nightly versions, please 72use the following command to run rustfmt: `cargo +stable fmt` 73[cs1]: https://github.com/rust-lang-nursery/rustfmt 74 75