Proposals for changes and enhancements to Arduino tooling projects are welcome and highly appreciated :smile_cat:!
This can be done via any of the following mechanisms:
In the case of a proposal for substantial changes, it may be beneficial to first document, discuss with stakeholders, and get formal approval before starting on the associated work. The "RFC" (request for comments) process is used for this purpose.
Every proposal should start with opening an issue on the impacted tooling project repository
Before starting to write an RFC, please open an issue on the related tool repo explaining your proposal. Maintainers will guide and help you to select the best mechanism to move forward with your idea. Starting with an issue is the simplest way to start the process and allow maintainers to track and triage your request!
RFCs can be helpful for proposals that:
The scope of the RFCs in this repository is limited to Arduino's tooling projects. Tooling is the software components related to the development and deployment of Arduino firmware.
Prominent examples include:
First of all, check the existing RFCs. There may already be one for your proposal, or related information to use as a reference.
0000-template.md
to RFCs/0000-my-proposal.md
(replacing "my-proposal" with the RFC title). Don't assign an RFC number yet; this is going to be set according to the ID number GitHub assigns the pull request when it's submitted.RFCs/assets/0000-my-proposal
folder, where "0000-my-proposal" is the proposal file name.#
.#42
, the RFC file should be renamed from RFCs/0000-my-proposal.md
to RFCs/0042-my-proposal.md
.
When the pull request is submitted, some automated checks will be done to make sure there are no problems. Once these checks are finished, you can see a summary of the results on the "Checks" tab of the pull request page. If any checks failed, please take a look at the associated logs and fix whatever caused it to fail.
Interested parties should now review and discuss the RFC. This is done using GitHub's pull request review system:
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews
In order to allow everyone the opportunity to comment, a minimum period of 14 days (starting from the submission of the pull request for review) is provided before merging or rejecting the RFC.
During this time, the RFC author and reviewers should work together to reach consensus and make necessary adjustments or improvements to the RFC. It's important for the RFC author to be responsive during the review period, so make sure to allocate some time for this during the review period before submitting the pull request.
The author can make revisions to the RFC in response to the reviews.
Note that any changes you make to the files in the branch of your fork the pull request was submitted from will automatically update the pull request so there is no need to open a new pull request for the modifications.
If in agreement with a change requested via GitHub's "Suggestions" feature, simply click the "Commit suggestion" button.
Once a review discussion has been resolved, click the "Resolve conversation" button to clearly indicate this to all involved parties. This is done automatically for committed "suggestions".
Although it is normally best practices, during the RFC review process the technique of doing a "squash" or "fixup" and force pushing to the PR branch to maintain an atomic commit history should be avoided. The reason is that this makes it a little more difficult for reviewers to follow the revisions that have been made. The maintainer will squash the commits as needed at the time of the merge.
The RFC may be accepted and the pull request merged if all the following conditions are met:
The RFC may be rejected and the pull request closed if all the following conditions are met:
If the RFC is approved, maintainers will take care of creating Github issues based on the RFC's proposed solution, in order to translate the approved design into coding activities and PRs. Here the fun begins!