DOC: Replace issue templates by issue forms

GitHub's issue forms are the next evolution of issue templates and allow for
showing an actual form with separate inputs when creating an issue. They ensure
that all the required fields are filled in and automatically format code parts
(e.g. haproxy -vv or the configuration) as actual code blocks, possibly with
syntax highlighting.

Co-authored-by: Maximilian Mader <max@bastelstu.be>
diff --git a/.github/ISSUE_TEMPLATE/Bug.md b/.github/ISSUE_TEMPLATE/Bug.md
deleted file mode 100644
index 038330a..0000000
--- a/.github/ISSUE_TEMPLATE/Bug.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-name: Bug Report
-about: Report a problem with HAProxy to help us resolve it.
-labels: 'type: bug, status: needs-triage'
----
-
-<!--
-
-Welcome! - We kindly ask that you:
-
-  1. Fill out the issue template below - not doing so needs a good reason.
-  2. Use the forum or the mailing list if you have a question rather than a bug or feature request.
-
-The forum is at: https://discourse.haproxy.org/
-
-The mailing list (no need to subscribe) is: haproxy@formilux.org
-Subscribe to the list: haproxy+subscribe@formilux.org
-Unsubscribe from the list: haproxy+unsubscribe@formilux.org
-
-Forum and mailing list are correct places for questions about HAProxy or general suggestions
-and topics, e.g. usage or documentation questions! This issue tracker is for tracking bugs and
-feature requests directly relating to the development of the software itself.
-
-Thanks for understanding, and for contributing to the project!
-
--->
-
-
-## Detailed description of the problem
-
-<!--
-In this section, please try to concentrate on observations. Only describe what you
-observed directly.
--->
-
-## Expected behavior
-
-<!--
-Explain why you consider the described behavior (above) to be wrong. What did you expect instead?
-
-Most likely this is a mismatch between HAProxy's documentation and HAProxy's behavior.
--->
-
-## Steps to reproduce the behavior
-
-<!--
-The more time you spend describing an easy way to reproduce the behavior (if
-this is possible), the easier it is for the project developers to fix it!
--->
-
-1. 
-2. 
-3. 
-
-## Do you have any idea what may have caused this?
-
-## Do you have an idea how to solve the issue?
-
-## What is your configuration?
-
-<!--
-Include as much configuration as possible, including global and default sections.
-Replace confidential data like domain names and IP addresses.
-
-Put it in code blocks ```:
--->
-
-```
-(paste your output here)
-```
-
-## Output of `haproxy -vv` and `uname -a`
-
-<!-- Put it in code blocks ```: -->
-
-```
-(paste your output here)
-```
-
-## If HAProxy crashed: Last outputs and backtraces
-
-<!--
-If HAProxy crashed then please provide:
-
-  1. The last output from your HAProxy logs (e.g. from journalctl or syslog).
-  2. A backtrace from a coredump (`t a a bt full`).
-
-Put all results in code blocks ```:
--->
-
-```
-(paste your output here)
-```
-
-## Additional information (if helpful)
-
-<!--
-Any additional information about your environment that may be useful to know about. For example:
-  - Any local patches applied.
-  - Environment specificities
-  - Unusual workload
-  - Interesting observations or coindidences with events on other components
--->
diff --git a/.github/ISSUE_TEMPLATE/Bug.yml b/.github/ISSUE_TEMPLATE/Bug.yml
new file mode 100644
index 0000000..b56ecb7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Bug.yml
@@ -0,0 +1,108 @@
+name: Bug Report
+description: Report a problem with HAProxy to help us resolve it.
+labels:
+- 'type: bug'
+- 'status: needs-triage'
+body:
+- type: markdown
+  attributes:
+    value: |
+      ## Welcome!
+
+      You are about to *report a bug* you encountered in HAProxy. Please use the 'Feature Request' template if you want to propose a new feature instead.
+
+      This issue tracker is used to track actual bugs. Please use [the forum](https://discourse.haproxy.org/) or mailing list if you have a question, e.g. to get help with building a configuration to achieve your desired behavior.
+
+      The forum is at: https://discourse.haproxy.org/
+
+      The mailing list (no need to subscribe) is: haproxy@formilux.org
+      Subscribe to the list: haproxy+subscribe@formilux.org
+      Unsubscribe from the list: haproxy+unsubscribe@formilux.org
+
+      Forum and mailing list are correct places for questions about HAProxy or general suggestions and topics, e.g. usage or documentation questions! This issue tracker is for tracking bugs and feature requests directly relating to the development of the software itself.
+
+      Thanks for understanding, and for contributing to the project!
+- type: textarea
+  id: description
+  attributes:
+    label: Detailed Description of the Problem
+    description: |
+      In this section, please try to concentrate on observations. Only describe what you observed directly.
+  validations:
+    required: true
+- type: textarea
+  id: expected-behavior
+  attributes:
+    label: Expected Behavior
+    description: |
+      Explain why you consider the described behavior (above) to be wrong. What did you expect instead?
+
+      Most likely this is a mismatch between HAProxy's documentation and HAProxy's behavior.
+  validations:
+    required: true
+- type: textarea
+  id: steps
+  attributes:
+    label: Steps to Reproduce the Behavior
+    description: |
+      The more time you spend describing an easy way to reproduce the behavior (if this is possible), the easier it is for the project developers to fix it!
+    placeholder: |
+      1.
+      2.
+      3.
+  validations:
+    required: true
+- type: textarea
+  id: possible-cause
+  attributes:
+    label: Do you have any idea what may have caused this?
+    description: |
+      Simply leave this empty if you do not.
+- type: textarea
+  id: possible-solution
+  attributes:
+    label: Do you have an idea how to solve the issue?
+    description: |
+      Simply leave this empty if you do not.
+- type: textarea
+  id: configuration
+  attributes:
+    label: What is your configuration?
+    description: |
+      - Include as much configuration as possible, including global and default sections.
+      - Replace confidential data like domain names and IP addresses.
+    render: haproxy
+  validations:
+    required: true
+- type: textarea
+  id: haproxy-vv
+  attributes:
+    label: 'Output of `haproxy -vv`'
+    description: |
+      Please run `haproxy -vv` (with two `v`) and paste the output into this field.
+
+      Please also include the output of `uname -a` if you use HAProxy 2.1 or older.
+    render: plain
+  validations:
+    required: true
+- type: textarea
+  id: last-output
+  attributes:
+    label: Last Outputs and Backtraces
+    description: |
+      If HAProxy crashed then please provide:
+
+        1. The last output from your HAProxy logs (e.g. from journalctl or syslog).
+        2. A backtrace from a coredump (`t a a bt full`).
+    render: plain
+- type: textarea
+  id: additional
+  attributes:
+    label: Additional Information
+    description: |
+      Any additional information about your environment that may be useful to know about. For example:
+
+        - Any local patches applied
+        - Environment specificities
+        - Unusual workload
+        - Interesting observations or coincidences with events on other components
diff --git a/.github/ISSUE_TEMPLATE/Code-Report.md b/.github/ISSUE_TEMPLATE/Code-Report.md
deleted file mode 100644
index d1bcd49..0000000
--- a/.github/ISSUE_TEMPLATE/Code-Report.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-name: Code Report
-about: File a Code Report (for example from coverity or valgrind)
-labels: 'type: code-report'
----
-
-<!--
-
-Welcome! - We kindly ask that you:
-
-  1. Fill out the issue template below - not doing so needs a good reason.
-  2. Use the forum or the mailing list if you have a question rather than a bug or feature request.
-
-The forum is at: https://discourse.haproxy.org/
-
-The mailing list (no need to subscribe) is: haproxy@formilux.org
-Subscribe to the list: haproxy+subscribe@formilux.org
-Unsubscribe from the list: haproxy+unsubscribe@formilux.org
-
-Forum and mailing list are correct places for questions about HAProxy or general suggestions
-and topics, e.g. usage or documentation questions! This issue tracker is for tracking bugs and
-feature requests directly relating to the development of the software itself.
-
-Thanks for understanding, and for contributing to the project!
-
--->
-
-## Code Report
-
-<!--
-In this section please provide:
-  1. Information about the tool that generated the report (e.g. valgrind-3.11.0 or Coverity).
-  2. Provide the full output of the tool in code blocks (```).
--->
-
-Tool: (tool name goes here)
-
-```
-(paste your output here)
-```
-
-
-## Output of `haproxy -vv` and `uname -a`
-
-<!--
-Please add the output of haproxy -vv you are currently using here, this helps us
-later to see what has changed in HAProxy when we revisit this issue after some
-time.
-
-Put it in code blocks ```:
--->
-
-```
-(paste your output here)
-```
diff --git a/.github/ISSUE_TEMPLATE/Code-Report.yml b/.github/ISSUE_TEMPLATE/Code-Report.yml
new file mode 100644
index 0000000..41d1dd6
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Code-Report.yml
@@ -0,0 +1,43 @@
+name: Code Report
+description: File a Code Report (for example from coverity or valgrind)
+labels:
+- 'type: code-report'
+body:
+- type: markdown
+  attributes:
+    value: |
+      ## Welcome!
+
+      You are about to *report an issue found using an automated tool*. Please use the 'Bug Report' template if you encountered a regular bug.
+
+      Please use the forum or mailing list if you have a question, e.g. to get help with building a configuration to achieve your desired behavior.
+- type: input
+  id: tool
+  attributes:
+    label: Tool Name and Version
+    description: The name and version of the tool you used (e.g. valgrind-3.13.0, or Coverity)
+  validations:
+    required: true
+- type: textarea
+  id: code-report
+  attributes:
+    label: Code Report
+    description: Please provide the full output of the tool here.
+    render: plain
+  validations:
+    required: true
+- type: textarea
+  id: additional
+  attributes:
+    label: Additional Information
+    description: |
+      Any additional information about your environment (e.g. example configurations to trigger a memory leak).
+- type: textarea
+  id: haproxy-vv
+  attributes:
+    label: 'Output of `haproxy -vv`'
+    render: plain
+    description: |
+      Please add the output of `haproxy -vv` you are currently using here, this helps us later to see what has changed in HAProxy when we revisit this issue after some time.
+  validations:
+    required: true
diff --git a/.github/ISSUE_TEMPLATE/Feature.md b/.github/ISSUE_TEMPLATE/Feature.md
deleted file mode 100644
index eaaa7e5..0000000
--- a/.github/ISSUE_TEMPLATE/Feature.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-name: Feature Request
-about: Suggest a new feature or enhancement for HAProxy.
-labels: 'type: feature'
----
-
-<!--
-
-Welcome! - We kindly ask that you:
-
-  1. Fill out the issue template below - not doing so needs a good reason.
-  2. Use the forum or the mailing list if you have a question rather than a bug or feature request.
-
-The forum is at: https://discourse.haproxy.org/
-
-The mailing list (no need to subscribe) is: haproxy@formilux.org
-Subscribe to the list: haproxy+subscribe@formilux.org
-Unsubscribe from the list: haproxy+unsubscribe@formilux.org
-
-Forum and mailing list are correct places for questions about HAProxy or general suggestions
-and topics, e.g. usage or documentation questions! This issue tracker is for tracking bugs and
-feature requests directly relating to the development of the software itself.
-
-Thanks for understanding, and for contributing to the project!
-
--->
-
-## What should haproxy do differently? Which functionality do you think we should add?
-
-<!--
-Please describe the feature you would like us to add here.
--->
-
-## What are you trying to do?
-
-<!--
-This section should contain a brief description what you're trying to do, which
-would be possible after implementing the new feature.
--->
-
-## Output of `haproxy -vv` and `uname -a`
-
-<!--
-Please add the output of haproxy -vv you are currently using here, this helps us
-later to see what has changed in HAProxy when we revisit this issue after some
-time.
-
-*PLEASE DO NOT LEAVE THIS OUT*
-
-Put it in code blocks ```:
--->
-
-```
-(paste your output here)
-```
diff --git a/.github/ISSUE_TEMPLATE/Feature.yml b/.github/ISSUE_TEMPLATE/Feature.yml
new file mode 100644
index 0000000..8515256
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/Feature.yml
@@ -0,0 +1,50 @@
+name: Feature Request
+description: Suggest a new feature or enhancement for HAProxy.
+labels:
+- 'type: feature'
+body:
+- type: markdown
+  attributes:
+    value: |
+      ## Welcome!
+
+      You are about to *request a feature* you are missing in HAProxy.
+
+      This issue tracker is used to track feature requests and bug reports. Please use [the forum](https://discourse.haproxy.org/) or mailing list if you have a question, e.g. to get help with building a configuration to achieve your desired behavior.
+
+      The forum is at: https://discourse.haproxy.org/
+
+      The mailing list (no need to subscribe) is: haproxy@formilux.org
+      Subscribe to the list: haproxy+subscribe@formilux.org
+      Unsubscribe from the list: haproxy+unsubscribe@formilux.org
+
+      Forum and mailing list are correct places for questions about HAProxy or general suggestions and topics, e.g. usage or documentation questions! This issue tracker is for tracking bugs and feature requests directly relating to the development of the software itself.
+
+      Thanks for understanding, and for contributing to the project!
+- type: textarea
+  id: feature-request
+  attributes:
+    label: Your Feature Request
+    description: |
+      What should HAProxy do differently? Which functionality do you think we should add? Please describe the feature you would like us to add here.
+  validations:
+    required: true
+- type: textarea
+  id: feature-explanation
+  attributes:
+    label: What are you trying to do?
+    description: |
+      This section should contain a brief description what you're trying to do, which would be possible after implementing the new feature.
+  validations:
+    required: true
+- type: textarea
+  id: haproxy-vv
+  attributes:
+    label: 'Output of `haproxy -vv`'
+    render: plain
+    description: >
+      Please add the output of `haproxy -vv` you are currently using here, this helps us later to see what has changed in HAProxy when we revisit this issue after some time.
+
+      Please *do not* enter "future version" or something similar. We are interested in the version you are *currently using*.
+  validations:
+    required: true
diff --git a/.github/ISSUE_TEMPLATE/Question.md b/.github/ISSUE_TEMPLATE/Question.md
deleted file mode 100644
index 99b93e6..0000000
--- a/.github/ISSUE_TEMPLATE/Question.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-name: Question
-about: Do NOT ask questions in the issue tracker. This issue tracker is for tracking bugs and feature requests directly relating to the development of the software itself.
-labels: 'status: invalid'
----
-
-# :stop_sign: HOLD ON :stop_sign:
-
-Do **NOT** ask questions in the issue tracker. This issue tracker is for tracking bugs and
-feature requests directly relating to the development of the software itself.
- 
-Use the forum or the mailing list if you have a question rather than a bug or feature request.
- 
-The forum is at: https://discourse.haproxy.org/
- 
-- The mailing list (no need to subscribe) is: haproxy@formilux.org
-- Subscribe to the list: haproxy+subscribe@formilux.org
-- Unsubscribe from the list: haproxy+unsubscribe@formilux.org
-