diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 5d900779e..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,32 +0,0 @@ -Note: the following is not mandatory, just a guideline. Feel free to describe your bug report or suggestion in another way. - -### Description - -Please provide a succinct description of your issue. - -### Repro steps - -Please provide the steps required to reproduce the problem - -1. Step A - -2. Step B - -### Expected behavior - -Please provide a description of the behavior you expect. - -### Actual behavior - -Please provide a description of the actual behavior you observe. - -### Known workarounds - -Please provide a description of any known workarounds. - -### Related information - -* Operating system -* Branch -* .NET Runtime, CoreCLR or Mono Version -* Performance information, links to performance testing scripts diff --git a/.github/ISSUE_TEMPLATE/01_bug_report.yml b/.github/ISSUE_TEMPLATE/01_bug_report.yml new file mode 100644 index 000000000..7d79155c3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01_bug_report.yml @@ -0,0 +1,76 @@ +name: 🐞 Bug Report +description: Create a report to help us improve +labels: ["bug", "triage"] +body: + - type: markdown + attributes: + value: | + Note: the following is not mandatory, just a guideline. Feel free to describe your bug report or suggestion in another way. + - type: textarea + id: background + attributes: + label: Description + description: Please provide a succinct description of your issue. + placeholder: Description + validations: + required: true + - type: textarea + id: known-workarounds + attributes: + label: Known Workarounds + description: Please provide a description of any known workarounds. + placeholder: Known Workarounds + validations: + required: false + - type: textarea + id: expected-behavior + attributes: + label: Expected behavior + description: Provide a description of the expected behavior. + placeholder: Expected behavior + validations: + required: false + - type: textarea + id: actual-behavior + attributes: + label: Actual behavior + description: | + Provide a description of the actual behavior observed. If applicable please include any error messages or exception stack-traces. + placeholder: Actual behavior + validations: + required: false + - type: textarea + id: configuration + attributes: + label: Configuration + description: | + Please provide more information on your .NET configuration: + * Operating system + * Branch/Version + * .NET Runtime, CoreCLR or Mono Version + * Performance information, links to performance testing scripts + placeholder: Configuration + validations: + required: false + - type: textarea + id: repro-steps + attributes: + label: Reproduction Steps + description: | + Please include minimal steps to reproduce the problem if possible. E.g.: the smallest possible code snippet; or a small project, with steps to run it. + Always include text as text rather than screenshots so code can easily be copied and will show up in searches. + Stack Overflow has a great article about [how to create a minimal, reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). + placeholder: Minimal Reproduction + validations: + required: false + - type: dropdown + id: pull-request + attributes: + label: Are you willing to help with a pull-request? + description: | + Make sure you have read the sections about [contributing changes](https://github.com/fsprojects/FSharpPlus/blob/master/DEVELOPER_GUIDE.md) and [design guidelines](https://github.com/fsprojects/FSharpPlus/blob/master/DESIGN_GUIDELINES.md). + options: + - "No" + - "Yes, please assign this issue to me." + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/02_api_proposal.yml b/.github/ISSUE_TEMPLATE/02_api_proposal.yml new file mode 100644 index 000000000..3193c71d3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02_api_proposal.yml @@ -0,0 +1,66 @@ +name: 💡 API Suggestion +description: Propose a change to the public API surface +title: "[API Proposal]: " +labels: [api-suggestion] +body: + - type: markdown + attributes: + value: | + We welcome API proposals! We have a process to evaluate the value and shape of new API. This template will help us gather the information we need to start the review process. + - type: textarea + id: background + attributes: + label: Background and motivation + description: Please describe the purpose and value of the new API here. + placeholder: Purpose + validations: + required: true + - type: textarea + id: api-proposal + attributes: + label: API Proposal + description: | + Please provide the specific public API signature diff that you are proposing. + placeholder: API declaration (no function bodies) + validations: + required: true + - type: textarea + id: api-usage + attributes: + label: API Usage + description: | + Please provide code examples that highlight how the proposed API additions are meant to be consumed. This will help suggest whether the API has the right shape to be functional, performant and usable. + placeholder: API usage + validations: + required: true + - type: textarea + id: alternative-designs + attributes: + label: Alternative Designs + description: | + Please provide alternative designs. This might not be APIs; for example instead of providing new APIs an option might be to change the behavior of an existing API. + placeholder: Alternative designs + validations: + required: false + - type: textarea + id: risks + attributes: + label: Risks + description: | + Please mention any risks that to your knowledge the API proposal might entail, such as breaking changes, performance regressions, etc. + placeholder: Risks + validations: + required: false + - type: dropdown + id: pull-request + attributes: + label: Are you willing to help with a proof-of-concept (as PR in that or a separate repo) first and as pull-request later on? + description: | + This is mainly to help demonstrate your suggestion. + Make sure you have read the sections about [contributing changes](https://github.com/fsprojects/FSharpPlus/blob/master/DEVELOPER_GUIDE.md) and [design guidelines](https://github.com/fsprojects/FSharpPlus/blob/master/DESIGN_GUIDELINES.md). + Beware we might not accept the PR as is, but it will help us understand your suggestion better. + options: + - "No" + - "Yes, please assign this issue to me." + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/03_general_feature.yml b/.github/ISSUE_TEMPLATE/03_general_feature.yml new file mode 100644 index 000000000..662c7afa8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03_general_feature.yml @@ -0,0 +1,38 @@ +name: 💡 General feature (not including API proposals) +description: Discuss a new feature that does not change the public API surface +title: "[Feature]: " +labels: [feature, triage] +body: + - type: markdown + attributes: + value: | + You have an idea for a new feature? Cool, let's discuss it. + - type: textarea + id: background + attributes: + label: Background and motivation + description: Please describe the purpose of the new feature. + placeholder: Purpose + validations: + required: true + - type: textarea + id: alternative-concerns + attributes: + label: Alternative Concerns + description: | + Please provide alternatives you have thought about. + placeholder: Alternative designs + validations: + required: false + - type: dropdown + id: pull-request + attributes: + label: Are you willing help with a pull-request? + description: | + Make sure you have read the sections about [contributing changes](https://github.com/fsprojects/FSharpPlus/blob/master/DEVELOPER_GUIDE.md) and [design guidelines](https://github.com/fsprojects/FSharpPlus/blob/master/DESIGN_GUIDELINES.md). + Beware we might not accept the PR as is, but it will help us understand your suggestion better. + options: + - "No" + - "Yes, please assign this issue to me." + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..bdd77cd91 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: true +contact_links: + - name: 📚 Documentation + url: https://fsprojects.github.io/FSharpPlus/ + about: Read our documentation. + - name: 💬 Ask on Stack Overflow + url: https://stackoverflow.com/questions/tagged/f%23%2b + about: The best place for asking general purpose questions. diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 000000000..776677cbf --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,29 @@ +changelog: + exclude: + labels: + - changelog-ignore + authors: [ ] + categories: + - title: Breaking Changes + labels: + - "breaking change" + - title: New features + labels: + - "feature" + - title: Improvements + labels: + - "enhancement" + - "performance" + - title: Fixes + labels: + - "bug" + - "regression" + - title: Fixes (extensibility) + labels: + - "extensibility" + - title: Documentation + labels: + - "documentation" + - title: Others + labels: + - "*" diff --git a/FSharpPlus.sln b/FSharpPlus.sln index d29d962dc..e0a51372d 100644 --- a/FSharpPlus.sln +++ b/FSharpPlus.sln @@ -112,6 +112,25 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{ docsrc\tools\templates\abstractions.plantuml = docsrc\tools\templates\abstractions.plantuml EndProjectSection EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".github", ".github", "{153F4C68-EF70-4CF2-AA64-73482955999F}" + ProjectSection(SolutionItems) = preProject + .github\release.yml = .github\release.yml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{877F7C02-2F44-4314-AA00-3F5C4FFEC187}" + ProjectSection(SolutionItems) = preProject + .github\workflows\dotnetcore.yml = .github\workflows\dotnetcore.yml + .github\workflows\fable.yml = .github\workflows\fable.yml + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ISSUE_TEMPLATE", "ISSUE_TEMPLATE", "{B9238B1E-C83C-4196-8C86-DA3E2CCDA309}" + ProjectSection(SolutionItems) = preProject + .github\ISSUE_TEMPLATE\config.yml = .github\ISSUE_TEMPLATE\config.yml + .github\ISSUE_TEMPLATE\01_bug_report.yml = .github\ISSUE_TEMPLATE\01_bug_report.yml + .github\ISSUE_TEMPLATE\02_api_proposal.yml = .github\ISSUE_TEMPLATE\02_api_proposal.yml + .github\ISSUE_TEMPLATE\03_general_feature.yml = .github\ISSUE_TEMPLATE\03_general_feature.yml + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -225,6 +244,8 @@ Global {EEFF08EB-8B0C-4F63-9425-4281EFF12087} = {ED8079DD-2B06-4030-9F0F-DC548F98E1C4} {ACBBD11E-0746-4B9D-9CED-A90FE5824CE2} = {83F16175-43B1-4C90-A1EE-8E351C33435D} {F4D5D32F-D47A-4727-8965-80A4BB7A29DD} = {A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1} + {877F7C02-2F44-4314-AA00-3F5C4FFEC187} = {153F4C68-EF70-4CF2-AA64-73482955999F} + {B9238B1E-C83C-4196-8C86-DA3E2CCDA309} = {153F4C68-EF70-4CF2-AA64-73482955999F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {789B5FFA-7891-4F60-831E-42C3C5ED2C51}