|
| 1 | +# Feature Branch Approval Policy |
| 2 | + |
| 3 | +The [Time-based Release Policy] defines a regular twice-a-year schedule for new |
| 4 | +OpenSSL versions. In the case of large features that cannot reasonably be |
| 5 | +implemented and reviewed within a single PR there is a risk that only an |
| 6 | +incomplete or incorrect implementation of the feature will be merged to the |
| 7 | +master branch by the time a feature freeze occurs for the next release. |
| 8 | + |
| 9 | +To avoid this problem feature branches can be used. A feature branch is simply |
| 10 | +a branch in the main git repository that can be used as a target branch for |
| 11 | +PRs related to a single new feature. |
| 12 | + |
| 13 | +A feature branch will be created based on the current state of master at the |
| 14 | +time of its creation. If a feature branch exists for a protracted period of time |
| 15 | +then it will need to be rebased on a regular basis. This process should be |
| 16 | +performed by a committer on an as-needed basis and can be done without further |
| 17 | +review. |
| 18 | + |
| 19 | +The creation of a new feature branch implies some overhead for the project to |
| 20 | +manage that feature branch (such as for example periodic rebases, and to review |
| 21 | +PRs targeting it). Such a feature branch would typically only be created where |
| 22 | +it has been agreed that the feature is desirable; exists on the [Project Board]; |
| 23 | +is of sufficiently high priority; and there are expected to be resources |
| 24 | +available to work on the feature development and to review it. For this reason |
| 25 | +the creation of new feature branches is controlled via an approval process. |
| 26 | + |
| 27 | +Submitting a request for a new feature branch should be done by creating an |
| 28 | +issue in the [openssl/project] repository. Such a request can be created by |
| 29 | +anyone. The request should specify: |
| 30 | + |
| 31 | +- The name of the feature branch requested in the form of `feature/<name>` |
| 32 | +- A link to an issue describing the requested feature that will be developed on |
| 33 | + the branch |
| 34 | +- An estimate of when the work on the feature is expected to be complete |
| 35 | +- Whether there are any known resources being made available to work on the |
| 36 | + feature |
| 37 | + |
| 38 | +The approval of a new feature branch is ultimately performed by the OMC. The OMC |
| 39 | +may delegate the authority to make such approvals on its behalf to another body |
| 40 | +at the discretion of the OMC. |
| 41 | + |
| 42 | +Once approved by the OMC a feature branch may be created. All PRs relevant to |
| 43 | +that feature should target that branch and go through the normal code review |
| 44 | +process. |
| 45 | + |
| 46 | +Once the feature is complete and all relevant PRs have been merged to the branch, |
| 47 | +a PR should be created containing all the commits from the branch. All of the |
| 48 | +commits should already have been reviewed before they were pushed to the |
| 49 | +feature branch. However this PR review stage enables a final check to confirm |
| 50 | +the complete feature is sane. Once this PR is merged, the feature branch should |
| 51 | +then be deleted from the repository. |
| 52 | + |
| 53 | +[Time-based Release Policy]: https://github.com/openssl/general-policies/blob/master/policies/release-policy.md |
| 54 | +[Project Board]: https://github.com/orgs/openssl/projects/2/views/28 |
| 55 | +[openssl/project]: https://github.com/openssl/project |
0 commit comments