|
1 |
| -# How to contribute |
| 1 | +# Symphony BDK for Python Contribution and Governance Policies |
2 | 2 |
|
3 |
| -If you found a bug or issue, please ensure the bug was not already reported by searching in |
4 |
| -[GitHub issues](https://github.com/SymphonyPlatformSolutions/symphony-api-client-python/issues). |
5 |
| -If you are unable to find an open issue addressing the problem, open a new one. |
6 |
| -Be sure to include a title and clear description, the SDK version, and a code sample demonstrating the issue. |
| 3 | +This document describes the contribution process and governance policies of the FINOS {project name} project. The project is also governed by the [Linux Foundation Antitrust Policy](https://www.linuxfoundation.org/antitrust-policy/), and the FINOS [IP Policy](https://github.com/finos/community/blob/master/governance/IP-Policy.pdf), [Code of Conduct](https://github.com/finos/community/blob/master/governance/Code-of-Conduct.md), [Collaborative Principles](https://github.com/finos/community/blob/master/governance/Collaborative-Principles.md), and [Meeting Procedures](https://github.com/finos/community/blob/master/governance/Meeting-Procedures.md). |
7 | 4 |
|
8 |
| -If you open a PR to fix any issue, please reference the ticket in the PR title. |
9 |
| -A [Symphony SDK team](https://github.com/orgs/SymphonyPlatformSolutions/teams/symphony-sdk/members) member |
10 |
| -will have to approve before it is merged and eventually released. |
| 5 | +## Contribution Process |
11 | 6 |
|
12 |
| -## Module and package structure |
| 7 | +Before making a contribution, please take the following steps: |
| 8 | +1. Check whether there's already an open issue related to your proposed contribution. If there is, join the discussion and propose your contribution there. |
| 9 | +2. If there isn't already a relevant issue, create one, describing your contribution and the problem you're trying to solve. |
| 10 | +3. Respond to any questions or suggestions raised in the issue by other developers. |
| 11 | +4. Fork the project repository and prepare your proposed contribution. |
| 12 | +5. Submit a pull request. |
13 | 13 |
|
14 |
| -Source code is divided into three main packages: |
15 |
| -* [sym_api_client_python](sym_api_client_python) which contains the SDK source code; |
16 |
| -* [tests](tests) which contains unit tests; |
17 |
| -* [examples](examples) which contains code samples illustrating SDK basic usage. |
| 14 | +NOTE: All contributors must have a contributor license agreement (CLA) on file with FINOS before their pull requests will be merged. Please review the FINOS [contribution requirements](https://finosfoundation.atlassian.net/wiki/spaces/FINOS/pages/75530375/Contribution+Compliance+Requirements) and submit (or have your employer submit) the required CLA before submitting a pull request. |
18 | 15 |
|
19 |
| -## Testing |
| 16 | +## Governance |
20 | 17 |
|
21 |
| -Unit tests should be added or updated each time a PR is submitted. |
| 18 | +### Roles |
22 | 19 |
|
23 |
| -## Coding guidelines |
| 20 | +The project community consists of Contributors and Maintainers: |
| 21 | +* A **Contributor** is anyone who submits a contribution to the project. (Contributions may include code, issues, comments, documentation, media, or any combination of the above.) |
| 22 | +* A **Maintainer** is a Contributor who, by virtue of their contribution history, has been given write access to project repositories and may merge approved contributions. |
| 23 | +* The **Lead Maintainer** is the project's interface with the FINOS team and Board. They are responsible for approving [quarterly project reports](https://finosfoundation.atlassian.net/wiki/spaces/FINOS/pages/93225748/Board+Reporting+and+Program+Health+Checks) and communicating on behalf of the project. The Lead Maintainer is elected by a vote of the Maintainers. |
24 | 24 |
|
25 |
| -The guidelines outlined in [PEP 8](https://www.python.org/dev/peps/pep-0008/) should be followed on any code update. |
| 25 | +### Contribution Rules |
26 | 26 |
|
27 |
| -## Documentation |
| 27 | +Anyone is welcome to submit a contribution to the project. The rules below apply to all contributions. (The key words "MUST", "SHALL", "SHOULD", "MAY", etc. in this document are to be interpreted as described in [IETF RFC 2119](https://www.ietf.org/rfc/rfc2119.txt).) |
28 | 28 |
|
29 |
| -Public classes and methods should be properly documented using javadoc. Main features should be documented using |
30 |
| -[Markdown](https://daringfireball.net/projects/markdown/) under the [docs folder](docs) |
31 |
| -and exemplified with runnable code under the [examples package](examples). |
| 29 | +* All contributions MUST be submitted as pull requests, including contributions by Maintainers. |
| 30 | +* All pull requests SHOULD be reviewed by a Maintainer (other than the Contributor) before being merged. |
| 31 | +* Pull requests for non-trivial contributions SHOULD remain open for a review period sufficient to give all Maintainers a sufficient opportunity to review and comment on them. |
| 32 | +* After the review period, if no Maintainer has an objection to the pull request, any Maintainer MAY merge it. |
| 33 | +* If any Maintainer objects to a pull request, the Maintainers SHOULD try to come to consensus through discussion. If not consensus can be reached, any Maintainer MAY call for a vote on the contribution. |
| 34 | + |
| 35 | +### Maintainer Voting |
| 36 | + |
| 37 | +The Maintainers MAY hold votes only when they are unable to reach consensus on an issue. Any Maintainer MAY call a vote on a contested issue, after which Maintainers SHALL have 36 hours to register their votes. Votes SHALL take the form of "+1" (agree), "-1" (disagree), "+0" (abstain). Issues SHALL be decided by the majority of votes cast. If there is only one Maintainer, they SHALL decide any issue otherwise requiring a Maintainer vote. If a vote is tied, the Lead Maintainer MAY cast an additional tie-breaker vote. |
| 38 | + |
| 39 | +The Maintainers SHALL decide the following matters by consensus or, if necessary, a vote: |
| 40 | +* Contested pull requests |
| 41 | +* Election and removal of the Lead Maintainer |
| 42 | +* Election and removal of Maintainers |
| 43 | + |
| 44 | +All Maintainer votes MUST be carried out transparently, with all discussion and voting occurring in public, either: |
| 45 | +* in comments associated with the relevant issue or pull request, if applicable; |
| 46 | +* on the project mailing list or other official public communication channel; or |
| 47 | +* during a regular, minuted project meeting. |
| 48 | + |
| 49 | +### Maintainer Qualifications |
| 50 | + |
| 51 | +Any Contributor who has made a substantial contribution to the project MAY apply (or be nominated) to become a Maintainer. The existing Maintainers SHALL decide whether to approve the nomination according to the Maintainer Voting process above. |
| 52 | + |
| 53 | +### Changes to this Document |
| 54 | + |
| 55 | +This document MAY be amended by a vote of the Maintainers according to the Maintainer Voting process above. |
0 commit comments