Any contribution helps our team and makes pioarduino better for the entire community!
Everybody is welcome and invited to contribute to pioarduino Project by:
- Testing newly released features and reporting issues.
- Providing Pull Requests (Features, Proof of Concepts or Fixes)
- Contributing missing documentation for features in our (not yet existing ;-)) documentation
This document describes rules that are in effect for this repository, meant for handling issues by contributors in the issue tracker and PRs.
Issue tracker is NOT a general discussion forum!
- Opening an issue means that a problem exists in the code and should be addressed by the project contributors.
- When opening an issue, provide as much as possible infos. The information is important! With insufficient info about the provided issue, the issue may be closed.
- Questions of type "How do I..." or "Can you please help me with..." WILL NOT be handled here. Such questions should be directed to pioarduino Support Chat. All issues of this type will be closed with a simple reference to this contributing policy.
- Issues about topics already handled in the documentation will be closed in a similar manner.
- Issues for unmerged PRs will be closed. If there is an issue with a PR, the explanation should be added to the PR itself.
- Issues with accompanied investigation that shows the root of the problem should be given priority.
- Duplicate issues will be closed.
- Any contributor to the project can participate in the triaging process, if he/she/them chooses to do so.
- An issue that needs to be closed, either due to not complying with this policy, or for other reasons, should be closed by a contributor.
- Issues that are accepted should be marked with appropriate labels.
- Issues that could impact functionality for many users should be considered severe.
- Issues with feature requests should be discussed for viability/desirability.
- Feature requests or changes that are meant to address a very specific/limited use case, may be denied, or may be required to be redesigned, generalized, or simplified.
- Feature requests that are not accompanied by a PR:
- could be closed immediately (denied).
- could be closed after some predetermined period of time (left as candidate for somebody to pick up).
- In some cases, feedback may be requested from the issue reporter, either as additional info for clarification, additional testing, or other. If no feedback is provided, the issue may be closed by a contributor or after 30 days by the STALE bot.
A Pull Request (PR) is the process where code modifications are managed in GitHub.
The process is straight-forward.
- Read How to get faster PR reviews by Kubernetes (but skip step 0)
- Fork the pioarduino platform-espressif32 Repository git repository.
- Write/Change the code in your Fork for a new feature, bug fix, optimization, etc.
- Ensure tests work.
- Create a Pull Request against the develop branch of pioarduino.
- All pull requests must be done against the develop branch.
- Only relevant files should be touched (Also beware if your editor has auto-formatting feature enabled).
- Only one feature/fix should be added per PR. A PR for mass changes in boards manifest is allowed.
- PRs that don't compile (fail in CI Tests) or cause coding errors will not be merged. Please fix the issue. Same goes for PRs that are raised against older commit in develop - you might need to rebase and resolve conflicts.
- All pull requests should undergo peer review by at least one contributor other than the creator, excepts for the owner.
- All pull requests should consider updates to the documentation.
- Pull requests that address an outstanding issue, particularly an issue deemed to be severe, should be given priority.
- If a PR is accepted, then it should undergo review and updated based on the feedback provided, then merged.
- By submitting a PR, it is needed to use the provided PR template and check all boxes, performing the required tasks and accepting the CLA.
- Pull requests that don't meet the above will be denied and closed.
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the GPL-3.0 license; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the GPL-3.0 license; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it) is maintained indefinitely
and may be redistributed consistent with this project or the open
source license(s) involved.
This Contributor License Agreement (CLA) was adopted on April 1st, 2019.
The text of this license is available under the Creative Commons Attribution-ShareAlike 3.0 Unported License. It is based on the Linux Developer Certificate Of Origin, but is modified to explicitly use the GPL-3.0 license and not mention sign-off (due to GitHub.com keeps an historial, with your user name, of PRs' commits and all editions on PR's comments).
To accept the CLA it is required to put a x between [ ] on [ ] I accept the CLA
in the PR template when submitting it. The [ ] is an opt-in box, so you have to manually accept it.
Why a CLA ?
"A Contributor License Agreement (CLA) is strongly recommended when accepting third party contributions to an open development project, such as an open source software project. In order to redistribute contributions, it is necessary to ensure that the project has the necessary rights to do so. A Contributor License Agreement is a lightweight agreement, signed by the copyright holder, that grants the necessary rights for the contribution to be redistributed as part of the project." OSS Watch
A CLA is a legal document in which you state you are entitled to contribute the code/documentation/translation to the project you’re contributing to and that you are willing to have it used in distributions and derivative works. This means that should there be any kind of legal issue in the future as to the origins and ownership of any particular piece of code, then that project has the necessary forms on file from the contributor(s) saying they were permitted to make this contribution.
CLA is a safety because it also ensures that once you have provided a contribution, you cannot try to withdraw permission for its use at a later date. People can therefore use that software, confident that they will not be asked to stop using pieces of the code at a later date.
A license grants "outbound" rights to the user of project.
A CLA enables a contributor to grant "inbound" rights to a project.