diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..ffc5b1368 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,101 @@ +# Welcome to the `esp-hal` contributing guide + +Thank you for investing your time in contributing to our project! + +In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. + +Use the table of contents icon () in the top right corner of this document to get to a specific section of this guide quickly. + +## New Contributor Guide + +To get an overview of the project, please read the [README]. Here are some resources to help you get started with open source contributions: + +- [Finding ways to contribute to open source on GitHub] +- [Set up Git] +- [GitHub flow] +- [Collaborating with pull requests] + +[README]: README.md +[Finding ways to contribute to open source on GitHub]: https://docs.github.com/en/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github +[Set up Git]: https://docs.github.com/en/get-started/quickstart/set-up-git +[GitHub flow]: https://docs.github.com/en/get-started/quickstart/github-flow +[Collaborating with pull requests]: https://docs.github.com/en/github/collaborating-with-pull-requests + +## Getting Started + +### Issues + +#### Create a New Issue + +If you spot a problem with the docs, [search if an issue already exists]. If a related issue doesn't exist, you can open a new issue using the [issue form]. + +[search if an issue already exists]: https://docs.github.com/en/github/searching-for-information-on-github/searching-on-github/searching-issues-and-pull-requests#search-by-the-title-body-or-comments +[issue form]: https://github.com/esp-rs/esp-hal/issues/new/ + +#### Solve an Issue + +Scan through our [existing issues] to find one that interests you. You can narrow down the search using labels as filters. If you find an issue to work on, you are welcome to open a PR with a fix. + +It's recommended that you comment in the relevant issue, mentioning that you are actively working on it, however this is not a requirement. + +If somebody is already assigned to an issue, this does not necessarily mean they are actively working on it; don't be afraid to comment in these issues asking if you can take over the work if you're interested. + +[existing issues]: https://github.com/esp-rs/esp-hal/issues + +### Make Changes + +1. Fork the repository. + - Using GitHub Desktop: + - [Getting started with GitHub Desktop] will guide you through setting up Desktop. + - Once Desktop is set up, you can use it to [fork the repo!] + - Using the command line: + - [Fork the repo] so that you can make your changes without affecting the original project until you're ready to merge them. +2. Install or update to the latest version of Rust. See [rustup.rs] for more information. +3. Create a working branch and start with your changes! + +[Getting started with GitHub Desktop]: https://docs.github.com/en/desktop/installing-and-configuring-github-desktop/getting-started-with-github-desktop +[fork the repo!]: https://docs.github.com/en/desktop/contributing-and-collaborating-using-github-desktop/cloning-and-forking-repositories-from-github-desktop +[Fork the repo]: https://docs.github.com/en/github/getting-started-with-github/fork-a-repo#fork-an-example-repository +[rustup.rs]: https://rustup.rs/ + +### Commit Your Update + +Commit the changes once you are happy with them. Don't forget to self-review to speed up the review process. + +We ask that you ensure all source code files has been properly formatted with `rustfmt`, and that you have linted your changes by running `cargo clippy`. These tools can be installed by running the following commands: + +```shell +rustup component add rustfmt +rustup component add clippy +``` + +We _strongly_ recommend that you use the supplied `pre-commit` Git hook, which will ensure that all source code has been formatted correctly prior to committing. See the [Git documentation] for more information on hooks. + +The `pre-commit` hook can be installed by running the following command in a terminal, from the root of the repository: + +```shell +cp pre-commit .git/hooks/pre-commit +``` + +[Git documentation]: https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks + +### Pull Request + +When you're finished with the changes, create a pull request, also known as a PR. + +- Fill the pull request template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request. +- Don't forget to [link PR to issue] if you are solving one. +- Enable the checkbox to [allow maintainer edits] so the branch can be updated for a merge. Once you submit your PR, a Docs team member will review your proposal. We may ask questions or request additional information. +- We may ask for changes to be made before a PR can be merged, either using [suggested changes] or pull request comments. You can apply suggested changes directly through the UI. You can make any other changes in your fork, then commit them to your branch. +- As you update your PR and apply changes, mark each conversation as [resolved]. +- If you run into any merge issues, checkout this [git tutorial] to help you resolve merge conflicts and other issues. + +[link PR to issue]: https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue +[allow maintainer edits]: https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork +[suggested changes]: https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/incorporating-feedback-in-your-pull-request +[resolved]: https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations +[git tutorial]: https://github.com/skills/resolve-merge-conflicts + +### Your PR is Merged! + +Congratulations! The esp-rs team thanks you for your contributions! diff --git a/resources/table-of-contents.png b/resources/table-of-contents.png new file mode 100644 index 000000000..cb0cc7e8c Binary files /dev/null and b/resources/table-of-contents.png differ