Skip to content

Commit 89234c1

Browse files
lucacomepleshakov
andauthored
Add Issue Lifecycle and update Contributing (#431)
Co-authored-by: Michael Pleshakov <[email protected]>
1 parent 4086557 commit 89234c1

File tree

2 files changed

+54
-7
lines changed

2 files changed

+54
-7
lines changed

CONTRIBUTING.md

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@ The following is a set of guidelines for contributing to NGINX Kubernetes Gatewa
1414
* [Git Style Guide](#git-style-guide)
1515
* [Go Style Guide](#go-style-guide)
1616

17-
[Code of Conduct](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/master/CODE_OF_CONDUCT.md)
17+
[Code of Conduct](CODE_OF_CONDUCT.md)
1818

1919
[Contributor License Agreement](#contributor-license-agreement)
2020

2121
## Ask a Question
2222

23-
We will have a public forum soon where you can come and ask questions and have a discussion. For now please open an Issue on GitHub with the label `question`.
23+
To ask a question please use [Github Discussions](https://github.com/nginxinc/nginx-kubernetes-gateway/discussions).
24+
25+
[NGINX Community Slack](https://community.nginx.org/joinslack) has a dedicated channel for this project -- `#nginx-kubernetes-gateway`.
26+
27+
Please reserve GitHub issues for feature requests and bugs rather than general questions.
2428

2529
## Getting Started
2630

@@ -36,7 +40,7 @@ Follow our [Installation Instructions](README.md#run-nginx-gateway) to get the N
3640
* Deployment yaml files are found at `deploy/`
3741
* External APIs, clients, and SDKs can be found under `pkg/`
3842
* We use [Go Modules](https://github.com/golang/go/wiki/Modules) for managing dependencies.
39-
* We use [Ginkgo](https://onsi.github.io/ginkgo/) and [Gomega](https://onsi.github.io/gomega/) for our BDD style unit tests.
43+
* We use [Ginkgo](https://onsi.github.io/ginkgo/) and [Gomega](https://onsi.github.io/gomega/) for our BDD style unit tests.
4044

4145
## Contributing
4246

@@ -51,16 +55,22 @@ To suggest an enhancement, please create an issue on GitHub with the label `enha
5155
### Open a Pull Request
5256

5357
* Fork the repo, create a branch, submit a PR when your changes are tested and ready for review
54-
* Fill in [our pull request template](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/main/.github/PULL_REQUEST_TEMPLATE.md)
58+
* Fill in [our pull request template](.github/PULL_REQUEST_TEMPLATE.md)
59+
60+
> **Note**
61+
>
62+
> If you’d like to implement a new feature, please consider creating a feature request issue first to start a discussion about the feature.
63+
64+
### Issue lifecycle
5565

56-
Note: if you’d like to implement a new feature, please consider creating a feature request issue first to start a discussion about the feature.
66+
* When an issue or PR is created, it will be triaged by the core development team and assigned a label to indicate the type of issue it is (bug, feature request, etc) and to determine the milestone. Please see the [Issue Lifecycle](ISSUE_LIFECYCLE.md) document for more information.
5767

5868
## Style Guides
5969

6070
### Git Style Guide
6171

6272
* Keep a clean, concise and meaningful git commit history on your branch, rebasing locally and squashing before submitting a PR
63-
* Follow the guidelines of writing a good commit message as described [here](https://chris.beams.io/posts/git-commit/) and summarised in the next few points
73+
* Follow the guidelines of writing a good commit message as described [here](https://chris.beams.io/posts/git-commit/) and summarized in the next few points
6474
* In the subject line, use the present tense ("Add feature" not "Added feature")
6575
* In the subject line, use the imperative mood ("Move cursor to..." not "Moves cursor to...")
6676
* Limit the subject line to 72 characters or less
@@ -76,6 +86,6 @@ Note: if you’d like to implement a new feature, please consider creating a fea
7686

7787
## Contributor License Agreement
7888

79-
Individuals or business entities who contribute to this project must have completed and submitted the [F5® Contributor License Agreement](F5ContributorLicenseAgreement.pdf) prior to their code submission being included in this project.
89+
Individuals or business entities who contribute to this project must have completed and submitted the [F5® Contributor License Agreement](F5ContributorLicenseAgreement.pdf) prior to their code submission being included in this project.
8090
To submit, please print out the [F5® Contributor License Agreement](F5ContributorLicenseAgreement.pdf), fill in the required sections, sign, scan, and send executed CLA to [email protected].
8191
Please include your github handle in the CLA email.

ISSUE_LIFECYCLE.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Issue Lifecycle
2+
3+
To ensure a balance between work carried out by the NGINX engineering team while encouraging community involvement on this project, we use the following issue lifecycle. (Note: The issue *creator* refers to the community member that created the issue. The issue *owner* refers to the NGINX team member that is responsible for managing the issue lifecycle.)
4+
5+
1. New issue created by community member.
6+
7+
8+
2. Assign issue owner: All new issues are assigned an owner on the NGINX engineering team. This owner shepherds the issue through the subsequent stages in the issue lifecycle.
9+
10+
11+
3. Determine issue type: This is done with automation where possible, and manually by the owner where necessary. The associated label is applied to the issue.
12+
#### Possible Issue Types
13+
`needs more info`: The owner should use the issue to request information from the creator. If we don't receive the needed information within 7 days, automation closes the issue.
14+
15+
`bug`: The implementation of a feature is not correct.
16+
17+
`proposal`: A new feature, tackling technical debt, documentation changes, or improving existing features.
18+
19+
`question`: The owner converts the issue to a github discussion and engages the creator.
20+
21+
22+
4. Determine milestone: The owner, in collaboration with the wider team (product management & engineering), determines what milestone to attach to an issue. Generally, milestones correspond to product releases - however there are two special milestones not tied to a specific release:
23+
24+
- Issues assigned to `backlog`: Our team is in favour of implementing the feature request/fixing the issue, however the implementation is not yet assigned to a concrete release. If and when a `backlog` issue aligns well with our roadmap, it will be scheduled for a concrete iteration. We review and update our roadmap at least once every quarter. The `backlog` list helps us shape our roadmap, but it is not the only source of input. Therefore, some `backlog` items may eventually be closed as `out of scope`, or relabelled as `backlog candidate` once it becomes clear that they do not align with our evolving roadmap.
25+
26+
- Issues assigned to `backlog candidate`: Our team does not intend to implement the feature/fix request described in the issue and wants the community to weigh in before we make our final decision.
27+
28+
`backlog` issues can be labeled by the owner as `help wanted` and/or `good first issue` as appropriate.
29+
30+
31+
5. Promotion of `backlog candidate` issue to `backlog` issue: If an issue labelled `backlog candidate` receives more than 30 upvotes within 60 days, we promote the issue by applying the `backlog` label. While issues promoted in this manner have not been committed to a particular release, we welcome PRs from the community on them.
32+
33+
If an issue does not make our roadmap and has not been moved to a discussion, it is closed with the label `out of scope`. The goal is to get every issue in the issues list to one of the following end states:
34+
35+
- An assigned release.
36+
- The `backlog` label.
37+
- Closed as `out of scope`.

0 commit comments

Comments
 (0)