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
 |