Browse Source

Merge the CONTRIBUTING.md files

pull/1019/head
Alex Crichton 5 years ago
parent
commit
986f9f79e1
  1. 13
      CONTRIBUTING.md
  2. 151
      cranelift/CONTRIBUTING.md
  3. 2
      docs/SUMMARY.md
  4. 33
      docs/contributing-coding-guidelines.md
  5. 66
      docs/contributing-development-process.md
  6. 55
      docs/contributing.md

13
CONTRIBUTING.md

@ -1,13 +1,12 @@
# Contributing to Wasmtime
# Contributing to Wasmtime and/or Cranelift
Wasmtime is a [Bytecode Alliance] project, and follows the Bytecode Alliance's [Code of Conduct] and [Organizational Code of Conduct].
Wasmtime and Cranelift are [Bytecode Alliance] projects. They follow the
Bytecode Alliance's [Code of Conduct] and [Organizational Code of Conduct].
Wasmtime follows the same development style as Cranelift, so check out
[Cranelift's CONTRIBUTING.md]. Of course, for Wasmtime-specific issues, please
use the [Wasmtime issue tracker].
For more information about contributing to these projects you can consult the
[online documentation] which should cover all sorts of topics.
[Bytecode Alliance]: https://bytecodealliance.org/
[Code of Conduct]: CODE_OF_CONDUCT.md
[Organizational Code of Conduct]: ORG_CODE_OF_CONDUCT.md
[Cranelift's CONTRIBUTING.md]: https://github.com/bytecodealliance/cranelift/blob/master/CONTRIBUTING.md
[Wasmtime issue tracker]: https://github.com/bytecodealliance/wasmtime/issues/new
[online documentation]: https://bytecodealliance.github.io/wasmtime/contributing.html

151
cranelift/CONTRIBUTING.md

@ -1,151 +0,0 @@
# Contributing to Cranelift
## Welcome!
Cranelift is a very ambitious project with many goals, and while we're
confident we can achieve some of them, we see many opportunities for people
to get involved and help us achieve even more.
### Ask questions! Give feedback!
This is a relatively young project, and not everything we hope to do with it
is reflected in the code or documentation yet. If you see things that seem
missing or that don't make sense, or even that just don't work the way you
expect them to, we're interested to hear about it!
We have a [stream] in the Bytecode Alliance Zulip instance, and questions are
also welcome as issues in the [Cranelift issue tracker].
[stream]: https://bytecodealliance.zulipchat.com/#narrow/stream/217117-cranelift/topic/general
[Cranelift issue tracker]: https://github.com/bytecodealliance/cranelift/issues/new
### Mentoring
We're happy to mentor people, whether you're learning Rust, learning about
compiler backends, learning about machine code, learning about how Cranelift
does things, or all together at once.
We categorize issues in the issue tracker using a tag scheme inspired by
[Rust's issue tags]. For example, the [E-easy] marks good beginner issues,
and [E-rust] marks issues which likely require some familiarity with Rust,
though not necessarily Cranelift-specific or even compiler-specific
experience. [E-compiler-easy] marks issues good for beginners who have
some familiarity with compilers, or are interested in gaining some :-).
See also the [full list of labels].
Also, we encourage people to just look around and find things they're
interested in. This a good time to get involved, as there aren't a lot of
things set in stone yet.
[Rust's issue tags]: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#issue-triage
[E-easy]: https://github.com/bytecodealliance/cranelift/labels/E-easy
[E-rust]: https://github.com/bytecodealliance/cranelift/labels/E-rust
[E-compiler-easy]: https://github.com/bytecodealliance/cranelift/labels/E-compiler-easy
[full list of labels]: https://github.com/bytecodealliance/cranelift/labels
### Code of Conduct
Cranelift is a [Bytecode Alliance] project, and follows the Bytecode Alliance's [Code of Conduct] and [Organizational Code of Conduct].
[Bytecode Alliance]: https://bytecodealliance.org/
[Code of Conduct]: CODE_OF_CONDUCT.md
[Organizational Code of Conduct]: ORG_CODE_OF_CONDUCT.md
## Coding Guidelines
For the most part, Cranelift follows common Rust conventions and
[pull request] (PR) workflows, though we do have a few additional things to
be aware of.
[pull request]: https://help.github.com/articles/about-pull-requests/
### rustfmt
All PRs must be formatted according to rustfmt, and this is checked in the
continuous integration tests. We use the current stable [rustfmt-preview]
version. See the [rustfmt quickstart] for setup.
[format-all.sh] is a script for running the appropriate version of rustfmt,
which may be convenient when there are multiple versions installed.
[rustfmt-preview]: https://github.com/rust-lang/rustfmt
[rustfmt quickstart]: https://github.com/rust-lang/rustfmt#quick-start
[format-all.sh]: https://github.com/bytecodealliance/cranelift/blob/master/format-all.sh
### Rustc version support
Cranelift supports stable Rust, and follows the
[Rust Update Policy for Firefox].
Some of the developer scripts depend on nightly Rust, for example to run
clippy and other tools, however we avoid depending on these for the main
build.
[Rust Update Policy for Firefox]: https://wiki.mozilla.org/Rust_Update_Policy_for_Firefox#Schedule
## Development Process
We use [issues] for asking questions and tracking bugs and unimplemented
features, and [pull requests] (PRs) for tracking and reviewing code
submissions.
### Before submitting a PR
Consider opening an issue to talk about it. PRs without corresponding issues
are appropriate for fairly narrow technical matters, not for fixes to
user-facing bugs or for feature implementations, especially when those features
might have multiple implementation strategies that usefully could be discussed.
Our issue templates might help you through the process.
### When submitting PRs
- Please fill in the pull request template as appropriate. It is usually
helpful, it speeds up the review process and helps understanding the changes
brought by the PR.
- Write clear commit messages that start with a one-line summary of the
change (and if it's difficult to summarize in one line, consider
splitting the change into multiple PRs), optionally followed by
additional context. Good things to mention include which areas of the
code are affected, which features are affected, and anything that
reviewers might want to pay special attention to.
- If there is code which needs explanation, prefer to put the explanation in
a comment in the code, or in documentation, rather than in the commit
message.
- For pull requests that fix existing issues, use [issue keywords]. Note that
not all pull requests need to have accompanying issues.
- Assign the review to somebody from the [Core Team], either using suggestions
in the list proposed by Github, or somebody else if you have a specific
person in mind.
- When updating your pull request, please make sure to re-request review if
the request has been cancelled.
### Focused commits or squashing
We generally squash sequences of incremental-development commits together into
logical commits (though keeping logical commits focused). Developers may do
this themselves before submitting a PR or during the PR process, or Core Team
members may do it when merging a PR. Ideally, the continuous-integration tests
should pass at each logical commit.
### Review and merge
Anyone may submit a pull request, and anyone may comment on or review others'
pull requests. However, one review from somebody in the [Core Team] is required
before the Core Team merges it.
Even Core Team members should create PRs for every change, including minor work
items (version bump, removing warnings, etc.): this is helpful to keep track of
what has happened on the repository. Very minor changes may be merged without a
review, although it is always preferred to have one.
[issues]: https://guides.github.com/features/issues/
[pull requests]: https://help.github.com/articles/about-pull-requests/
[issue keywords]: https://help.github.com/articles/closing-issues-using-keywords/
[Core Team]: https://github.com/orgs/bytecodealliance/people/

2
docs/SUMMARY.md

@ -34,6 +34,8 @@
- [Testing](./contributing-testing.md)
- [Fuzzing](./contributing-fuzzing.md)
- [CI](./contributing-ci.md)
- [Coding guidelines](./contributing-coding-guidelines.md)
- [Development process](./contributing-development-process.md)
- [Release Process](./contributing-release-process.md)
- [Governance](./contributing-governance.md)
- [Code of Conduct](./contributing-coc.md)

33
docs/contributing-coding-guidelines.md

@ -0,0 +1,33 @@
# Coding guidelines
For the most part, Wasmtime and Cranelift follow common Rust conventions and
[pull request] (PR) workflows, though we do have a few additional things to
be aware of.
[pull request]: https://help.github.com/articles/about-pull-requests/
### rustfmt
All PRs must be formatted according to rustfmt, and this is checked in the
continuous integration tests. You can format code locally with:
```sh
$ cargo fmt
```
at the root of the repository. You can find [more information about rustfmt
online](https://github.com/rust-lang/rustfmt) too, such as how to configure
your editor.
### Rustc version support
Wasmtime supports the current stable version of Rust.
Cranelift supports stable Rust, and follows the [Rust Update Policy for
Firefox].
Some of the developer scripts depend on nightly Rust, for example to run
clippy and other tools, however we avoid depending on these for the main
build.
[Rust Update Policy for Firefox]: https://wiki.mozilla.org/Rust_Update_Policy_for_Firefox#Schedule

66
docs/contributing-development-process.md

@ -0,0 +1,66 @@
# Development Process
We use [issues] for asking questions ([open one here][newissue]!) and tracking
bugs and unimplemented features, and [pull requests] (PRs) for tracking and
reviewing code submissions.
### Before submitting a PR
Consider opening an issue to talk about it. PRs without corresponding issues
are appropriate for fairly narrow technical matters, not for fixes to
user-facing bugs or for feature implementations, especially when those features
might have multiple implementation strategies that usefully could be discussed.
Our issue templates might help you through the process.
### When submitting PRs
- Please fill in the pull request template as appropriate. It is usually
helpful, it speeds up the review process and helps understanding the changes
brought by the PR.
- Write clear commit messages that start with a one-line summary of the
change (and if it's difficult to summarize in one line, consider
splitting the change into multiple PRs), optionally followed by
additional context. Good things to mention include which areas of the
code are affected, which features are affected, and anything that
reviewers might want to pay special attention to.
- If there is code which needs explanation, prefer to put the explanation in
a comment in the code, or in documentation, rather than in the commit
message.
- For pull requests that fix existing issues, use [issue keywords]. Note that
not all pull requests need to have accompanying issues.
- Assign the review to somebody from the [Core Team], either using suggestions
in the list proposed by Github, or somebody else if you have a specific
person in mind.
- When updating your pull request, please make sure to re-request review if
the request has been cancelled.
### Focused commits or squashing
We generally squash sequences of incremental-development commits together into
logical commits (though keeping logical commits focused). Developers may do
this themselves before submitting a PR or during the PR process, or Core Team
members may do it when merging a PR. Ideally, the continuous-integration tests
should pass at each logical commit.
### Review and merge
Anyone may submit a pull request, and anyone may comment on or review others'
pull requests. However, one review from somebody in the [Core Team] is required
before the Core Team merges it.
Even Core Team members should create PRs for every change, including minor work
items (version bump, removing warnings, etc.): this is helpful to keep track of
what has happened on the repository. Very minor changes may be merged without a
review, although it is always preferred to have one.
[issues]: https://guides.github.com/features/issues/
[pull requests]: https://help.github.com/articles/about-pull-requests/
[issue keywords]: https://help.github.com/articles/closing-issues-using-keywords/
[Core Team]: https://github.com/orgs/bytecodealliance/people/
[newissue]: https://github.com/bytecodealliance/wasmtime/issues/new

55
docs/contributing.md

@ -1,17 +1,31 @@
# Contributing
We're excited to work on Wasmtime together with you! This guide should help you
get up and running with Wasmtime development. But first, make sure you've read
the [Code of Conduct](./contributing-coc.html)!
We're excited to work on Wasmtime and/or Cranelift together with you! This guide
should help you get up and running with Wasmtime and Cranelift development. But
first, make sure you've read the [Code of Conduct](./contributing-coc.html)!
Wasmtime and Cranelift are very ambitious projects with many goals, and while
we're confident we can achieve some of them, we see many opportunities for
people to get involved and help us achieve even more.
## Join Our Chat
We chat about Wasmtime development on Zulip — [join
us!](https://bytecodealliance.zulipchat.com/#narrow/stream/217126-wasmtime)
We chat about Wasmtime and Cranelift development on Zulip — [join
us!](https://bytecodealliance.zulipchat.com/). You can also join specific
streams:
* [#wasmtime](https://bytecodealliance.zulipchat.com/#narrow/stream/217126-wasmtime)
* [#cranelift](https://bytecodealliance.zulipchat.com/#narrow/stream/217117-cranelift)
If you're having trouble building Wasmtime or Cranelift, aren't sure why a test
is failing, or have any other questions, feel free to ask on Zulip. Not
everything we hope to do with these projects is reflected in the code or
documentation yet, so if you see things that seem missing or that don't make
sense, or even that just don't work the way you expect them to, we're also
interested to hear about that!
If you're having trouble building Wasmtime, aren't sure why a test is failing,
or have any other questions, feel free to ask here. You can also [open an
issue](https://github.com/bytecodealliance/wasmtime/issues/new)!
As always, you're more than welcome to [open an
issue](https://github.com/bytecodealliance/wasmtime/issues/new) too!
## Finding Something to Hack On
@ -29,3 +43,28 @@ If you're looking for something to do, these are great places to start:
If you're unsure if an issue is a good fit for you or not, feel free to ask in a
comment on the issue, or in chat.
### Mentoring
We're happy to mentor people, whether you're learning Rust, learning about
compiler backends, learning about machine code, learning about wasm, learning
about how Cranelift does things, or all together at once.
We categorize issues in the issue tracker using a tag scheme inspired by
[Rust's issue tags]. For example, the [E-easy] marks good beginner issues,
and [E-rust] marks issues which likely require some familiarity with Rust,
though not necessarily Cranelift-specific or even compiler-specific
experience. [E-compiler-easy] marks issues good for beginners who have
some familiarity with compilers, or are interested in gaining some :-).
See also the [full list of labels].
Also, we encourage people to just look around and find things they're
interested in. This a good time to get involved, as there aren't a lot of
things set in stone yet.
[Rust's issue tags]: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#issue-triage
[E-easy]: https://github.com/bytecodealliance/cranelift/labels/E-easy
[E-rust]: https://github.com/bytecodealliance/cranelift/labels/E-rust
[E-compiler-easy]: https://github.com/bytecodealliance/cranelift/labels/E-compiler-easy
[full list of labels]: https://github.com/bytecodealliance/cranelift/labels

Loading…
Cancel
Save