fast-react/CONTRIBUTING.md

140 строки
6.9 KiB
Markdown

# Contributing to FAST-DNA
## Getting started
### Installing
Once the repo has been cloned, install Lerna:
```bash
yarn global add lerna
```
Install all package dependencies and build all workspaces (local dependencies):
```bash
yarn
```
### Maintaining
Build all workspaces (local dependencies):
```bash
lerna run prepare
```
Learn more about [installing](https://www.fast.design/docs/en/contributing/install).
### Testing
Run all tests for all packages:
```bash
lerna run test
```
Learn more about [testing](https://www.fast.design/docs/en/contributing/testing).
### Submitting a pull request
Before submitting a pull request, [rebase](https://www.atlassian.com/git/tutorials/merging-vs-rebasing) your branch from master. Do not use ``git merge`` or the *merge* button provided by Github.
Learn more about [submitting pull requests](https://www.fast.design/docs/en/contributing/working).
### Documenting breaking changes
Make sure to document the migration strategy in a `MIGRATION.md` file in the package(s) that has breaking changes, eg. `packages/fast-components-styles-msft/MIGRATION.md`.
Example of how to format `MIGRATION.md`:
```md
# Migrating from previous versions
## v1 to v2
- Export `Foo` has been renamed to `Bar`.
- `Bat` has been updated to use the new API [`BatConfig`](link/to/api).
```
---
## Contribution policy
A “Contribution” is work voluntarily submitted to a project. This submitted work can include code, documentation, design, answering questions, or submitting and triaging issues.
Many contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to grant and do grant the rights to use your contribution. For details, visit [https://cla.microsoft.com](https://cla.microsoft.com).
When you submit a pull request, a CLA-bot automatically determines if you need to provide a CLA and decorates the pull request appropriately (e.g., label, comment). Follow the instructions provided by the bot. You only need to do this once across all repositories using our CLA.
## Guiding principle
Owners, the steering committee, collaborators, code owners, and contributors work in concert with one another on behalf of the FAST-DNA community and prioritize the communities interests over their own.
The development, release, and work management processes must reflect this principle. Accepting contributions to the project requires a review by collaborators.
## Governance
### Owners
*Owners* have admin access and are responsible for the management, maintenance, and operations of the FAST-DNA repository.
### Steering committee
*Steering committee* members are key *collaborators* who have demonstrated design or technical expertise critical to the driving the FAST-DNA project and community forward.
### Collaborators
*Collaborators* have write access and have an active and sustained impact on the project and participate in triaging issues, reviewing code, mentoring, and working to improve the architectural quality.
### Code owners
As subject matter experts, *code owners* approve pull requests on the packages they own. There is a required minimum of one code owner for each package. *Code owners* are listed in [CODEOWNERS](.github/CODEOWNERS).
### Contributors
*Contributors* have read access and can be anyone who has contributed a completed pull request to the project.
### Nominations & appointments
* To become a *contributor*, a community member must have a pull request approved and merged into the FAST-DNA project master branch.
* To become a *collaborator*, a *contributor* will petition the *steering committee* who will approve or deny the request.
* To become a *code owner*, a *collaborator* will be (a) nominated by a *steering committee* member or (b) petition the *steering committee* who will approve or deny the request.
* To join the *steering committee*, a *collaborator* will be nominated by a *steering committee* member and the *steering committee* who will approve or deny the request.
## Acceptance and consensus seeking process
Acceptance of contributions follows the consensus-seeking process.
All pull requests must be approved by a *collaborator* before the pull request can be accepted.
Before a pull request is accepted, time should be given to receive input from *collaborators* or *code owners* with the expertise to evaluate the changes. The amount of time can vary but at least 3 days during the typical working week and 5 days over weekends should be given to account for international time differences and work schedules.
When a pull request : (a) has a significant impact on the project, (b) is inherently controversial, or (c) has not reached consensus with *collaborators*; add a "controversial" label to the pull request for the *steering committee* to review the pull request. Pull requests labeled with "controversial" are not approved until the *steering committee* reviews the issue and makes a decision.
Additionally, *owners*, can temporarily enable [interaction limits](https://help.github.com/articles/limiting-interactions-with-your-repository/) to allow a "cool-down" period when hot topics become disruptive.
Specific *collaborators* or *code owners* can be added to a pull request by including their user alias.
## Stability policy
An essential consideration in every pull request is its impact on the system. To manage impacts, we work collectively to ensure that we do not introduce unnecessary breaking changes, performance or functional regressions, or negative impacts on usability for users or supported partners.
## Developer's Certificate of Origin 1.1
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 open source license indicated in the file; 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 same open source license (unless I am permitted to submit under a different license), as indicated in the file; 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, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.
## Resources
Several open source projects have influenced our contribution policy:
* [Project Governance @Node](https://nodejs.org/en/about/governance/)
* [Contributions @Node](https://github.com/nodejs/node/blob/master/CONTRIBUTING.md)
* [Open Source @Github](https://github.com/blog/2039-adopting-the-open-code-of-conduct)
* [Open Source exmaples @todogroup](https://github.com/todogroup/policies)