# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: Enhancement
description: Add new feature, improve code, and more
labels: [ "type/enhancement" ]
body:
  - type: markdown
    attributes:
      value: |
        Thank you very much for your enhancement!
  - type: checkboxes
    attributes:
      label: Search before asking
      description: >
        Please search [issues](https://github.com/apache/pulsar/issues) to check if your issue has already been reported.
      options:
        - label: >
            I searched in the [issues](https://github.com/apache/pulsar/issues) and found nothing similar.
          required: true
  - type: textarea
    attributes:
      label: Motivation
      description: Describe the motivations for this enhancement.
    validations:
      required: true
  - type: textarea
    attributes:
      label: Solution
      description: Describe the proposed solution and add related materials like links if any.
  - type: textarea
    attributes:
      label: Alternatives
      description: Describe other alternative solutions or features you considered, but rejected.
  - type: textarea
    attributes:
      label: Anything else?
  - type: checkboxes
    attributes:
      label: Are you willing to submit a PR?
      description: >
        We look forward to the community of developers or users helping solve Pulsar problems together. If you are willing to submit a PR to implement the enhancement, please check the box.
      options:
        - label: I'm willing to submit a PR!
  - type: markdown
    attributes:
      value: "Thanks for completing our form!"
