diff --git a/.github/DISCUSSION_TEMPLATE/general.yml b/.github/DISCUSSION_TEMPLATE/general.yml new file mode 100644 index 000000000..0ebcb153f --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general.yml @@ -0,0 +1,15 @@ +--- +body: + - type: markdown + attributes: + value: | + For NGINX troubleshooting/technical help, please visit our community forum instead of asking your questions here. We will politely redirect these types of questions to the forum. + - type: textarea + id: general + attributes: + label: What would you like to discuss? + description: Please provide as much context as possible. Remember that only general discussions related to the NGINX codebase will be addressed on GitHub. For anything else, please visit our [community forum](https://community.nginx.org/). + value: | + I would like to discuss... + validations: + required: true diff --git a/.github/DISCUSSION_TEMPLATE/ideas.yml b/.github/DISCUSSION_TEMPLATE/ideas.yml new file mode 100644 index 000000000..73fb6ec3b --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/ideas.yml @@ -0,0 +1,15 @@ +--- +body: + - type: markdown + attributes: + value: | + For NGINX troubleshooting/technical help, please visit our community forum instead of asking your questions here. We will politely redirect these types of questions to the forum. + - type: textarea + id: ideas + attributes: + label: What idea would you like to discuss? + description: Please provide as much context as possible. Remember that only ideas related to the NGINX codebase will be addressed on GitHub. For anything else, please visit our [community forum](https://community.nginx.org/). + value: | + I have an idea for... + validations: + required: true diff --git a/.github/DISCUSSION_TEMPLATE/q-a.yml b/.github/DISCUSSION_TEMPLATE/q-a.yml new file mode 100644 index 000000000..f103ef2d7 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/q-a.yml @@ -0,0 +1,15 @@ +--- +body: + - type: markdown + attributes: + value: | + For NGINX troubleshooting/technical help, please visit our community forum instead of asking your questions here. We will politely redirect these types of questions to the forum. + - type: textarea + id: q-a + attributes: + label: What question do you have? + description: Please provide as much context as possible. Remember that only questions related to the NGINX codebase will be addressed on GitHub. For anything else, please visit our [community forum](https://community.nginx.org/). + value: | + I would like to know... + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index efdc1167f..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: "" -labels: "bug" ---- - -### Environment - -Include the result of the following commands: - - `nginx -V` - - `uname -a` - -### Description - -Describe the bug in full detail including expected and actual behavior. -Specify conditions that caused it. Provide the relevant part of nginx -configuration and debug log. - -- [ ] The bug is reproducible with the latest version of nginx -- [ ] The nginx configuration is minimized to the smallest possible -to reproduce the issue and doesn't contain third-party modules - -#### nginx configuration - -``` -# Your nginx configuration here -``` -or share the configuration in [gist](https://gist.github.com/). - -#### nginx debug log - -It is advised to enable -[debug logging](http://nginx.org/en/docs/debugging_log.html). -``` -# Your nginx debug log here -``` -or share the debug log in [gist](https://gist.github.com/). diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 000000000..2f3aea12c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,106 @@ +--- +name: 🐛 Bug report +description: Create a report to help us improve +labels: bug +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + + Before you continue filling out this report, please take a moment to check that your bug has not been [already reported on GitHub][issue search], is reproducible with the latest version of nginx, and does not involve any third-party modules 🙌 + + Remember to redact any sensitive information such as authentication credentials and/or license keys! + + **Note:** If you are seeking community support, please start a new topic in the [NGINX Community forum][forum]. If you wish to discuss the codebase, please start a new thread via [GitHub discussions][discussions]. + + [issue search]: https://github.com/nginx/nginx/search?q=is%3Aissue&type=issues + [discussions]: https://github.com/nginx/nginx/discussions + [forum]: https://community.nginx.org + + - type: textarea + id: overview + attributes: + label: Bug Overview + description: A clear and concise overview of the bug. + placeholder: When I do "X", "Y" happens instead of "Z". + validations: + required: true + + - type: textarea + id: behavior + attributes: + label: Expected Behavior + description: A clear and concise description of what you expected to happen. + placeholder: When I do "X", I expect "Z" to happen. + validations: + required: true + + - type: textarea + id: steps + attributes: + label: Steps to Reproduce the Bug + description: Detail the series of steps required to reproduce the bug. + placeholder: When I run "X" using [...], "X" fails with "Y" error message. If I check the terminal outputs and/or logs, I see the following info. + validations: + required: true + + - type: textarea + id: configuration + attributes: + label: NGINX Configuration + description: Please provide your NGINX configuration. Minimize it to the smallest possible configuration that reproduces the issue. + value: | + ``` + # Your NGINX configuration + ``` + validations: + required: true + + - type: textarea + id: environment + attributes: + label: NGINX version and build configuration options + description: Please provide details about your NGINX build. + value: | + The output of `nginx -V`: [...] + validations: + required: true + + - type: textarea + id: environment + attributes: + label: Environment where NGINX is being built and/or deployed + description: Please provide details about your environment. + value: | + - Target deployment platform: [e.g. AWS/GCP/local cluster/etc...] + - Target OS: [e.g. RHEL 9/Ubuntu 24.04/etc...] + validations: + required: true + + - type: textarea + id: environment + attributes: + label: Architecture where NGINX is being built and/or deployed + description: Please provide details about your deployment environment. + value: | + The output of `uname -a`: [...] + validations: + required: true + + - type: textarea + id: logs + attributes: + label: NGINX Debug Log + description: Please provide your NGINX debug log. See this [doc](http://nginx.org/en/docs/debugging_log.html) for details on how to enable it. + value: | + ``` + # Your NGINX debug log + ``` + + - type: textarea + id: context + attributes: + label: Additional Context + description: Add any other context about the problem here. + placeholder: Feel free to add any other context/information/screenshots/etc... that you think might be relevant to this issue in here. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..3f7850f70 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,12 @@ +--- +blank_issues_enabled: false +contact_links: + - name: 💬 Talk to the NGINX community! + url: https://community.nginx.org + about: A community forum for NGINX users, developers, and contributors + - name: 📝 Code of Conduct + url: https://www.contributor-covenant.org/version/2/1/code_of_conduct + about: NGINX follows the Contributor Covenant Code of Conduct to ensure a safe and inclusive community + - name: 💼 For commercial & enterprise users + url: https://www.f5.com/products/nginx + about: F5 offers a wide range of NGINX products for commercial & enterprise users diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 67471b083..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -name: Feature request -about: Suggest a feature for nginx -title: "" -labels: "feature" ---- - -### Describe the feature you'd like to add to nginx - -A clear and concise description of the feature. - -### Describe the problem this feature solves - -A clear and concise description of the problem. - -### Additional context - -Add any other context about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 000000000..cafb5eaf3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,40 @@ +--- +name: ✨ Feature request +description: Suggest an idea for this project +labels: enhancement +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this feature request! + + Before you continue filling out this request, please take a moment to check that your feature has not been [already requested on GitHub][issue search] 🙌 + + **Note:** If you are seeking community support, please start a new topic in the [NGINX Community forum][forum]. If you wish to discuss the codebase, please start a new thread via [GitHub discussions][discussions]. + + [issue search]: https://github.com/nginx/nginx/search?q=is%3Aissue&type=issues + [discussions]: https://github.com/nginx/nginx/discussions + [forum]: https://community.nginx.org + + - type: textarea + id: overview + attributes: + label: Feature Overview + description: A clear and concise description of what the feature request is. + placeholder: I would like this project to be able to do "X". + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives Considered + description: Detail any potential alternative solutions/workarounds you've used or considered. + placeholder: I have done/might be able to do "X" in this project by doing "Y". + + - type: textarea + id: context + attributes: + label: Additional Context + description: Add any other context about the problem here. + placeholder: Feel free to add any other context/information/screenshots/etc... that you think might be relevant to this feature request here. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 14ac4639b..1e7e0a9d7 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,10 +1,10 @@ ### Proposed changes -Describe the use case and detail of the change. +Describe the use case and detail of the change. If this PR addresses an issue on GitHub, make sure to include a link to that issue using one of the [supported keywords](https://docs.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue) in this PR's description or commit message. -If this pull request addresses an issue on GitHub, make sure to reference that -issue using one of the -[supported keywords](https://docs.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue). +### Checklist -Before creating a pull request, make sure to comply with the -[Contributing Guidelines](https://github.com/nginx/nginx/blob/master/CONTRIBUTING.md). +Before creating a PR, run through this checklist and mark each as complete: + +- [ ] I have read the [contributing guidelines](/CONTRIBUTING.md). +- [ ] I have checked that NGINX compiles and runs after adding my changes. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 864e7989b..4436414f3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,34 +5,34 @@ 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. +available [bug report issue form](/.github/ISSUE_TEMPLATE/bug_report.yml). +Please ensure the bug has not already been reported. **If the bug is a +potential security vulnerability, please report it using our +[security policy](/SECURITY.md).** ## 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. +To suggest a feature or enhancement, please create an issue on GitHub with the +label `enhancement` using the available +[feature request issue form](/.github/ISSUE_TEMPLATE/feature_request.yml). 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). +[GitHub Discussions](https://github.com/nginx/nginx/discussions) to discuss +the NGINX codebase or the [NGINX Community forum](https://community.nginx.org) +to chat anything else NGINX (including troubleshooting). ## Submit a Pull Request @@ -89,7 +89,20 @@ 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) +[BSD-2-Clause license](/LICENSE) + +### F5 Contributor License Agreement (CLA) + +F5 requires all contributors to agree to the terms of the F5 CLA +(available [here](https://github.com/f5/f5-cla/blob/main/docs/f5_cla.md)) +before any of their changes can be incorporated into an F5 Open Source +repository (even contributions to the F5 CLA itself!). + +If you have not yet agreed to the F5 CLA terms and submit a PR to this +repository, a bot will prompt you to view and agree to the F5 CLA. +You will have to agree to the F5 CLA terms through a comment in the PR +before any of your changes can be merged. Your agreement signature +will be safely stored by F5 and no longer be required in future PRs. ## Issue Lifecycle diff --git a/README.md b/README.md index b97181e30..d6761842c 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,11 @@ NGINX Banner +[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) +[![Community Forum](https://img.shields.io/badge/community-forum-009639?logo=discourse&link=https%3A%2F%2Fcommunity.nginx.org)](https://community.nginx.org) +[![License](https://img.shields.io/badge/License-BSD%202--Clause-blue.svg)](/LICENSE) +[![Code of Conduct](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](/CODE_OF_CONDUCT.md) + NGINX (pronounced "engine x" or "en-jin-eks") is the world's most popular Web Server, high performance Load Balancer, Reverse Proxy, API Gateway and Content Cache. NGINX is free and open source software, distributed under the terms of a simplified [2-clause BSD-like license](LICENSE). @@ -60,7 +65,6 @@ nginx -V ``` > See [Configuring the build](#configuring-the-build) for information on how to include specific Static modules into your nginx build. - ## Configurations NGINX is highly flexible and configurable. Provisioning the software is achieved via text-based config file(s) accepting parameters called "[Directives](https://nginx.org/en/docs/dirindex.html)". See [Configuration File's Structure](https://nginx.org/en/docs/beginners_guide.html#conf_structure) for a comprehensive description of how NGINX configuration files work. @@ -209,9 +213,7 @@ The output of which should start with: ``` # Asking questions and reporting issues -We encourage you to engage with us. -- [NGINX GitHub Discussions](https://github.com/nginx/nginx/discussions), is the go-to place to start asking questions and sharing your thoughts. -- Our [GitHub Issues](https://github.com/nginx/nginx/issues) page offers space to submit and discuss specific issues, report bugs, and suggest enhancements. +See our [Support](SUPPORT.md) guidelines for information on how discuss the codebase, ask troubleshooting questions, and report issues. # Contributing code Please see the [Contributing](CONTRIBUTING.md) guide for information on how to contribute code. diff --git a/SUPPORT.md b/SUPPORT.md new file mode 100644 index 000000000..4e8ab2034 --- /dev/null +++ b/SUPPORT.md @@ -0,0 +1,48 @@ +# Support + +## Ask a Question + +We use GitHub issues for tracking bugs and feature requests +related to this project. + +If you don't know how something in the codebase works, are curious if NGINX +is capable of achieving your desired functionality or want to discuss the +implementation of an existing or in development feature, please start a +GitHub discussion! + +## NGINX Specific Questions and/or Issues + +This project isn't the right place to get support for NGINX and/or NGINX +troubleshooting questions, but the following resources are available below. +Thanks for your understanding! + +### Community Forum + +We have a [community forum](https://community.nginx.org/)! +If you have any NGINX specific questions and/or issues, +try checking out the [`NGINX category`](https://community.nginx.org/c/projects/nginx/23). +For general discussions around anything tangentially NGINX related, +check out the [`General Discussion category`](https://community.nginx.org/c/general-discussion/34). +Both fellow community members and NGINXers might be able to help you! :) + +### Documentation + +For a comprehensive list of all NGINX directives, check out . + +For a comprehensive list of administration and deployment guides for all +NGINX products, check out . + +## Contributing + +Please see the [contributing guide](/CONTRIBUTING.md) for guidelines +on how to best contribute to this project. + +## Commercial Support + +Commercial support for this project is available. +Please get in touch with [F5 sales](https://www.f5.com/products/get-f5/) +or check your contract details for more information! + +## Community Support + +Community support is offered on a best effort basis through any of our active communities.