| # Contributing to nix |
| |
| We're really glad you're interested in contributing to nix! This |
| document has a few pointers and guidelines to help get you started. |
| |
| To have a welcoming and inclusive project, nix uses the Rust project's |
| [Code of Conduct][conduct]. All contributors are expected to follow it. |
| |
| [conduct]: https://www.rust-lang.org/conduct.html |
| |
| |
| # Issues |
| |
| We use GitHub's [issue tracker][issues]. |
| |
| [issues]: https://github.com/nix-rust/nix/issues |
| |
| |
| ## Bug reports |
| |
| Before submitting a new bug report, please [search existing |
| issues][issue-search] to see if there's something related. If not, just |
| [open a new issue][new-issue]! |
| |
| As a reminder, the more information you can give in your issue, the |
| easier it is to figure out how to fix it. For nix, this will likely |
| include the OS and version, and the architecture. |
| |
| [issue-search]: https://github.com/nix-rust/nix/search?utf8=%E2%9C%93&q=is%3Aissue&type=Issues |
| [new-issue]: https://github.com/nix-rust/nix/issues/new |
| |
| |
| ## Feature / API requests |
| |
| If you'd like a new API or feature added, please [open a new |
| issue][new-issue] requesting it. As with reporting a bug, the more |
| information you can provide, the better. |
| |
| |
| ## Labels |
| |
| We use labels to help manage issues. The structure is modeled after |
| [Rust's issue labeling scheme][rust-labels]: |
| - **A-**prefixed labels state which area of the project the issue |
| relates to |
| - **E-**prefixed labels explain the level of experience necessary to fix the |
| issue |
| - **O-**prefixed labels specify the OS for issues that are OS-specific |
| - **R-**prefixed labels specify the architecture for issues that are |
| architecture-specific |
| |
| [rust-labels]: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#issue-triage |
| |
| |
| # Pull requests |
| |
| GitHub pull requests are the primary mechanism we use to change nix. GitHub itself has |
| some [great documentation][pr-docs] on using the Pull Request feature. We use the 'fork and |
| pull' model described there. |
| |
| Please make pull requests against the `master` branch. |
| |
| If you change the API by way of adding, removing or changing something or if |
| you fix a bug, please add an appropriate note to the [change log][cl]. We |
| follow the conventions of [Keep A CHANGELOG][kacl]. |
| |
| [cl]: https://github.com/nix-rust/nix/blob/master/CHANGELOG.md |
| [kacl]: https://github.com/olivierlacan/keep-a-changelog/tree/18adb5f5be7a898d046f6a4acb93e39dcf40c4ad |
| [pr-docs]: https://help.github.com/articles/using-pull-requests/ |
| |
| ## Testing |
| |
| nix has a test suite that you can run with `cargo test`. Ideally, we'd like pull |
| requests to include tests where they make sense. For example, when fixing a bug, |
| add a test that would have failed without the fix. |
| |
| After you've made your change, make sure the tests pass in your development |
| environment. We also have [continuous integration set up on |
| Cirrus-CI][cirrus-ci], which might find some issues on other platforms. The CI |
| will run once you open a pull request. |
| |
| There is also infrastructure for running tests for other targets |
| locally. More information is available in the [CI Readme][ci-readme]. |
| |
| [cirrus-ci]: https://cirrus-ci.com/github/nix-rust/nix |
| [ci-readme]: ci/README.md |
| |
| ### Disabling a test in the CI environment |
| |
| Sometimes there are features that cannot be tested in the CI environment. |
| To stop a test from running under CI, add `skip_if_cirrus!()` to it. Please |
| describe the reason it shouldn't run under CI, and a link to an issue if |
| possible! |
| |
| ## bors, the bot who merges all the PRs |
| |
| All pull requests are merged via [bors], an integration bot. After the |
| pull request has been reviewed, the reviewer will leave a comment like |
| |
| > bors r+ |
| |
| to let bors know that it was approved. Then bors will check that it passes |
| tests when merged with the latest changes in the `master` branch, and |
| merge if the tests succeed. |
| |
| [bors]: https://bors-ng.github.io/ |
| |
| |
| ## API conventions |
| |
| If you're adding a new API, we have a [document with |
| conventions][conventions] to use throughout the nix project. |
| |
| [conventions]: https://github.com/nix-rust/nix/blob/master/CONVENTIONS.md |