Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions .github/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ report it. You will not be retaliated against for making a good-faith report.

**Primary contact:** <Privacy@powershell.org>

**Alternate contact:** Direct message to the Steward via GitHub or Discord.
**Alternate contact:** Direct message to the Org Admin via GitHub or Discord.

When reporting, please include:

Expand All @@ -112,21 +112,21 @@ required by law.

## Addressing and Repairing Harm

When a Code of Conduct violation is reported, the Steward (with input from the
When a Code of Conduct violation is reported, the Org Admin (with input from the
Council where appropriate) will determine an appropriate response. Our goal is
to address harm, support those affected, and where possible find a path for the
person who caused harm to repair the relationship and reintegrate into the
community.

The following is a guideline. The Steward retains discretion to apply responses
The following is a guideline. The Org Admin retains discretion to apply responses
appropriate to the specific situation, including responses not listed here.

### 1. Private Conversation

**Community impact:** Use of inappropriate language, a single instance of
unprofessional behavior, or behavior that, while not severe, was unwelcome.

**Response:** A private written communication from the Steward, providing
**Response:** A private written communication from the Org Admin, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

Expand Down Expand Up @@ -165,7 +165,7 @@ community.

## Restorative Paths

Where appropriate, and at the discretion of the Steward and the affected
Where appropriate, and at the discretion of the Org Admin and the affected
parties, we may offer paths for community members who have caused harm to repair
the relationship and re-engage with the community. This may include:

Expand All @@ -180,13 +180,13 @@ limited to harassment, doxxing, threats of violence, or sexual misconduct.
## Appeals

A person who has been subject to enforcement action may appeal the decision by
writing to the Steward within 30 days. The Steward will review the appeal with
input from the Council and respond within 30 days.
writing to the Org Admin within 30 days. The Org Admin will review the appeal
with input from the Council and respond within 30 days.

If the appeal involves the Steward's own decision and the appellant believes the
Steward cannot review it impartially, they may request that the Council review
the appeal collectively. In that case, the Council reviews and decides by
majority, and the Steward does not vote.
If the appeal involves the Org Admin's own decision and the appellant believes
the Org Admin cannot review it impartially, they may request that the Council
review the appeal collectively. In that case, the Council reviews and decides by
majority, and the Org Admin does not vote.

## Attribution

Expand All @@ -202,4 +202,4 @@ For answers to common questions about this Code of Conduct, see the FAQ at

---

*Last updated: 2026/04/21. Reports go to <Privacy@powershell.org>.*
_Last updated: 2026/04/21. Reports go to <Privacy@powershell.org>._
104 changes: 71 additions & 33 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,45 @@
# Contributing to PowerShellOrg Projects

Welcome — and thank you for considering a contribution. PowerShellOrg maintains PowerShell open-source tools that depend on community involvement to survive. Every bug report, doc fix, and pull request matters.
Welcome — and thank you for considering a contribution. PowerShellOrg maintains
PowerShell open-source tools that depend on community involvement to survive.
Every bug report, doc fix, and pull request matters.

This document covers org-wide expectations. Individual repos may add project-specific guidance in their own `README.md` or `CONTRIBUTING.md`; where they conflict with this document, the repo-level doc takes precedence.
This document covers org-wide expectations. Individual repos may add
project-specific guidance in their own `README.md` or `CONTRIBUTING.md`; where
they conflict with this document, the repo-level doc takes precedence.

---

## Scope and governance

PowerShellOrg focuses on PowerShell tooling. Before proposing a large feature or a significant design change, read [GOVERNANCE.md](GOVERNANCE.md) to understand how decisions get made. For substantial proposals, open an issue first so we can align before you invest time writing code.
PowerShellOrg focuses on PowerShell tooling. Before proposing a large feature or
a significant design change, read [GOVERNANCE.md][governance] to understand how
decisions get made. For substantial proposals, open an issue first so we can
align before you invest time writing code.

---

## Before you contribute

1. **Check existing issues and PRs.** Someone may already be working on it.
2. **Read the repo's README.** Each project documents its purpose, status, and any project-specific constraints.
3. **Agree to the license terms.** By submitting a contribution you agree that your work is licensed under the repo's license (MIT unless noted otherwise). See [License by contribution](#license-by-contribution) below.
2. **Read the repo's README.** Each project documents its purpose, status, and
any project-specific constraints.
3. **Agree to the license terms.** By submitting a contribution you agree that
your work is licensed under the repo's license (MIT unless noted otherwise).
See [License by contribution](#license-by-contribution) below.

---

## Development setup

All PowerShellOrg projects use the same build stack:

| Tool | Purpose |
|---|---|
| [psake](https://github.com/psake/psake) | Build automation |
| [PowerShellBuild](https://github.com/psake/PowerShellBuild) | Shared psake task library |
| [Pester 5](https://pester.dev) | Testing |
| [PSScriptAnalyzer](https://github.com/PowerShell/PSScriptAnalyzer) | Static analysis |
| Tool | Purpose |
| ------------------------------------ | ------------------------- |
| [psake][psake] | Build automation |
| [PowerShellBuild][powershellbuild] | Shared psake task library |
| [Pester 5][pester] | Testing |
| [PSScriptAnalyzer][psscriptanalyzer] | Static analysis |

**Install build dependencies:**

Expand All @@ -48,25 +58,29 @@ Invoke-psake Clean # Remove build artifacts
Invoke-psake Build # Compile / stage the module
Invoke-psake Test # Run Pester tests
Invoke-psake Analyze # Run PSScriptAnalyzer
Invoke-psake Publish # Publish to PSGallery (maintainers only)
Invoke-psake Publish # Publish to PSGallery (CI only — never run manually)
```

Run `Invoke-psake ?` to see all available tasks and their descriptions.

**Target platforms:** Windows PowerShell 5.1 and PowerShell 7.x on Windows, Linux, and macOS. Write code that runs on all six combinations.
**Target platforms:** Windows PowerShell 5.1 and PowerShell 7.x on Windows,
Linux, and macOS. Write code that runs on all six combinations.

---

## Branching and commits

- **Fork the repo** and work on a branch named for the thing you're changing: `fix/null-ref-in-invoke`, `feat/add-verbose-output`, `docs/update-readme`.
- **Keep commits focused.** One logical change per commit. Use the [Conventional Commits](https://www.conventionalcommits.org/) style:
- **Fork the repo** and work on a branch named for the thing you're changing:
`fix/null-ref-in-invoke`, `feat/add-verbose-output`, `docs/update-readme`.
- **Keep commits focused.** One logical change per commit. Use the [Conventional
Commits][conventional-commits] style:
- `fix: correct null reference in Invoke-PSDepend`
- `feat: add -WhatIf support to Install task`
- `docs: clarify quickstart example`
- `chore: bump Pester to 5.6`
- `test: add coverage for empty dependency file`
- **Do not squash history prematurely.** Maintainers may squash on merge if appropriate.
- **Do not squash history prematurely.** Maintainers may squash on merge if
appropriate.
- **Keep `main` green.** Never force-push to `main` or shared branches.

---
Expand All @@ -81,55 +95,79 @@ Before opening a PR:
- [ ] `CHANGELOG.md` is updated for user-facing changes
- [ ] Docs are updated if behavior changed

Fill out the PR template completely. PRs with empty templates or no linked issue for non-trivial changes will be asked to complete the template before review starts.
Fill out the PR template completely. PRs with empty templates or no linked issue
for non-trivial changes will be asked to complete the template before review
starts.

**Draft PRs** are welcome for early feedback. Mark them ready for review when you want the full review pass.
**Draft PRs** are welcome for early feedback. Mark them ready for review when
you want the full review pass.

---

## Code review expectations

### For contributors

- Respond to review comments within **14 days**. If you need more time, say so — we will wait.
- If a comment is a question, answer it. If it is a request, either make the change or explain why you disagree.
- A maintainer will make the final call. Disagreements are discussed, not escalated.
- Respond to review comments within **14 days**. If you need more time, say so —
we will wait.
- If a comment is a question, answer it. If it is a request, either make the
change or explain why you disagree.
- A maintainer will make the final call. Disagreements are discussed, not
escalated.

### For maintainers

| Repo status | First response SLA | Review completion SLA |
|---|---|---|
| `status-active` | 7 days | 30 days |
| `status-stable` | 30 days | 60 days |
| Repo status | First response SLA | Review completion SLA |
| --------------- | -------------------------------------------- | --------------------- |
| `status-active` | 7 days | 30 days |
| `status-stable` | 30 days | 60 days |
| `status-paused` | Suspended; security issues only, best-effort | — |

SLAs are best-effort commitments, not guarantees. If a repo is understaffed, the Steward will note this in the repo's README.
SLAs are best-effort commitments, not guarantees. If a repo is understaffed, the
project's Steward will note this in the repo's README.

If a PR sits without response past the SLA, ping `@PowerShellOrg/maintainers` or open a discussion.
If a PR sits without response past the SLA, open a discussion on the relevant
repository.

---

## Releases

Releases are cut by maintainers. The process:

1. Maintainer updates `CHANGELOG.md` and bumps the module version in the manifest.
1. Maintainer updates `CHANGELOG.md` and bumps the module version in the
manifest.
2. Maintainer opens a PR titled `chore: release vX.Y.Z`.
3. PR is reviewed and merged to `main`.
4. Maintainer pushes a version tag (`vX.Y.Z`) to `main`.
5. The tag triggers `powershell-release.yml`, which builds, publishes to PSGallery, and creates a GitHub Release.
5. The tag triggers `powershell-release.yml`, which builds, publishes to
PSGallery, and creates a GitHub Release.

Contributors do not cut releases. If you believe a release is overdue, open an issue and tag the maintainers.
Contributors do not cut releases. If you believe a release is overdue, open an
issue and tag the maintainers.

---

## License by contribution

By submitting a pull request or other contribution, you agree that your contribution is made under the same license as the project you are contributing to (MIT unless the repo states otherwise). You represent that you have the right to make the contribution under those terms.
By submitting a pull request or other contribution, you agree that your
contribution is made under the same license as the project you are contributing
to (MIT unless the repo states otherwise). You represent that you have the right
to make the contribution under those terms.

If your employer has rights to code you write, ensure you have permission to contribute it before submitting.
If your employer has rights to code you write, ensure you have permission to
contribute it before submitting.

---

## Questions?

See [SUPPORT.md](SUPPORT.md).
See [SUPPORT.md][support].

[governance]: GOVERNANCE.md
[psake]: https://github.com/psake/psake
[powershellbuild]: https://github.com/psake/PowerShellBuild
[pester]: https://pester.dev
[psscriptanalyzer]: https://github.com/PowerShell/PSScriptAnalyzer
[conventional-commits]: https://www.conventionalcommits.org/
[support]: SUPPORT.md
2 changes: 1 addition & 1 deletion .github/DISCUSSION_TEMPLATE/announcements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ body:
value: |
Use this template for official announcements: new releases, adoption news, governance changes, maintainer changes, or other org-wide updates.

Only maintainers and the Steward should post in this category. Community members can react and reply.
Only maintainers, project Stewards, and the Org Admin should post in this category. Community members can react and reply.

- type: textarea
id: announcement
Expand Down
Loading