roc/CONTRIBUTING.md
2022-05-18 08:19:21 -04:00

2.7 KiB

Contributing

Code of Conduct

We are committed to providing a friendly, safe and welcoming environment for all. Make sure to take a look at the Code of Conduct!

Building from Source

Check Build from source for instructions.

Running Tests

Most contributors execute the following commands befor pushing their code:

cargo test
cargo fmt --all -- --check
cargo clippy --workspace --tests -- --deny warnings

Execute cargo fmt --all to fix the formatting.

If you want to run all tests and checks as they are run on CI, install earthly and run:

earthly +test-all

Earthly may temporarily use a lot of disk space, up to 90 GB. This disk space is available again after rebooting.

Contribution Tips

  • Create an issue if the purpose of a struct/field/type/function/... is not immediately clear from its name or nearby comments.
  • You find good first issues here.
  • Before making your first pull request, definitely talk to an existing contributor on Roc Zulip first about what you plan to do! This can not only avoid duplicated effort, it can also avoid making a whole PR only to discover it won't be accepted because the change doesn't fit with the goals of the language's design or implementation.
  • It's a good idea to open a work-in-progress pull request as you begin working on something. This way, others can see that you're working on it, which avoids duplicate effort, and others can give feedback sooner rather than later if they notice a problem in the direction things are going. Be sure to include "WIP" in the title of the PR as long as it's not ready for review!
  • Make sure to create a branch on the roc repository for your changes. We do not allow CI to be run on forks for security.
  • All your commits need to be signed to prevent impersonation:
    1. If you have a Yubikey, follow guide 1, guide 2 and skip the steps below.
    2. Make a key to sign your commits..
    3. Configure git to use your key.
    4. Make git sign your commits automatically:
    git config --global commit.gpgsign true
    

Can we do better?

Feel free to open an issue if you think this document can be improved or is unclear in any way.