diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index b73afaf09..60e90b0da 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -5,12 +5,25 @@ labels: body: - type: textarea attributes: - label: Provide a description of the new feature / enhancement + label: Description of the new feature / enhancement placeholder: | - What is the expected behavior of the proposed feature? - What is the scenario this would be used? + What is the expected behavior of the proposed feature? validations: required: true +- type: textarea + attributes: + label: Scenario when this would be used? + placeholder: | + What is the scenario this would be used? Why is this important to your workflow as a power user? + validations: + required: true +- type: textarea + attributes: + label: Supporting information + placeholder: | + Having additional evidence, data, tweets, blog posts, research, ... anything is extremely helpful. This information provides context to the scenario that may otherwise be lost. + validations: + required: false - type: markdown attributes: value: | diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2a1385a3a..0dc0cc42a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,20 +1,18 @@ -# Power Toys Contributor's Guide +# PowerToys Contributor's Guide -Below is our guidance for how to report issues, propose new features, and submit contributions via Pull Requests (PRs). +Below is our guidance for how to report issues, propose new features, and submit contributions via Pull Requests (PRs). Our philosophy is heavily based around understanding the problem and scenarios first, this is why we follow this pattern before work has started. -## Before you start, file an issue +1. There is an issue +2. There has been a conversation +3. There is agreement on the problem, the fit for PowerToys, and the solution to the problem (implementation) + +## Filing an issue Please follow this simple rule to help us eliminate any unnecessary wasted effort & frustration, and ensure an efficient and effective use of everyone's time - yours, ours, and other community members': > 👉 If you have a question, think you've discovered an issue, would like to propose a new feature, etc., then find/file an issue **BEFORE** starting work to fix/implement it. -### Search existing issues first - -Before filing a new issue, search existing open and closed issues first: It is likely someone else has found the problem you're seeing, and someone may be working on or have already contributed a fix! - -If no existing item describes your issue/feature, great - please file a new issue: - -### File a new Issue +When requesting new features / enhancements, understanding problem and scenario around it is extremely important. Having additional evidence, data, tweets, blog posts, research, ... anything is extremely helpful. This information provides context to the scenario that may otherwise be lost. * Don't know whether you're reporting an issue or requesting a feature? File an issue * Have a question that you don't see answered in docs, videos, etc.? File an issue @@ -23,81 +21,29 @@ If no existing item describes your issue/feature, great - please file a new issu * Don't understand how to do something? File an issue/Community Guidance Request * Found an existing issue that describes yours? Great - upvote and add additional commentary / info / repro-steps / etc. -### Complete the template +A quick search before filing an issue also could be helpful. It is likely someone else has found the problem you're seeing, and someone may be working on or have already contributed a fix! -**Please include as much information as possible in your issue**. The more information you provide, the more likely your issue/ask will be understood and implemented. Helpful information includes: +### How to tell the PowerToys team this is an interesting thing to focus on -* What device you're running (inc. CPU type, memory, disk, etc.) -* What build of Windows your device is running - - 👉 Tip: Run the following in PowerShell Core - - ```powershell - C:\> $PSVersionTable.OS - Microsoft Windows 10.0.18909 - ``` - - ... or in Windows PowerShell - - ```powershell - C:\> $PSVersionTable.BuildVersion - - Major Minor Build Revision - ----- ----- ----- -------- - 10 0 18912 1001 - ``` - - ... or Cmd: - - ```cmd - C:\> ver - - Microsoft Windows [Version 10.0.18900.1001] - ``` - -* What tools and apps you're using (e.g. VS 2019, VSCode, etc.) -* Don't assume we're experts in setting up YOUR environment and don't assume we are experts in YOUR workflow. Teach us to help you! -* **We LOVE detailed repro steps!** What steps do we need to take to reproduce the issue? Assume we love to read repro steps. As much detail as you can stand is probably _barely_ enough detail for us! -* Prefer error message text where possible or screenshots of errors if text cannot be captured -* **If you intend to implement the fix/feature yourself then say so!** If you do not indicate otherwise we will assume that the issue is ours to solve, or may label the issue as `Help-Wanted`. - -### DO NOT post "+1" comments - -> ⚠ DO NOT post "+1", "me too", or similar comments - they just add noise to an issue. - -If you don't have any additional info/context to add but would like to indicate that you're affected by the issue, upvote the original issue by clicking its [+😊] button and hitting 👍 (+1) icon. This way we can actually measure how impactful an issue is. +Upvote the original issue by clicking its [+😊] button and hitting 👍 (+1) icon or a different one. This way allows us to measure how impactful different issues are compared to others. The issue with comments like "+1", "me too", or similar is they actually make it harder to have a conversation and harder to quickly determine trending important requests. --- ## Contributing fixes / features -For those able & willing to help fix issues and/or implement features ... +Please comment on an issue to let us know you're interested in working on something before you start the work. Not only does this avoid multiple people unexpectedly working on the same thing at the same time but it enables us to make sure everyone is clear on what should be done to implement any new functionality. It's less work for everyone, in the long run, to establish this up front. ### To Spec or not to Spec -Some issues/features may be quick and simple to describe and understand. For such scenarios, once a team member has agreed with your approach, skip ahead to the section headed "Fork, Branch, and Create your PR", below. +A key point is for everyone to understand the approach that will be taken. We want to be sure if anyone does work, we will accept it in. Items that are larger in scope we'll want some type of spec to understand what is being planned and have a discussion. Specs help collaborators discuss different approaches to solve a problem, describe how the feature will behave, how the feature will impact the user, what happens if something goes wrong, etc. Driving towards agreement in a spec, before any code is written, often results in simpler code, and less wasted effort in the long run. -Small issues that do not require a spec will be labelled Issue-Bug or Issue-Task. - -However, some issues/features will require careful thought & formal design before implementation. For these scenarios, we'll request that a spec is written and the associated issue will be labeled Issue-Feature. - -Specs help collaborators discuss different approaches to solve a problem, describe how the feature will behave, how the feature will impact the user, what happens if something goes wrong, etc. Driving towards agreement in a spec, before any code is written, often results in simpler code, and less wasted effort in the long run. - -Specs will be managed in a very similar manner as code contributions so please follow the "Fork, Branch and Create your PR" below. - -### Writing / Contributing-to a Spec - -To write/contribute to a spec: fork, branch and commit via PRs, as you would with any code changes. - -Specs are written in markdown, stored under the `doc/specs` folder and named `[issue id] - [spec description].md`. - -👉 **It is important to follow the spec templates and complete the requested information**. The available spec templates will help ensure that specs contain the minimum information & decisions necessary to permit development to begin. In particular, specs require you to confirm that you've already discussed the issue/idea with the team in an issue and that you provide the issue ID for reference. +For such scenarios, once a team member has agreed with your approach, skip ahead to the section headed "Development" section below. Team members will be happy to help review specs and guide them to completion. ### Help Wanted -Once the team have approved an issue/spec, development can proceed. If no developers are immediately available, the spec can be parked ready for a developer to get started. Parked specs' issues will be labeled "Help Wanted". To find a list of development opportunities waiting for developer involvement, visit the Issues and filter on [the Help-Wanted label](https://github.com/microsoft/PowerToys/labels/Help%20Wanted). +Once the team has approved an issue/spec approach to solving, development can proceed. If no developers are immediately available, the spec can be parked ready for a developer to get started. Parked specs' issues will be labeled "Help Wanted". To find a list of development opportunities waiting for developer involvement, visit the Issues and filter on [the Help-Wanted label](https://github.com/microsoft/PowerToys/labels/Help%20Wanted). --- @@ -105,6 +51,9 @@ Once the team have approved an issue/spec, development can proceed. If no develo Follow the [development guidelines](https://github.com/microsoft/PowerToys/blob/master/doc/devdocs/readme.md). +### Naming of features and functionality + +Naming should be descriptive and straight forward. We want names to be clear about functionality and usefulness moving forward. ### How can I become a collaborator on the PowerToys team