92 lines
3.0 KiB
Markdown
92 lines
3.0 KiB
Markdown
|
|
# How to contribute
|
||
|
|
|
||
|
|
I'm really glad you're reading this, because we need volunteer developers to
|
||
|
|
help this project continue to grow and improve.
|
||
|
|
|
||
|
|
1. file [bugs](../../issues/new?assignees=&labels=bug&template=bug_report.md) and [enhancement requests](../../issues/new?assignees=&labels=enhancement&template=feature_request.md)
|
||
|
|
2. review the project documentation know if you find are issues, or missing
|
||
|
|
content, there
|
||
|
|
3. Fix or Add something and send us a pull request; you may like to pick up one
|
||
|
|
of the issues marked [help wanted](../../labels/help%20wanted) or [good first issue](../../labels/good%20first%20issue) as an introduction.
|
||
|
|
Alternatively, [documentation](../../labels/documentation) issues can be a great way to understand the
|
||
|
|
project and help improve the developer experience.
|
||
|
|
|
||
|
|
## Submitting changes
|
||
|
|
|
||
|
|
|
||
|
|
We love pull requests from everyone. By participating in this project, you agree
|
||
|
|
to abide by our [code of conduct](./CODE_OF_CONDUCT.md), and [License](./LICENSE).
|
||
|
|
|
||
|
|
Fork, then clone the repo:
|
||
|
|
|
||
|
|
```
|
||
|
|
git clone git@github.com:johnstonskj/{{repository-name}}.git
|
||
|
|
```
|
||
|
|
|
||
|
|
Ensure you have a good Rust install, usually managed by [Rustup](https://rustup.rs/).
|
||
|
|
You can ensure the latest tools with the following:
|
||
|
|
|
||
|
|
```
|
||
|
|
rustup update
|
||
|
|
```
|
||
|
|
|
||
|
|
Make sure the tests pass:
|
||
|
|
|
||
|
|
```
|
||
|
|
cargo test --package {{package-name}} --no-fail-fast -- --exact
|
||
|
|
cargo test --package {{package-name}} --no-fail-fast --all-features -- --exact
|
||
|
|
cargo test --package {{package-name}} --no-fail-fast --no-default-features -- --exact
|
||
|
|
```
|
||
|
|
|
||
|
|
Make your change. Add tests, and documentation, for your change. For tests
|
||
|
|
please add a comment of the form:
|
||
|
|
|
||
|
|
```rust
|
||
|
|
#[test]
|
||
|
|
// Regression test: GitHub issue #11
|
||
|
|
// or
|
||
|
|
// Feature test: GitHub PR: #15
|
||
|
|
fn test_something() { }
|
||
|
|
```
|
||
|
|
|
||
|
|
Ensure not only that tests pass, but the following all run successfully.
|
||
|
|
|
||
|
|
```
|
||
|
|
cargo doc --all-features --no-deps
|
||
|
|
cargo fmt
|
||
|
|
cargo clippy
|
||
|
|
```
|
||
|
|
|
||
|
|
If you have made any changes to `Cargo.toml`, also check:
|
||
|
|
|
||
|
|
```
|
||
|
|
cargo outdated --depth 1
|
||
|
|
cargo audit
|
||
|
|
```
|
||
|
|
|
||
|
|
Push to your fork and [submit a pull request](../../compare/) using our [template](./pull_request_template.md).
|
||
|
|
|
||
|
|
At this point you're waiting on us. We like to at least comment on pull requests
|
||
|
|
within three business days (and, typically, one business day). We may suggest
|
||
|
|
some changes or improvements or alternatives.
|
||
|
|
|
||
|
|
Some things that will increase the chance that your pull request is accepted:
|
||
|
|
|
||
|
|
* Write unit tests.
|
||
|
|
* Write API documentation.
|
||
|
|
* Write a [good commit message](https://cbea.ms/git-commit/https://cbea.ms/git-commit/).
|
||
|
|
|
||
|
|
## Coding conventions
|
||
|
|
|
||
|
|
The primary tool for coding conventions is rustfmt, and specifically `cargo fmt`
|
||
|
|
is a part of the build process and will cause Actions to fail.
|
||
|
|
|
||
|
|
DO NOT create or update any existing `rustfmt.toml` file to change the default
|
||
|
|
formatting rules.
|
||
|
|
|
||
|
|
DO NOT alter any `warn` or `deny` library attributes.
|
||
|
|
|
||
|
|
DO NOT add any `feature` attributes that would prohibit building on the stable
|
||
|
|
channel. In some cases new crate-level features can be used to introduce an
|
||
|
|
unstable feature dependency but these MUST be clearly documented and optional.
|