From 1ba2960f5c5df9de4c079c97644e9af7bf34385b Mon Sep 17 00:00:00 2001 From: Joey Aiello Date: Fri, 28 May 2021 11:12:30 -0700 Subject: [PATCH] Updated governance: Working Groups (WGs) (#14603) --- .spelling | 13 + docs/community/governance.md | 56 +- docs/community/process_diagram.svg | 1413 +++++++++++++++++++ docs/community/process_diagram.vsdx | Bin 0 -> 52916 bytes docs/community/working-group-definitions.md | 188 +++ docs/community/working-group.md | 190 +++ docs/maintainers/issue-management.md | 41 +- 7 files changed, 1860 insertions(+), 41 deletions(-) create mode 100644 docs/community/process_diagram.svg create mode 100644 docs/community/process_diagram.vsdx create mode 100644 docs/community/working-group-definitions.md create mode 100644 docs/community/working-group.md diff --git a/.spelling b/.spelling index 5e7191101..b0e164161 100644 --- a/.spelling +++ b/.spelling @@ -1068,6 +1068,19 @@ MultipleServiceCommandBase.AllServices JustinGrote Newtonsoft.Json minSize +WGs +wg-definitions +thejasonhelmick +winps +componentization +CimCmdlets +Microsoft.PowerShell.Host +PSDiagnostics +nightlies +wg +Visio +triaged +lifecycle - CHANGELOG.md aavdberg asrosent diff --git a/docs/community/governance.md b/docs/community/governance.md index d32cceb39..42e974559 100644 --- a/docs/community/governance.md +++ b/docs/community/governance.md @@ -5,10 +5,10 @@ * [**PowerShell Committee**](#powershell-committee): A committee of project owners who are responsible for design decisions, approving [RFCs][RFC-repo], and approving new maintainers/committee members * [**Repository maintainer**](#repository-maintainers): An individual responsible for merging pull requests (PRs) into `master` when all requirements are met (code review, tests, docs, and RFC approval as applicable). - Repository Maintainers are the only people with write permissions for the `master` branch. -* [**Area experts**](#area-experts): People who are experts for specific components (e.g. PSReadline, the parser) or technologies (e.g. security, performance). - Area experts are responsible for code reviews, issue triage, and providing their expertise to others. +* [**Working Groups (WGs)**](#working-groups-(wgs)) are collections of contributors responsible for + providing expertise on a specific area of PowerShell in order to help establish consensus within + the community and Committee. * **Corporation**: The Corporation owns the PowerShell repository and, under extreme circumstances, reserves the right to dissolve or reform the PowerShell Committee, the Project Leads, and the Corporate Maintainer. The Corporation for PowerShell is Microsoft. @@ -90,9 +90,13 @@ One of their primary responsibilities is merging pull requests after all require For more information on Repository Maintainers--their responsibilities, who they are, and how one becomes a Maintainer--see the [README for Repository Maintainers][maintainers]. -## Area Experts +## Working Groups (WGs) -Area Experts are people with knowledge of specific components or technologies in the PowerShell domain. They are responsible for code reviews, issue triage, and providing their expertise to others. +[Working Groups (WGs)][wg] are collections of contributors with knowledge of specific components or +technologies in the PowerShell domain. +They are responsible for issue triage/acceptance, code reviews, and providing their expertise to +others in issues, PRs, and RFC discussions, +as well as to the Committee when said expertise is helpful in broader discussions. They have [write access](https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization) to the PowerShell repository which gives them the power to: @@ -100,26 +104,31 @@ They have [write access](https://docs.github.com/en/free-pro-team@latest/github/ 1. Merge pull requests to all branches *except* `master` (though this should not be common given that [`master`is the only long-living branch](../git/README.md#understand-branches)). 1. Assign labels, milestones, and people to [issues](https://guides.github.com/features/issues/). -A list of Area Experts can be found [here][experts]. +### Working Group Responsibilities -### Area Expert Responsibilities +If you are a member of a Working Group, you are expected to be actively involved in any development, design, or contributions in the focus area of the WG. +More information on the responsibilities of Working Groups can be found [here][wg], +while current WG definitions and membership can be found [here][wg-definitions]. -If you are an Area Expert, you are expected to be actively involved in any development, design, or contributions in your area of expertise. +If you are a Working Group member: -If you are an Area Expert: - -1. **DO** assign the [correct labels][issue-process] -1. **DO** assign yourself to issues labeled with your area of expertise -1. **DO** code reviews for issues where you're assigned or in your areas of expertise. -1. **DO** reply to new issues and pull requests that are related to your area of expertise - (while reviewing PRs, leave your comment even if everything looks good - a simple "Looks good to me" or "LGTM" will suffice, so that we know someone has already taken a look at it). -1. **DO** make sure contributors are following the [contributor guidelines](../../.github/CONTRIBUTING.md). -1. **DO** ask people to resend a pull request, if it [doesn't target `master`](../../.github/CONTRIBUTING.md#lifecycle-of-a-pull-request). -1. **DO** ensure that contributors [write Pester tests][pester] for all new/changed functionality -1. **DO** ensure that contributors [write documentation][docs-contributing] for all new-/changed functionality -1. **DO** encourage contributors to refer to issues in their pull request description (e.g. `Resolves issue #123`). -1. **DO** encourage contributors to create meaningful titles for all PRs. Edit title if necessary. -1. **DO** verify that all contributors are following the [Coding Guidelines](../dev-process/coding-guidelines.md). +1. **DO** triage and contribute to discussions in issues and PRs that have `WG-*` labels assigned +1. **DO** regularly communicate with other members of your WG to coordinate decisions about + whether issues should move forward +1. **DO** make decisions on whether or not issues should proceed forward with implementations or RFCs +1. **DO** assign the [correct labels][issue-process] to issues +1. **DO** assign yourself to issues and PRs labeled with your area of expertise only when you are actively + working on or implementing them +1. **DO** code reviews for PRs where you're assigned or in your WG + (while reviewing PRs, leave your comment even if everything looks good - a simple "Looks good to me" or "LGTM" will suffice, so that we know someone has already taken a look at it). +1. **DO** ensure that contributors are following the [contributor guidelines](../../.github/CONTRIBUTING.md) + and [Code of Conduct](https://github.com/PowerShell/PowerShell/blob/master/CODE_OF_CONDUCT.md) +1. **DO** ensure that contributions [include Pester tests][pester] for all new/changed functionality +1. **DO** ensure that contributions [include documentation][docs-contributing] for all new-/changed functionality +1. **DO** encourage contributions to refer to issues in their pull request description (e.g. `Resolves issue #123`) +1. **DO** encourage contributions to have meaningful titles for all PRs, + editing their title if necessary to ensure that changelogs convey useful and accurate information +1. **DO** verify that all contributions are following the [Coding Guidelines](../dev-process/coding-guidelines.md) 1. **DON'T** create new features, new designs, or change behaviors without following the [RFC][RFC-repo] or approval process @@ -138,4 +147,5 @@ See our [Pull Request Process][pull-request-process] [pull-request-process]: ../../.github/CONTRIBUTING.md#lifecycle-of-a-pull-request [docs-contributing]: https://github.com/PowerShell/PowerShell-Docs/blob/staging/CONTRIBUTING.md [maintainers]: ../maintainers/README.md -[experts]: ../../.github/CODEOWNERS +[wg]: ./working-group.md +[wg-defintions]: ./working-group-definitions.md diff --git a/docs/community/process_diagram.svg b/docs/community/process_diagram.svg new file mode 100644 index 000000000..f1e5df160 --- /dev/null +++ b/docs/community/process_diagram.svg @@ -0,0 +1,1413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page-1 + + + + + Start/End + User has idea! + + + + + + + + + + + + + + + + + + + User has idea! + + Dynamic connector + + + + Process + User files issue with rationale and use cases + + + + + + + + + + + + + + + + + + + User files issue with rationale and use cases + + Dynamic connector.9 + + + + Process.8 + Maintainers label issue with Area Label + + + + + + + + + + + + + + + + + + + Maintainers label issue with Area Label + + Dynamic connector.13 + No + + + + + No + + Process.12 + Users discuss idea “exhaustively” (TBD by WGs) + + + + + + + + + + + + + + + + + + + Users discuss idea exhaustively” (TBD by WGs) + + Dynamic connector.15 + + + + Decision + Do the WGs think the idea has potential / is worth pursuing? + + + + + + + + + + + + + + + + + + + Do the WGs think the idea has potential / is worth pursuing? + + Dynamic connector.23 + No + + + + + No + + Subprocess + Committee appeals process (TBD) + + + + + + + + + + + + + + + + + + + + + + + Committee appeals process (TBD) + + Dynamic connector.27 + Appeal unsuccessful + + + + + Appeal unsuccessful + + Start/End.26 + Issue is closed, idea not pursued within PS repo + + + + + + + + + + + + + + + + + + + + Issue is closed, idea not pursued within PS repo + + Dynamic connector.30 + Successful appeal + + + + + Successful appeal + + Process.32 + Implement and release the implementation outside of PS + + + + + + + + + + + + + + + + + + + Implement and release the implementation outside of PS + + Process.43 + WGs label “RFC required”; Both paths are (eventually) require... + + + + + + + + + + + + + + + + + + + + WGs label “RFC required”; Both paths are (eventually) required; author(s) can choose to do in any order + + Dynamic connector.46 + + + + Process.45 + Contributor writes and publishes RFC as draft PR in PowerShel... + + + + + + + + + + + + + + + + + + + + Contributor writes and publishes RFC as draft PR in PowerShell-RFC(add reference in original issue) + + Dynamic connector.48 + + + + Process.47 + Contributor publishes PR with WIP and/or prototype code as dr... + + + + + + + + + + + + + + + + + + + + Contributor publishes PR with WIP and/or prototype code as draft PR in PowerShell repo(add reference in original issue, Maintainers add `Proposal` label) + + Dynamic connector.50 + + + + Process.49 + WGs, contributors, and any others have discussion about RFC f... + + + + + + + + + + + + + + + + + + + WGs, contributors, and any others have discussion about RFC for >= 2 months + + Dynamic connector.52 + + + + Process.51 + Author marks RFC PR as non-draft + + + + + + + + + + + + + + + + + + + Author marks RFC PR as non-draft + + Dynamic connector.56 + + + + Decision.55 + Does the code PR meet WG and Maintainer standards? + + + + + + + + + + + + + + + + + + + + Does the code PR meet WG and Maintainer standards? + + Decision.65 + Is the RFC accepted and matching the implemen-tation? + + + + + + + + + + + + + + + + + + + + Is the RFC accepted and matching the implemen-tation? + + Dynamic connector.67 + No + + + + + No + + Dynamic connector.69 + + + + Start/End.68 + Merge as non-experimental code + + + + + + + + + + + + + + + + + + + Merge as non-experimental code + + Dynamic connector.71 + + + + Process.70 + Committee review + + + + + + + + + + + + + + + + + + + Committee review + + Decision.75 + Does the RFC contain all necessary info to merge as experimen... + + + + + + + + + + + + + + + + + + + + Does the RFC contain all necessary info to merge as experimental? + + Decision.77 + Committee votes to approve RFC + + + + + + + + + + + + + + + + + + + Committee votes to approve RFC + + Dynamic connector.79 + Reject + + + + + Reject + + Process.80 + RFC author adds additional info + + + + + + + + + + + + + + + + + + + RFC author adds additional info + + Dynamic connector.87 + Approve + + + + + Approve + + Decision.86 + Is the code ready to go? + + + + + + + + + + + + + + + + + + + Is the code ready to go? + + Dynamic connector.88 + Yes + + + + + Yes + + Dynamic connector.90 + No + + + + + No + + Decision.36 + Do you still think it needs to be in the PS package? + + + + + + + + + + + + + + + + + + + + Do you still think it needs to be in the PS package? + + Dynamic connector.1012 + Yes + + + + + Yes + + Decision.1006 + Can the idea be implemented outside of the PS code repo? + + + + + + + + + + + + + + + + + + + + Can the idea be implemented outside of the PS code repo? + + Dynamic connector.1007 + + + + Dynamic connector.1008 + Yes + + + + + Yes + + Dynamic connector.1001 + + + + Dynamic connector.1014 + + + + Decision.1015 + Do the WGs think an RFC is required? + + + + + + + + + + + + + + + + + + + Do the WGs think an RFC is required? + + Dynamic connector.1016 + Yes + + + + + Yes + + Dynamic connector.1017 + Yes + + + + + Yes + + Dynamic connector.1019 + No + + + + + No + + Process.1018 + WGs label “RFC not required”; Contributor opens a PR to be re... + + + + + + + + + + + + + + + + + + + + WGs label “RFC not required”; Contributor opens a PR to be reviewed by WGs and merged by maintainers + + Dynamic connector.1020 + Yes + + + + + Yes + + Process.1021 + Committee labels RFC PR with “Experimental - Approved” + + + + + + + + + + + + + + + + + + + Committee labels RFC PR with Experimental - Approved + + Dynamic connector.1023 + No + + + + + No + + Dynamic connector.1024 + + + + Dynamic connector.1026 + Yes + + + + + Yes + + Decision.1025 + Has the RFC been marked with “Experimental - Approved”? + + + + + + + + + + + + + + + + + + + + Has the RFC been marked with Experimental - Approved”? + + Dynamic connector.1028 + Yes + + + + + Yes + + Process.1027 + Merge code PR as Experimental Feature + + + + + + + + + + + + + + + + + + + Merge code PR as Experimental Feature + + Dynamic connector.1029 + No + + + + + No + + Dynamic connector.1031 + No + + + + + No + + Process.1030 + Contributor updates code PR based on feedback + + + + + + + + + + + + + + + + + + + Contributor updates code PR based on feedback + + Dynamic connector.1033 + + + + Decision.1032 + Has the code PR been merged as experimental? + + + + + + + + + + + + + + + + + + + + Has the code PR been merged as experimental? + + Dynamic connector.1034 + No + + + + + No + + Dynamic connector.1036 + Yes + + + + + Yes + + Decision.1035 + Does the Committee believe the experimental feature has had e... + + + + + + + + + + + + + + + + + + + + Does the Committee believe the experimental feature has had enough time to bake? + + Dynamic connector.1037 + Yes + + + + + Yes + + Dynamic connector.1038 + + + + Dynamic connector.1040 + + + + Decision.1039 + Does the Committee think the intent of the RFC is reasonable ... + + + + + + + + + + + + + + + + + + + + Does the Committee think the intent of the RFC is reasonable to pursue + + Dynamic connector.1041 + Yes + + + + + Yes + + Dynamic connector.1043 + No + + + + + No + + Start/End.1042 + Process stops + + + + + + + + + + + + + + + + + + + Process stops + + diff --git a/docs/community/process_diagram.vsdx b/docs/community/process_diagram.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..014c28fa43dc10122fcdd405a56867f857298d6f GIT binary patch literal 52916 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 Experimental -> Accepted/Final). +However, it was difficult to reconcile this process with the benefits of PR reviews. + +With the introduction of Draft PRs on GitHub, we are reorienting the acceptance process around the PR itself. +Going forward, an RFC will have three stages: + +1. A Draft PR, denoting that the RFC is still in the review period, openly soliciting comments, + and that it may continue to be significantly iterated upon with revisions, edits, and responses to + community feedback or concerns. +1. After a minimum of two months of discussion, the RFC/PR author marks the PR as + [ready for review](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/changing-the-stage-of-a-pull-request), + upon which the RFC will enter the Committee's review queue to discuss the RFC contents and comments, + and make a decision on whether it is reasonable to pursue. + If after this review, the Committee determines that the intent of the RFC is not reasonable + (e.g. there may be irreconcilable issues with the design, + or the intent may not fit with the principles of PowerShell), + they will reject the PR and the process terminates. +1. In most cases, the Committee will choose to wait for the code PR to be merged as experimental, + and leverage user feedback or telemetry to determine if the RFC PR should be merged. +1. Finally, the Committee will choose to either merge or close the RFC PR, + marking the RFC as either accepted or rejected, respectively. + +#### Experiments + +Often times, implementing an idea can demonstrate opportunities or challenges that were not well +understood when the idea was formulated. +Similarly, a "simple" code change can have far reaching effects that are not well understood +until you're able to experiment with an idea within working code. + +To that end, it's required that *some* implementation exist before the Committee will consider an +RFC for acceptance. +That way, contributors can compile the PR branch to play with a working iteration of the idea +as a way to understand whether the feature is working as expected and valuable. + +In most cases, as long as an RFC has already been written and published as a draft, +Working Groups or the Committee will approve the feature for incorporation as an experimental feature, +so that it can be trialed with greater usage as part of a preview release. +In addition to increasing the scope of those who can provide real-world feedback on the feature, +this enables us to use telemetry to understand if users are turning off the feature in large numbers. + +Note: today, this will be done on a case-by-case basis, but over time, the Committee will establish +firmer guidelines around when PRs should be merged as experimental. + +Experiments should be complete to the extent that they serve as reasonable indicators of the user experience. +In the case that breaking changes are required of the feature, the break should be made in the prototype +so that users can experiment with whether or not the break has a significant negative effect. diff --git a/docs/maintainers/issue-management.md b/docs/maintainers/issue-management.md index 4021d44c8..0cc8eb00e 100644 --- a/docs/maintainers/issue-management.md +++ b/docs/maintainers/issue-management.md @@ -7,6 +7,8 @@ first follow the [vulnerability issue reporting policy](../../.github/SECURITY.m ## Long-living issue labels +Issue labels for PowerShell/PowerShell can be found [here](https://github.com/powershell/powershell/labels). + ### Issue and PR Labels Issues are opened for many different reasons. @@ -37,32 +39,35 @@ When an issue is resolved, the following labels are used to describe the resolut ### Feature areas -These labels describe what feature area of PowerShell that an issue affects: +These labels describe what feature area of PowerShell that an issue affects. +Those labels denoted by `WG-*` are owned by a Working Group (WG) defined +[here](../community/working-group-definitions.md): -* `Area-Build`: build issues +* `Area-Maintainers-Build`: build issues * `Area-Cmdlets-Core`: cmdlets in the Microsoft.PowerShell.Core module * `Area-Cmdlets-Utility`: cmdlets in the Microsoft.PowerShell.Utility module * `Area-Cmdlets-Management`: cmdlets in the Microsoft.PowerShell.Management module -* `Area-Console`: the console experience -* `Area-Debugging`: debugging PowerShell script -* `Area-Demo`: a demo or sample * `Area-Documentation`: PowerShell *repo* documentation issues, general PowerShell doc issues go [here](https://github.com/PowerShell/PowerShell-Docs/issues) * `Area-DSC`: DSC related issues -* `Area-Engine`: core PowerShell engine, interpreter, runtime -* `Area-HelpSystem`: anything related to the help infrastructure and formatting of help -* `Area-Intellisense`: tab completion -* `Area-Language`: parser, language semantics -* `Area-OMI`: OMI -* `Area-PackageManagement`: PackageManagement related issues -* `Area-Performance`: a performance issue -* `Area-Portability`: anything affecting script portability * `Area-PowerShellGet`: PowerShellGet related issues -* `Area-Providers`: PowerShell providers such as FileSystem, Certificates, Registry, etc... -* `Area-PSReadline`: PSReadline related issues -* `Area-Remoting`: PSRP issues with any transport layer -* `Area-Security`: security related areas such as [JEA](https://github.com/powershell/JEA) * `Area-SideBySide`: side by side support -* `Area-Test`: issues in a test or in test infrastructure +* `WG-DevEx-Portability`: anything related to authoring cross-platform or cross-architecture + modules, cmdlets, and scripts +* `WG-DevEx-SDK`: anything related to hosting PowerShell as a runtime, PowerShell's APIs, + PowerShell Standard, or the development of modules and cmdlets +* `WG-Engine`: core PowerShell engine, interpreter, and runtime +* `WG-Engine-Performance`: core PowerShell engine, interpreter, and runtime performance +* `WG-Engine-Providers`: built-in PowerShell providers such as FileSystem, Certificates, + Registry, etc. (or anything returned by `Get-PSProvider`) +* `WG-Interactive-Console`: the console experience +* `WG-Interactive-Debugging`: debugging PowerShell script +* `WG-Interactive-HelpSystem`: anything related to the help infrastructure and formatting of help +* `WG-Interactive-IntelliSense`: tab completion +* `WG-Interactive-PSReadline`: PSReadline related issues +* `WG-Language`: parser, language semantics +* `WG-Quality-Test`: issues in a test or in test infrastructure +* `WG-Remoting`: PSRP issues with any transport layer +* `WG-Security`: security related areas such as [JEA](https://github.com/powershell/JEA) ### Operating Systems