|
| 1 | +# Contributing to the OpenFeature project |
| 2 | + |
| 3 | +## Development |
| 4 | + |
| 5 | +You can contribute to this project from a Windows, macOS or Linux machine. |
| 6 | + |
| 7 | +On all platforms, the minimum requirements are: |
| 8 | + |
| 9 | +* Git client and command line tools. |
| 10 | +* Ruby 3.0 or higher |
| 11 | + |
| 12 | +## Pull Request |
| 13 | + |
| 14 | +All contributions to the OpenFeature project are welcome via GitHub pull requests. |
| 15 | + |
| 16 | +To create a new PR, you will need to first fork the GitHub repository and clone upstream. |
| 17 | + |
| 18 | +```bash |
| 19 | +git clone https://github.com/open-feature/ruby-sdk.git openfeature-ruby-sdk |
| 20 | +``` |
| 21 | + |
| 22 | +Navigate to the repository folder |
| 23 | +```bash |
| 24 | +cd openfeature-ruby-sdk |
| 25 | +``` |
| 26 | + |
| 27 | +Add your fork as an origin |
| 28 | +```bash |
| 29 | +git remote add fork https://github.com/YOUR_GITHUB_USERNAME/ruby-sdk.git |
| 30 | +``` |
| 31 | + |
| 32 | +To start working on a new feature or bugfix, create a new branch and start working on it. |
| 33 | + |
| 34 | +```bash |
| 35 | +git checkout -b feat/NAME_OF_FEATURE |
| 36 | +# Make your changes |
| 37 | +git commit |
| 38 | +git push fork feat/NAME_OF_FEATURE |
| 39 | +``` |
| 40 | + |
| 41 | +Open a pull request against the main ruby-sdk repository. |
| 42 | + |
| 43 | +### Running checks locally |
| 44 | + |
| 45 | +#### Unit tests |
| 46 | + |
| 47 | +To run unit tests and other checks: |
| 48 | + |
| 49 | +```bash |
| 50 | +bundle exec rake |
| 51 | +``` |
| 52 | + |
| 53 | +### How to Receive Comments |
| 54 | + |
| 55 | +* If the PR is not ready for review, please mark it as |
| 56 | + [`draft`](https://github.blog/2019-02-14-introducing-draft-pull-requests/). |
| 57 | +* Make sure all required CI checks are clear. |
| 58 | +* Submit small, focused PRs addressing a single concern/issue. |
| 59 | +* Make sure the PR title reflects the contribution. |
| 60 | +* Write a summary that helps understand the change. |
| 61 | +* Include usage examples in the summary, where applicable. |
| 62 | + |
| 63 | +### How to Get PRs Merged |
| 64 | + |
| 65 | +A PR is considered to be **ready to merge** when: |
| 66 | + |
| 67 | +* Major feedbacks are resolved. |
| 68 | +* It has been open for review for at least one working day. This gives people |
| 69 | + reasonable time to review. |
| 70 | +* Trivial change (typo, cosmetic, doc, etc.) doesn't have to wait for one day. |
| 71 | +* Urgent fix can take exception as long as it has been actively communicated. |
| 72 | + |
| 73 | +Any Maintainer can merge the PR once it is **ready to merge**. Note, that some |
| 74 | +PRs may not be merged immediately if the repo is in the process of a release and |
| 75 | +the maintainers decided to defer the PR to the next release train. |
| 76 | + |
| 77 | +If a PR has been stuck (e.g. there are lots of debates and people couldn't agree |
| 78 | +on each other), the owner should try to get people aligned by: |
| 79 | + |
| 80 | +* Consolidating the perspectives and putting a summary in the PR. It is |
| 81 | + recommended to add a link into the PR description, which points to a comment |
| 82 | + with a summary in the PR conversation. |
| 83 | +* Tagging subdomain experts (by looking at the change history) in the PR asking |
| 84 | + for suggestion. |
| 85 | +* Reaching out to more people on the [CNCF OpenFeature Slack channel](https://cloud-native.slack.com/archives/C0344AANLA1). |
| 86 | +* Stepping back to see if it makes sense to narrow down the scope of the PR or |
| 87 | + split it up. |
| 88 | +* If none of the above worked and the PR has been stuck for more than 2 weeks, |
| 89 | + the owner should bring it to the OpenFeatures [meeting](README.md#contributing). |
| 90 | + |
| 91 | +## Automated Changelog |
| 92 | + |
| 93 | +Each time a release is published the changelogs will be generated automatically using `release-please`. |
| 94 | + |
| 95 | +## Design Choices |
| 96 | + |
| 97 | +As with other OpenFeature SDKs, ruby-sdk follows the |
| 98 | +[openfeature-specification](https://github.com/open-feature/spec). |
0 commit comments