Skip to content

Commit 901f3e5

Browse files
committed
Add a document with contribution guidelines
This gives us a place to point new contributors, as well as to document our project practices.
1 parent 3364f11 commit 901f3e5

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

CONTRIBUTING.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# Contributing to nix
2+
3+
We're really glad you're interested in contributing to nix! This
4+
document has a few pointers and guidelines to help get you started.
5+
6+
To have a welcoming and inclusive project, nix uses the Rust project's
7+
[Code of Conduct][conduct]. All contributors are expected to follow it.
8+
9+
[conduct]: https://www.rust-lang.org/conduct.html
10+
11+
12+
# Issues
13+
14+
We use GitHub's [issue tracker][issues].
15+
16+
[issues]: https://github.com/nix-rust/nix/issues
17+
18+
19+
## Bug reports
20+
21+
Before submitting a new bug report, please [search existing
22+
issues][issue-search] to see if there's something related. If not, just
23+
[open a new issue][new-issue]!
24+
25+
As a reminder, the more information you can give in your issue, the
26+
easier it is to figure out how to fix it. For nix, this will likely
27+
include the OS and version, and the architecture.
28+
29+
[issue-search]: https://github.com/nix-rust/nix/search?utf8=%E2%9C%93&q=is%3Aissue&type=Issues
30+
[new-issue]: https://github.com/nix-rust/nix/issues/new
31+
32+
33+
## Feature / API requests
34+
35+
If you'd like a new API or feature added, please [open a new
36+
issue][new-issue] requesting it. As with reporting a bug, the more
37+
information you can provide, the better.
38+
39+
40+
## Labels
41+
42+
We use labels to help manage issues. The structure is modeled after
43+
[Rust's issue labeling scheme][rust-labels]:
44+
- **A-**prefixed labels state which area of the project the issue
45+
relates to
46+
- **O-**prefixed labels specify the OS for issues that are OS-specific
47+
48+
[rust-labels]: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#issue-triage
49+
50+
51+
# Pull requests
52+
53+
GitHub pull requests are the primary mechanism we use to change nix. GitHub itself has
54+
some [great documentation][pr-docs] on using the Pull Request feature. We use the 'fork and
55+
pull' model described there.
56+
57+
Please make pull requests against the `master` branch.
58+
59+
[pr-docs]: https://help.github.com/articles/using-pull-requests/
60+
61+
62+
## Testing
63+
64+
nix has a test suite that you can run with `cargo test`. Ideally, we'd like pull
65+
requests to include tests where they make sense. For example, when fixing a bug,
66+
add a test that would have failed without the fix.
67+
68+
After you've made your change, make sure the tests pass in your development
69+
environment. We also have [continuous integration set up on
70+
Travis-CI][travis-ci], which might find some issues on other platforms. The CI
71+
will run once you open a pull request.
72+
73+
[travis-ci]: https://travis-ci.org/nix-rust/nix
74+
75+
76+
## Homu, the bot who merges all the PRs
77+
78+
All pull requests are merged via [homu], an integration bot. After the
79+
pull request has been reviewed, the reviewer will leave a comment like
80+
81+
> @homu r+
82+
83+
to let @homu know that it was approved. Then @homu will check that it passes
84+
tests when merged with the latest changes in the `master` branch, and merge if
85+
the tests succeed. You can check out the [nix queue on homu][queue] to see the
86+
status of PRs and their tests.
87+
88+
[homu]: http://homu.io/
89+
[queue]: http://homu.io/q/nix-rust/nix
90+
91+
92+
## API conventions
93+
94+
If you're adding a new API, we have a [document with
95+
conventions][conventions] to use throughout the nix project.
96+
97+
[conventions]: https://github.com/nix-rust/nix/blob/master/CONVENTIONS.md

0 commit comments

Comments
 (0)