# 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: Feature request
description: Suggest an idea for this project
title: "[Feature request] "
labels: [ "type/feature-request" ]
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/iotdb/issues) to check if your issue has already been reported.
      options:
        - label: >
            I searched in the [issues](https://github.com/apache/iotdb/issues) and found nothing similar.
          required: true

  - type: textarea
    attributes:
      label: Motivation
      description: Describe the motivations for this enhancement. Ex. I'm always frustrated when [...]
    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.

  - type: checkboxes
    attributes:
      label: Are you willing to submit a PR?
      description: >
        We look forward to the community of developers or users helping solve IoTDB 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!"