mirror of https://github.com/nginx/nginx
111 lines
4.0 KiB
Markdown
111 lines
4.0 KiB
Markdown
# Contributing Guidelines
|
|
|
|
The following is a set of guidelines for contributing to nginx project.
|
|
We really appreciate that you are considering contributing!
|
|
|
|
## Table of Contents
|
|
|
|
- [Ask a Question](#ask-a-question)
|
|
- [Report a Bug](#report-a-bug)
|
|
- [Suggest a Feature or Enhancement](#suggest-a-feature-or-enhancement)
|
|
- [Open a Discussion](#open-a-discussion)
|
|
- [Submit a Pull Request](#submit-a-pull-request)
|
|
- [Issue Lifecycle](#issue-lifecycle)
|
|
|
|
## Ask a Question
|
|
|
|
To ask a question, open an issue on GitHub with the label `question`.
|
|
|
|
## Report a Bug
|
|
|
|
To report a bug, open an issue on GitHub with the label `bug` using the
|
|
available bug report issue template. Before reporting a bug, make sure the
|
|
issue has not already been reported.
|
|
|
|
## Suggest a Feature or Enhancement
|
|
|
|
To suggest a feature or enhancement, open an issue on GitHub with the label
|
|
`feature` or `enhancement` using the available feature request issue template.
|
|
Please ensure the feature or enhancement has not already been suggested.
|
|
|
|
## Open a Discussion
|
|
|
|
If you want to engage in a conversation with the community and maintainers,
|
|
we encourage you to use
|
|
[GitHub Discussions](https://github.com/nginx/nginx/discussions).
|
|
|
|
## Submit a Pull Request
|
|
|
|
Follow this plan to contribute a change to NGINX source code:
|
|
|
|
- Fork the NGINX repository
|
|
- Create a branch
|
|
- Implement your changes in this branch
|
|
- Submit a pull request (PR) when your changes are tested and ready for review
|
|
|
|
Refer to
|
|
[NGINX Development Guide](https://nginx.org/en/docs/dev/development_guide.html)
|
|
for questions about NGINX programming.
|
|
|
|
### Formatting Changes
|
|
|
|
- Changes should be formatted according to the
|
|
[code style](https://nginx.org/en/docs/dev/development_guide.html#code_style)
|
|
used by NGINX; sometimes, there is no clear rule, in which case examine how
|
|
existing NGINX sources are formatted and mimic this style; changes will more
|
|
likely be accepted if style corresponds to the surrounding code
|
|
|
|
- Keep a clean, concise and meaningful commit history on your branch, rebasing
|
|
locally and breaking changes logically into commits before submitting a PR
|
|
|
|
- Each commit message should have a single-line subject line followed by verbose
|
|
description after an empty line
|
|
|
|
- Limit the subject line to 67 characters, and the rest of the commit message
|
|
to 76 characters
|
|
|
|
- Use subject line prefixes for commits that affect a specific portion of the
|
|
code; examples include "Upstream:", "QUIC:", or "Core:"; see the commit history
|
|
to get an idea of the prefixes used
|
|
|
|
- Reference issues in the the subject line; if the commit fixes an issue,
|
|
[name it](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue)
|
|
accordingly
|
|
|
|
### Before Submitting
|
|
|
|
- The proposed changes should work properly on a wide range of
|
|
[supported platforms](https://nginx.org/en/index.html#tested_os_and_platforms)
|
|
|
|
- Try to make it clear why the suggested change is needed, and provide a use
|
|
case, if possible
|
|
|
|
- Passing your changes through the test suite is a good way to ensure that they
|
|
do not cause a regression; the repository with tests can be cloned with the
|
|
following command:
|
|
|
|
```bash
|
|
git clone https://github.com/nginx/nginx-tests.git
|
|
```
|
|
|
|
- Submitting a change implies granting project a permission to use it under the
|
|
[BSD-2-Clause license](https://github.com/nginx/nginx/blob/master/LICENSE)
|
|
|
|
## Issue Lifecycle
|
|
|
|
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:
|
|
|
|
- A new issue is created by a community member
|
|
|
|
- An owner on the NGINX engineering team is assigned to the issue; this
|
|
owner shepherds the issue through the subsequent stages in the issue lifecycle
|
|
|
|
- The owner assigns one or more
|
|
[labels](https://github.com/nginx/nginx/issues/labels) to the issue
|
|
|
|
- The owner, in collaboration with the wider team (product management and
|
|
engineering), determines what milestone to attach to an issue;
|
|
generally, milestones correspond to product releases
|