From d1b9d603383b426500b1c872e315432c9e58cc50 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 14 May 2026 07:25:41 -0700 Subject: [PATCH 01/12] Update contributing workflow --- contributing-workflow.md | 69 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/contributing-workflow.md b/contributing-workflow.md index 266c39c1a7..f286cfaa9c 100644 --- a/contributing-workflow.md +++ b/contributing-workflow.md @@ -70,6 +70,75 @@ If the CI build fails for any reason, the PR issue will be updated with a link t - Comment on your PR if you're stuck. - Reach out in [GitHub Discussions](https://github.com/dotnet/SqlClient/discussions) for broader questions. +## Tracking PRs in the GitHub Project + +The [SqlClient Board](https://github.com/orgs/dotnet/projects/588) (dotnet org project #588) is the team's triage board for tracking issues and PRs. When a PR is linked to an issue, its progress is tracked through the project's fields described below. + +### Project Fields + +| Field | Type | Values | Purpose | +|-------|------|--------|---------| +| **Status** | Single select | `To triage`, `Waiting for customer`, `In progress`, `In review`, `In validation`, `Done` | Tracks the current workflow stage of the item | +| **Priority** | Single select | `P0`, `P1`, `P2`, `P3` | Indicates urgency and scheduling priority | +| **Size** | Single select | `XS`, `S`, `M`, `L`, `XL` | Estimates effort/complexity of the work | +| **API Impact** | Single select | `Breaking Change`, `New API`, `None` | Flags whether the change affects public API surface | +| **PM Approved** | Single select | `N/A`, `Pending`, `Approved` | Tracks product manager sign-off for API or behavioral changes | +| **Assignees** | Field | *(GitHub users)* | Who is responsible for the work | +| **Labels** | Field | *(GitHub labels)* | Categorization and area tags | +| **Reviewers** | Field | *(GitHub users)* | Assigned code reviewers | +| **Milestone** | Field | *(GitHub milestones)* | Target release version | +| **Linked pull requests** | Field | *(PR references)* | PRs associated with the issue | +| **Parent issue** | Field | *(issue reference)* | Epic or parent tracking issue | +| **Sub-issues progress** | Field | *(auto-calculated)* | Completion progress of child issues | +| **Comment** | Text | *(free text)* | Additional context or notes | +| **AB-Link** | Text | *(URL)* | Link to Azure Boards work item (if applicable) | + +### Status Stages for PRs + +PRs (and their linked issues) move through the **Status** field to communicate reviewability and progress: + +| Status | What it means for a PR | +|--------|------------------------| +| **To triage** | PR just opened or linked issue is awaiting initial assessment. Maintainers will review scope, assign reviewers, and set priority. | +| **In progress** | Author is actively developing the change. PR may be in Draft state. | +| **In review** | PR is ready for code review. Reviewers are assigned and the author considers the implementation complete. | +| **Waiting for customer** | Review feedback has been given; the PR author needs to respond or push changes. Once addressed, the PR moves back to `In review` (minor updates) or `In progress` (major rework needed). | +| **In validation** | PR is approved and being validated (CI, manual testing, integration checks) before merge. | +| **Done** | PR has been merged and the associated work is complete. | + +### Status Transitions + +``` +┌────────────┐ ┌─────────────┐ ┌───────────────────────┐ ┌───────────────┐ ┌──────┐ +│ To triage │──────▶│ In progress │──────▶│ In review │──────▶│ In validation │──────▶│ Done │ +└────────────┘ └─────────────┘ └───────────┬───────────┘ └───────────────┘ └──────┘ + ▲ │ ▲ + │ │ changes │ author addresses + │ │ requested│ feedback (minor) + │ ▼ │ + │ ┌────────────────────────┐ + │ │ Waiting for customer │ + │ └────────────────────────┘ + │ │ + │ │ major rework needed + └────────────────────┘ +``` + +### Additional Field Usage + +- **Priority**: `P0` items are critical fixes that should be reviewed and merged urgently. `P1` items are high priority for the current milestone. `P2`/`P3` items are scheduled as capacity allows. +- **Size**: Helps reviewers estimate review effort. `XS`/`S` PRs should get faster turnaround. `L`/`XL` PRs may need multiple reviewers or phased review. +- **API Impact**: PRs marked `Breaking Change` or `New API` require **PM Approved = Approved** before merge. `ref/` project updates must accompany these PRs. +- **PM Approved**: Set to `Pending` when a PR introduces API changes. Must reach `Approved` before the PR can be merged. `N/A` for internal or non-API changes. + +### Guidelines for Contributors + +1. **Link your PR to an issue** — This ensures the PR appears on the project board and is tracked through the workflow. +2. **Keep Status current** — If you're the author, move your linked issue to `In review` when your PR is ready for feedback. +3. **Respond promptly** — When status is `Waiting for customer`, the team is blocked on your response. Address feedback so reviewers can continue the review. +4. **Flag API changes early** — Set **API Impact** appropriately so PM review can happen in parallel with code review. +5. **Don't skip validation** — Even after approval, the PR stays in `In validation` until CI passes and any manual verification is complete. + ## Stale PR Management The SqlClient repository uses automated workflows to manage inactive pull requests and maintain repository hygiene. From b0ba79dcbb5e7d8718f0742422db4a6701e9d2d9 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 14 May 2026 07:55:56 -0700 Subject: [PATCH 02/12] Update Roadmap as per feeback --- contributing-workflow.md | 7 ++- roadmap.md | 123 +++++++++++++++++++++++++++++++++++---- 2 files changed, 117 insertions(+), 13 deletions(-) diff --git a/contributing-workflow.md b/contributing-workflow.md index f286cfaa9c..3f93712293 100644 --- a/contributing-workflow.md +++ b/contributing-workflow.md @@ -43,7 +43,8 @@ We use and recommend the following workflow: ### Commit Guidelines - It is OK for your PR to include a large number of commits. -- Once your change is accepted, you will be asked to squash your commits into one or some appropriately small number of commits before your PR is merged. +- PRs are merged via the default "Squash and Merge" strategy (see [Merging Pull Requests](#merging-pull-requests)), so your commit history is automatically collapsed into a single commit at merge time. +- If the PR is planned NOT to follow the default squash-and-merge path (for example, when the author requests "Merge and Commit" to preserve a meaningful commit series), you will be asked to squash your commits into one or some appropriately small number of commits before your PR is merged. ## PR - CI Process @@ -63,7 +64,9 @@ If the CI build fails for any reason, the PR issue will be updated with a link t - **Build failures**: Check the CI logs for specific error messages. - **Test failures**: Ensure all tests pass locally before pushing. -- **Merge conflicts**: Rebase your branch against the latest main branch. +- **Merge conflicts**: + - *Before review has started*: Rebase your branch against the latest `main` branch to keep history clean. + - *After a reviewer has started reviewing*: Do **not** rebase. Rebasing rewrites commit history and makes it impossible for reviewers to tell which commits they have already reviewed, forcing them to start over. Instead, resolve conflicts by merging the latest `main` into your branch (`git merge main`) so that previously reviewed commits remain intact and reviewers can pick up where they left off. ### Getting Help diff --git a/roadmap.md b/roadmap.md index 4c080e7242..a28e13ed8e 100644 --- a/roadmap.md +++ b/roadmap.md @@ -1,30 +1,131 @@ # Microsoft.Data.SqlClient Roadmap -The Microsoft.Data.SqlClient roadmap communicates project priorities for evolving and extending the scope of the product. We encourage the community to work with us to improve SqlClient driver for these scenarios and extend it for others. +The Microsoft.Data.SqlClient roadmap communicates project priorities for evolving and extending the scope of the product. We encourage the community to work with us to improve the SqlClient driver for these scenarios and extend it for others. + +> **Last updated:** May 2026 +> +> This roadmap is a living document. Priorities and timelines may shift based on community feedback, engineering constraints, and business needs. We update this page regularly to reflect the current state of development. + +--- + +## Release Milestones + +For active release milestones, their target dates, and the changes included, see [SqlClient milestones](https://github.com/dotnet/SqlClient/milestones). + +--- + +## Current Focus Areas + +Our team is actively working on the following high-level themes: + +- **Active** — Currently in development +- **Planned** — Committed for a future milestone with estimated delivery +- **Backlog** — On our radar for future months, not yet scheduled + +### Performance & Reliability + +| Feature | Status | ETA | +|---------|--------|-----| +| Connection pool performance improvements | Active | June 2026 | +| Performance benchmarking suite | Active | June 2026 | +| Phase 1 - Unix async performance — thread starvation in parallel `ExecuteReaderAsync` | Active | September 2026 | +| Phase 2 - Async usage analysis and optimization | Planned | — | + +### New Data Type Support + +| Feature | Status | ETA | +|---------|--------|-----| +| Vector subtype support — `float16` (`Half`) | Active | August 2026 | + +### Observability & Diagnostics + +| Feature | Status | ETA | +|---------|--------|-----| +| OpenTelemetry support | Planned | — | +| Logging improvements | Planned | — | +| Integrate with / expose MSAL logging | Planned | — | + +### API Improvements + +| Feature | Status | ETA | +|---------|--------|-----| +| Expose connection encryption information to clients | Planned | September 2026 | +| Throw `TaskCanceledException` instead of `SqlException` for cancellations | Planned | September 2026 | +| `BeginTransactionAsync` API on `SqlConnection` | Planned | — | + +### Security & Architecture + +| Feature | Status | ETA | +|---------|--------|-----| +| Security hardening activities | Active | Ongoing internally | + +### AI & Developer Tooling + +| Feature | Status | ETA | +|---------|--------|-----| +| `System.Data.SqlClient` → `Microsoft.Data.SqlClient` migration via Modernize with Copilot | Active | September 2026 | +| Modernize SqlClient repository with AI | Active | Ongoing | + +### Engineering & Infrastructure + +| Feature | Status | ETA | +|---------|--------|-----| +| CI/CD pipeline redesign | Active | August 2026 | +| Add SQL Server 2025 to test matrix | Planned | August 2026 | +| Add .NET 10 to test matrix | Planned | August 2026 | +| Converting existing traditional pipelines to Yaml | Active | August 2026 | +| Performance benchmarking pipeline (Internal) | Planned | September 2026 | +--- ## Released Versions -- [Release Notes](release-notes/README.md) - For detailed release notes summarizing of all changes/features released. -- [GitHub Releases](https://github.com/dotnet/sqlclient/releases) - For downloading NuGet Packages and identifying driver releases with changelog notes. +- [Release Notes](release-notes/README.md) — Detailed release notes summarizing all changes and features released. +- [GitHub Releases](https://github.com/dotnet/sqlclient/releases) — NuGet packages and changelog notes for each release. + +--- + +## Community Contributions + +We welcome and value community contributions to Microsoft.Data.SqlClient! To ensure we can maintain quality and alignment with our roadmap, please follow these guidelines: + +### Submitting Pull Requests + +- **New features from community PRs must be driven by creating a GitHub issue first.** Discuss the proposal in the issue before starting implementation. This helps avoid wasted effort and ensures alignment with project goals. +- **Community contributions must not derail the project roadmap.** We prioritize features and fixes according to our published milestones. PRs that conflict with or distract from active roadmap items may be deferred. +- **Our maintainers reserve the right to reject PRs** that do not meet the required criteria to qualify for review. This includes PRs that: + - Lack a corresponding approved issue + - Introduce breaking changes without prior discussion + - Do not follow the project's coding standards and conventions + - Are missing adequate test coverage + - Conflict with work already in progress by the team +- **Bug fixes and small improvements** are generally welcome without a prior issue, but a linked issue helps us triage and prioritize your contribution. + +### What Makes a Great Contribution + +1. **Start with an issue** — File a [feature request](https://github.com/dotnet/SqlClient/issues/new?template=feature_request.md) or [bug report](https://github.com/dotnet/SqlClient/issues/new?template=bug-report.md) and wait for maintainer feedback +2. **Follow the conventions** — See [CONTRIBUTING.md](CONTRIBUTING.md) and [coding guidelines](policy/coding-style.md) +3. **Include tests** — Both unit tests and integration tests where applicable +4. **Keep scope focused** — One feature or fix per PR +5. **Update documentation** — For any public API changes -## Upcoming Ship Dates +### Contribution Workflow -For upcoming release dates, see [SqlClient milestones](https://github.com/dotnet/SqlClient/milestones). +See [contributing-workflow.md](contributing-workflow.md) for details on how PRs are tracked through our review process. -[SqlClient Projects](https://github.com/dotnet/SqlClient/projects) are used by our development team to define roadmap of prioritized work. SqlClient Boards contain issues, pull requests, and other features, development activities that are categorized as cards. Our goal is to be transparent over priorities, work in progress and deliverables. +--- ## Feedback -The best way to give feedback is to create issues in the [dotnet/sqlclient](https://github.com/dotnet/sqlclient) repo. +The best way to give feedback is to create issues in the [dotnet/SqlClient](https://github.com/dotnet/SqlClient) repo. -Although mostly obvious, please give us feedback that will give us insight on the following points: +Please give us feedback that will provide insight on the following: -- Existing features are missing some capability or otherwise don't work well enough. +- Existing features that are missing some capability or otherwise don't work well enough. - Missing features that should be added to the product. - Design choices for a feature that is currently in-progress. -Some important caveats / notes: +Some important caveats: -- It is best to give design feedback quickly for improvements that are in-development. We're unlikely to hold a feature being part of a release on late feedback. +- It is best to give design feedback quickly for improvements that are in development. We're unlikely to hold a feature from a release on late feedback. - We are most likely to include improvements that either have a positive impact on a broad scenario or have very significant positive impact on a niche scenario. This means that we are unlikely to prioritize modest improvements to niche scenarios. - Compatibility will almost always be given a higher priority than improvements. From b892f6310e7a7231e115d186696b34a7547cd2fe Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Tue, 2 Jun 2026 00:12:53 -0700 Subject: [PATCH 03/12] Update contributor guidelines --- contributing-workflow.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/contributing-workflow.md b/contributing-workflow.md index 3f93712293..52fa675e9f 100644 --- a/contributing-workflow.md +++ b/contributing-workflow.md @@ -105,22 +105,27 @@ PRs (and their linked issues) move through the **Status** field to communicate r | **To triage** | PR just opened or linked issue is awaiting initial assessment. Maintainers will review scope, assign reviewers, and set priority. | | **In progress** | Author is actively developing the change. PR may be in Draft state. | | **In review** | PR is ready for code review. Reviewers are assigned and the author considers the implementation complete. | -| **Waiting for customer** | Review feedback has been given; the PR author needs to respond or push changes. Once addressed, the PR moves back to `In review` (minor updates) or `In progress` (major rework needed). | +| **Waiting for customer** | Review feedback has been given; the PR author needs to respond or push changes. When a reviewer requests changes, they will also apply the **`Author attention needed`** label so the PR is easy to surface in queries and dashboards. Once the author addresses the feedback, they should remove the `Author attention needed` label and move the PR back to `In review`. | | **In validation** | PR is approved and being validated (CI, manual testing, integration checks) before merge. | | **Done** | PR has been merged and the associated work is complete. | ### Status Transitions +When a reviewer leaves feedback that needs author action, they move the PR to `Waiting for customer` **and** apply the `Author Attention Needed` label. The author removes the label (and updates Status back to `In review`/`In progress`) once the feedback is addressed. + ``` ┌────────────┐ ┌─────────────┐ ┌───────────────────────┐ ┌───────────────┐ ┌──────┐ │ To triage │──────▶│ In progress │──────▶│ In review │──────▶│ In validation │──────▶│ Done │ └────────────┘ └─────────────┘ └───────────┬───────────┘ └───────────────┘ └──────┘ ▲ │ ▲ │ │ changes │ author addresses - │ │ requested│ feedback (minor) + │ │ requested│ feedback (minor) + + │ │ + label │ removes label │ ▼ │ │ ┌────────────────────────┐ │ │ Waiting for customer │ + │ │ + Author Attention │ + │ │ Needed (label) │ │ └────────────────────────┘ │ │ │ │ major rework needed @@ -138,10 +143,16 @@ PRs (and their linked issues) move through the **Status** field to communicate r 1. **Link your PR to an issue** — This ensures the PR appears on the project board and is tracked through the workflow. 2. **Keep Status current** — If you're the author, move your linked issue to `In review` when your PR is ready for feedback. -3. **Respond promptly** — When status is `Waiting for customer`, the team is blocked on your response. Address feedback so reviewers can continue the review. +3. **Respond promptly** — When status is `Waiting for customer` and the **`Author Attention Needed`** label is applied, the team is blocked on your response. Address the feedback, push the updates, **remove the `Author Attention Needed` label**, and move Status back to `In review` (or `In progress` for major rework) so reviewers know the PR is ready for another pass. 4. **Flag API changes early** — Set **API Impact** appropriately so PM review can happen in parallel with code review. 5. **Don't skip validation** — Even after approval, the PR stays in `In validation` until CI passes and any manual verification is complete. +### Guidelines for Reviewers + +1. **Signal that author action is required** — When your review requests changes (whether via formal "Request changes" or a comment that requires author follow-up), apply the **`Author Attention Needed`** label to the PR and move its linked issue to `Waiting for customer`. This pair (label + status) is what the team uses to find PRs that are blocked on the author versus those still awaiting review. +2. **Don't remove the label yourself** — Leave the `Author Attention Needed` label in place until the author pushes updates addressing the feedback; the author is responsible for removing it when they hand the PR back for review. +3. **Re-review promptly** — Once the author removes the label and Status returns to `In review`, pick the PR back up so it doesn't stall. + ## Stale PR Management The SqlClient repository uses automated workflows to manage inactive pull requests and maintain repository hygiene. @@ -183,6 +194,7 @@ One or more Microsoft team members will review every PR prior to merge. They wil - Address all review comments before the PR can be merged. - Feel free to ask questions if feedback is unclear. - Push additional commits to address feedback (these will be squashed later). +- When a reviewer leaves feedback that needs your action, they will set Status to `Waiting for customer` and apply the **`Author Attention Needed`** label. After you push updates, **remove the `Author Attention Needed` label** and move Status back to `In review` so reviewers know the PR is ready for another pass. ## Merging Pull Requests From 59750e94a20e0601335a433320a67210a361416e Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Tue, 9 Jun 2026 17:47:09 -0700 Subject: [PATCH 04/12] Review comments addressed --- CONTRIBUTING.md | 42 +++++++++++++++++++++++++++++++++++- README.md | 1 + contributing-workflow.md | 39 +++++++++++++++++++--------------- roadmap.md | 46 +++------------------------------------- 4 files changed, 67 insertions(+), 61 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8dca7be35c..c47780264e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -127,7 +127,47 @@ To prevent closure, simply add comments, push commits, or respond to feedback. ## Reporting security issues and vulnerabilities -Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) [secure@microsoft.com](mailto:secure@microsoft.com). You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the [MSRC FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue?rtc=1&oneroute=true). +Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) [secure@microsoft.com](mailto:secure@microsoft.com). You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the [MSRC FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue?rtc=1&oneroute=true) + +## Submitting Pull Requests + +- **New features from community PRs must be driven by creating a GitHub issue first.** Discuss the proposal in the issue before starting implementation. This helps avoid wasted effort and ensures alignment with project goals. +- **Community contributions must not derail the project roadmap.** We prioritize features and fixes according to our published milestones. PRs that conflict with or distract from active roadmap items may be deferred. +- **Our maintainers reserve the right to reject PRs** that do not meet the required criteria to qualify for review. This includes PRs that: + - Lack a corresponding approved issue (i.e., an issue that has been reviewed, acknowledged, and agreed upon by maintainers — typically indicated by the **PM Approved** status in the GitHub Project board) + - Introduce breaking changes without prior discussion + - Do not follow the project's coding standards and conventions + - Are missing adequate test coverage + - Conflict with work already in progress by the team +- **Bug fixes and small improvements** are generally welcome without a prior issue, but a linked issue helps us triage and prioritize your contribution. + +### What Makes a Great Contribution + +1. **Start with an issue** — File a [feature request](https://github.com/dotnet/SqlClient/issues/new?template=feature_request.md) or [bug report](https://github.com/dotnet/SqlClient/issues/new?template=bug-report.md) and wait for maintainer feedback +2. **Follow the conventions** — See [coding guidelines](policy/coding-style.md) +3. **Include tests** — Both unit tests and integration tests where applicable +4. **Keep scope focused** — One feature or fix per PR +5. **Update documentation** — For any public API changes + +### Contribution Workflow + +See [contributing-workflow.md](contributing-workflow.md) for details on how PRs are tracked through our review process. + +## Feedback + +The best way to give feedback is to create issues in the [dotnet/SqlClient](https://github.com/dotnet/SqlClient) repo. + +Please give us feedback that will provide insight on the following: + +- Existing features that are missing some capability or otherwise don't work well enough. +- Missing features that should be added to the product. +- Design choices for a feature that is currently in-progress. + +Some important caveats: + +- It is best to give design feedback quickly for improvements that are in development. We're unlikely to hold a feature from a release on late feedback. +- We are most likely to include improvements that either have a positive impact on a broad scenario or have very significant positive impact on a niche scenario. This means that we are unlikely to prioritize modest improvements to niche scenarios. +- Compatibility will almost always be given a higher priority than improvements.. ## Contribution Standards diff --git a/README.md b/README.md index 1a066c52d4..07374c727b 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ When targeting .NET on Windows, a package reference to [Microsoft.Data.SqlClient | Coding Style | [coding-style.md](/policy/coding-style.md) | | Contributing | [CONTRIBUTING.md](CONTRIBUTING.md) | | Copyright Information | [COPYRIGHT.md](COPYRIGHT.md) | +| Roadmap | [roadmap.md](roadmap.md) | | Review Process | [review-process.md](/policy/review-process.md) | | Support Policy | [SUPPORT.md](SUPPORT.md) | diff --git a/contributing-workflow.md b/contributing-workflow.md index 52fa675e9f..708172af00 100644 --- a/contributing-workflow.md +++ b/contributing-workflow.md @@ -7,7 +7,8 @@ You can contribute to Microsoft.Data.SqlClient with issues and PRs. Simply filin We use and recommend the following workflow: 1. **Create an issue for your work.** - - You can skip this step for trivial changes. + - You can skip this step for trivial changes (e.g., typo fixes, minor documentation updates). + - **For new features, non-trivial bug fixes, or behavioral changes, an issue is required.** This gives maintainers a chance to review the proposal before implementation begins and prevents wasted effort. - Reuse an existing issue on the topic, if there is one. - Get agreement from the team and the community that your proposed change is a good one. - Suggest [Labels](CONTRIBUTING.md#using-labels) to add for your issue. @@ -39,6 +40,7 @@ We use and recommend the following workflow: - It is OK to create your PR as Draft on the upstream repo before the implementation is done. - This can be useful if you'd like to start the feedback process concurrent with your implementation. - State that this is the case in the initial PR comment. +- **Keep your PR in Draft until CI validation passes.** The PR pipeline runs without maintainer intervention, so contributors should ensure all checks are green before marking the PR as ready for review. PRs appearing ready for review with failing checks will not be picked up by reviewers. ### Commit Guidelines @@ -114,22 +116,22 @@ PRs (and their linked issues) move through the **Status** field to communicate r When a reviewer leaves feedback that needs author action, they move the PR to `Waiting for customer` **and** apply the `Author Attention Needed` label. The author removes the label (and updates Status back to `In review`/`In progress`) once the feedback is addressed. ``` -┌────────────┐ ┌─────────────┐ ┌───────────────────────┐ ┌───────────────┐ ┌──────┐ -│ To triage │──────▶│ In progress │──────▶│ In review │──────▶│ In validation │──────▶│ Done │ -└────────────┘ └─────────────┘ └───────────┬───────────┘ └───────────────┘ └──────┘ - ▲ │ ▲ - │ │ changes │ author addresses - │ │ requested│ feedback (minor) + - │ │ + label │ removes label - │ ▼ │ - │ ┌────────────────────────┐ - │ │ Waiting for customer │ - │ │ + Author Attention │ - │ │ Needed (label) │ - │ └────────────────────────┘ - │ │ - │ │ major rework needed - └────────────────────┘ ++--------------+ +---------------+ +-------------------------+ +-----------------+ +--------+ +| To triage |------>| In progress |------>| In review |------>| In validation |------>| Done | ++--------------+ +---------------+ +------------+------------+ +-----------------+ +--------+ + ^ | ^ + | | changes | author addresses + | | requested | feedback (minor) + + | | + label | removes label + | v | + | +------------------------+ + | | Waiting for customer | + | | + Author Attention | + | | Needed (label) | + | +------------------------+ + | | + | | major rework needed + +----------------------+ ``` ### Additional Field Usage @@ -141,6 +143,8 @@ When a reviewer leaves feedback that needs author action, they move the PR to `W ### Guidelines for Contributors +> **Note:** Setting labels and project board fields (Status, Priority, etc.) requires maintainer or triage access. External contributors cannot modify these directly. Instead, suggest labels in your PR description and the team will apply them. If review feedback asks you to "remove the label" or "update Status", a maintainer will handle it if you don't have access—just let the team know in a comment. + 1. **Link your PR to an issue** — This ensures the PR appears on the project board and is tracked through the workflow. 2. **Keep Status current** — If you're the author, move your linked issue to `In review` when your PR is ready for feedback. 3. **Respond promptly** — When status is `Waiting for customer` and the **`Author Attention Needed`** label is applied, the team is blocked on your response. Address the feedback, push the updates, **remove the `Author Attention Needed` label**, and move Status back to `In review` (or `In progress` for major rework) so reviewers know the PR is ready for another pass. @@ -152,6 +156,7 @@ When a reviewer leaves feedback that needs author action, they move the PR to `W 1. **Signal that author action is required** — When your review requests changes (whether via formal "Request changes" or a comment that requires author follow-up), apply the **`Author Attention Needed`** label to the PR and move its linked issue to `Waiting for customer`. This pair (label + status) is what the team uses to find PRs that are blocked on the author versus those still awaiting review. 2. **Don't remove the label yourself** — Leave the `Author Attention Needed` label in place until the author pushes updates addressing the feedback; the author is responsible for removing it when they hand the PR back for review. 3. **Re-review promptly** — Once the author removes the label and Status returns to `In review`, pick the PR back up so it doesn't stall. +4. **Only reviewers resolve their own feedback threads** — A review comment thread should only be resolved by the reviewer who created it, once they are satisfied the feedback has been addressed. Authors should not resolve reviewer threads themselves. ## Stale PR Management diff --git a/roadmap.md b/roadmap.md index a28e13ed8e..0f36ea4dda 100644 --- a/roadmap.md +++ b/roadmap.md @@ -16,7 +16,7 @@ For active release milestones, their target dates, and the changes included, see ## Current Focus Areas -Our team is actively working on the following high-level themes: +Our team is actively working on the following high-level themes. Features are tracked via [GitHub issues](https://github.com/dotnet/SqlClient/issues) where applicable — see the linked milestones for associated issue details. - **Active** — Currently in development - **Planned** — Committed for a future milestone with estimated delivery @@ -84,48 +84,8 @@ Our team is actively working on the following high-level themes: --- -## Community Contributions +## Community Contributions & Feedback -We welcome and value community contributions to Microsoft.Data.SqlClient! To ensure we can maintain quality and alignment with our roadmap, please follow these guidelines: - -### Submitting Pull Requests - -- **New features from community PRs must be driven by creating a GitHub issue first.** Discuss the proposal in the issue before starting implementation. This helps avoid wasted effort and ensures alignment with project goals. -- **Community contributions must not derail the project roadmap.** We prioritize features and fixes according to our published milestones. PRs that conflict with or distract from active roadmap items may be deferred. -- **Our maintainers reserve the right to reject PRs** that do not meet the required criteria to qualify for review. This includes PRs that: - - Lack a corresponding approved issue - - Introduce breaking changes without prior discussion - - Do not follow the project's coding standards and conventions - - Are missing adequate test coverage - - Conflict with work already in progress by the team -- **Bug fixes and small improvements** are generally welcome without a prior issue, but a linked issue helps us triage and prioritize your contribution. - -### What Makes a Great Contribution - -1. **Start with an issue** — File a [feature request](https://github.com/dotnet/SqlClient/issues/new?template=feature_request.md) or [bug report](https://github.com/dotnet/SqlClient/issues/new?template=bug-report.md) and wait for maintainer feedback -2. **Follow the conventions** — See [CONTRIBUTING.md](CONTRIBUTING.md) and [coding guidelines](policy/coding-style.md) -3. **Include tests** — Both unit tests and integration tests where applicable -4. **Keep scope focused** — One feature or fix per PR -5. **Update documentation** — For any public API changes - -### Contribution Workflow - -See [contributing-workflow.md](contributing-workflow.md) for details on how PRs are tracked through our review process. - ---- - -## Feedback +For information on how to contribute, see [CONTRIBUTING.md](CONTRIBUTING.md). For details on the PR tracking workflow, see [contributing-workflow.md](contributing-workflow.md). The best way to give feedback is to create issues in the [dotnet/SqlClient](https://github.com/dotnet/SqlClient) repo. - -Please give us feedback that will provide insight on the following: - -- Existing features that are missing some capability or otherwise don't work well enough. -- Missing features that should be added to the product. -- Design choices for a feature that is currently in-progress. - -Some important caveats: - -- It is best to give design feedback quickly for improvements that are in development. We're unlikely to hold a feature from a release on late feedback. -- We are most likely to include improvements that either have a positive impact on a broad scenario or have very significant positive impact on a niche scenario. This means that we are unlikely to prioritize modest improvements to niche scenarios. -- Compatibility will almost always be given a higher priority than improvements. From ccb941fe973418d0cfc9d1190da118ded91fde80 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Tue, 9 Jun 2026 17:51:10 -0700 Subject: [PATCH 05/12] Addressed --- contributing-workflow.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contributing-workflow.md b/contributing-workflow.md index 708172af00..c1d3ca66e1 100644 --- a/contributing-workflow.md +++ b/contributing-workflow.md @@ -7,8 +7,7 @@ You can contribute to Microsoft.Data.SqlClient with issues and PRs. Simply filin We use and recommend the following workflow: 1. **Create an issue for your work.** - - You can skip this step for trivial changes (e.g., typo fixes, minor documentation updates). - - **For new features, non-trivial bug fixes, or behavioral changes, an issue is required.** This gives maintainers a chance to review the proposal before implementation begins and prevents wasted effort. + - **For all changes you intend to make in this repository, an issue is required.** This gives maintainers a chance to review the proposal before implementation begins and prevents wasted effort. - Reuse an existing issue on the topic, if there is one. - Get agreement from the team and the community that your proposed change is a good one. - Suggest [Labels](CONTRIBUTING.md#using-labels) to add for your issue. From 543da0560c2e62567b6881e797ef6bd85051578c Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Tue, 9 Jun 2026 18:13:31 -0700 Subject: [PATCH 06/12] Updates --- roadmap.md | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/roadmap.md b/roadmap.md index 0f36ea4dda..a91463c572 100644 --- a/roadmap.md +++ b/roadmap.md @@ -24,57 +24,58 @@ Our team is actively working on the following high-level themes. Features are tr ### Performance & Reliability -| Feature | Status | ETA | -|---------|--------|-----| -| Connection pool performance improvements | Active | June 2026 | -| Performance benchmarking suite | Active | June 2026 | -| Phase 1 - Unix async performance — thread starvation in parallel `ExecuteReaderAsync` | Active | September 2026 | -| Phase 2 - Async usage analysis and optimization | Planned | — | +| Work Item(s) | Feature | Status | ETA | +| ------------ | ------- | ------ | --- | +| [#3356](https://github.com/dotnet/SqlClient/issues/3356) [#601](https://github.com/dotnet/SqlClient/issues/601) [#979](https://github.com/dotnet/SqlClient/issues/979) | Connection pool performance improvements | Active | July 2026 | +| N/A | Performance benchmarking suite | Active | July 2026 | +| [#422](https://github.com/dotnet/SqlClient/issues/422) [#2408](https://github.com/dotnet/SqlClient/issues/2408) [#593](https://github.com/dotnet/SqlClient/issues/593) | Phase 1 - Unix async performance — thread starvation in parallel `ExecuteReaderAsync` | Active | September 2026 | +| TBD | Phase 2 - Async usage analysis and optimization | Planned | — | ### New Data Type Support -| Feature | Status | ETA | -|---------|--------|-----| -| Vector subtype support — `float16` (`Half`) | Active | August 2026 | +| Work Item(s) | Feature | Status | ETA | +| ------------ | ------- | ------ | --- | +| TBD | Vector subtype support — `float16` (`Half`) | Active | August 2026 | ### Observability & Diagnostics -| Feature | Status | ETA | -|---------|--------|-----| -| OpenTelemetry support | Planned | — | -| Logging improvements | Planned | — | -| Integrate with / expose MSAL logging | Planned | — | +| Work Item(s) | Feature | Status | ETA | +| ------------ | ------- | ------ | --- | +| [#2210](https://github.com/dotnet/SqlClient/issues/2210) [#2211](https://github.com/dotnet/SqlClient/issues/2211) | OpenTelemetry support | Planned | — | +| N/A | Logging improvements | Planned | — | +| TBD | Integrate with / expose MSAL logging | Planned | — | ### API Improvements -| Feature | Status | ETA | -|---------|--------|-----| -| Expose connection encryption information to clients | Planned | September 2026 | -| Throw `TaskCanceledException` instead of `SqlException` for cancellations | Planned | September 2026 | -| `BeginTransactionAsync` API on `SqlConnection` | Planned | — | +| Work Item(s) | Feature | Status | ETA | +| ------------ | ------- | ------ | --- | +| [#2353](https://github.com/dotnet/SqlClient/issues/2353) | Expose connection encryption information to clients | Planned | September 2026 | +| [#26](https://github.com/dotnet/SqlClient/issues/26) | Throw `TaskCanceledException` instead of `SqlException` for cancellations | Planned | September 2026 | +| [#113](https://github.com/dotnet/SqlClient/issues/113) | `BeginTransactionAsync` API on `SqlConnection` | Planned | — | ### Security & Architecture | Feature | Status | ETA | -|---------|--------|-----| +| ------- | ------ | --- | | Security hardening activities | Active | Ongoing internally | ### AI & Developer Tooling | Feature | Status | ETA | -|---------|--------|-----| +| ------- | ------ | --- | | `System.Data.SqlClient` → `Microsoft.Data.SqlClient` migration via Modernize with Copilot | Active | September 2026 | | Modernize SqlClient repository with AI | Active | Ongoing | ### Engineering & Infrastructure | Feature | Status | ETA | -|---------|--------|-----| +| ------- | ------ | --- | | CI/CD pipeline redesign | Active | August 2026 | | Add SQL Server 2025 to test matrix | Planned | August 2026 | | Add .NET 10 to test matrix | Planned | August 2026 | | Converting existing traditional pipelines to Yaml | Active | August 2026 | | Performance benchmarking pipeline (Internal) | Planned | September 2026 | + --- ## Released Versions From f43b6f0944da1f1d41a6195b69e81374827b51ae Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Wed, 10 Jun 2026 10:35:03 -0700 Subject: [PATCH 07/12] Address review comments --- CONTRIBUTING.md | 2 +- contributing-workflow.md | 4 ++-- roadmap.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c47780264e..802d79e134 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -167,7 +167,7 @@ Some important caveats: - It is best to give design feedback quickly for improvements that are in development. We're unlikely to hold a feature from a release on late feedback. - We are most likely to include improvements that either have a positive impact on a broad scenario or have very significant positive impact on a niche scenario. This means that we are unlikely to prioritize modest improvements to niche scenarios. -- Compatibility will almost always be given a higher priority than improvements.. +- Compatibility will almost always be given a higher priority than improvements. ## Contribution Standards diff --git a/contributing-workflow.md b/contributing-workflow.md index c1d3ca66e1..6b833c3772 100644 --- a/contributing-workflow.md +++ b/contributing-workflow.md @@ -7,7 +7,7 @@ You can contribute to Microsoft.Data.SqlClient with issues and PRs. Simply filin We use and recommend the following workflow: 1. **Create an issue for your work.** - - **For all changes you intend to make in this repository, an issue is required.** This gives maintainers a chance to review the proposal before implementation begins and prevents wasted effort. + - **For all significant changes you intend to make in this repository, an issue is required.** This gives maintainers a chance to review the proposal before implementation begins and prevents wasted effort. Bug fixes and small improvements are generally welcome without a prior issue, but a linked issue helps us triage and prioritize your contribution. - Reuse an existing issue on the topic, if there is one. - Get agreement from the team and the community that your proposed change is a good one. - Suggest [Labels](CONTRIBUTING.md#using-labels) to add for your issue. @@ -106,7 +106,7 @@ PRs (and their linked issues) move through the **Status** field to communicate r | **To triage** | PR just opened or linked issue is awaiting initial assessment. Maintainers will review scope, assign reviewers, and set priority. | | **In progress** | Author is actively developing the change. PR may be in Draft state. | | **In review** | PR is ready for code review. Reviewers are assigned and the author considers the implementation complete. | -| **Waiting for customer** | Review feedback has been given; the PR author needs to respond or push changes. When a reviewer requests changes, they will also apply the **`Author attention needed`** label so the PR is easy to surface in queries and dashboards. Once the author addresses the feedback, they should remove the `Author attention needed` label and move the PR back to `In review`. | +| **Waiting for customer** | Review feedback has been given; the PR author needs to respond or push changes. When a reviewer requests changes, they will also apply the **`Author Attention Needed`** label so the PR is easy to surface in queries and dashboards. Once the author addresses the feedback, they should remove the `Author Attention Needed` label and move the PR back to `In review`. | | **In validation** | PR is approved and being validated (CI, manual testing, integration checks) before merge. | | **Done** | PR has been merged and the associated work is complete. | diff --git a/roadmap.md b/roadmap.md index a91463c572..77ab8934ac 100644 --- a/roadmap.md +++ b/roadmap.md @@ -81,7 +81,7 @@ Our team is actively working on the following high-level themes. Features are tr ## Released Versions - [Release Notes](release-notes/README.md) — Detailed release notes summarizing all changes and features released. -- [GitHub Releases](https://github.com/dotnet/sqlclient/releases) — NuGet packages and changelog notes for each release. +- [GitHub Releases](https://github.com/dotnet/SqlClient/releases) — NuGet packages and changelog notes for each release. --- From 491c42bd85e292e9ad8ffe8bbaf2425e73f97ebe Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Wed, 10 Jun 2026 10:48:17 -0700 Subject: [PATCH 08/12] Updates --- CONTRIBUTING.md | 2 +- roadmap.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 802d79e134..e032b25aa1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -127,7 +127,7 @@ To prevent closure, simply add comments, push commits, or respond to feedback. ## Reporting security issues and vulnerabilities -Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) [secure@microsoft.com](mailto:secure@microsoft.com). You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the [MSRC FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue?rtc=1&oneroute=true) +Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) [secure@microsoft.com](mailto:secure@microsoft.com). You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the [MSRC FAQ](https://www.microsoft.com/en-us/msrc/faqs-report-an-issue?rtc=1&oneroute=true). ## Submitting Pull Requests diff --git a/roadmap.md b/roadmap.md index 77ab8934ac..3535ed280f 100644 --- a/roadmap.md +++ b/roadmap.md @@ -73,7 +73,7 @@ Our team is actively working on the following high-level themes. Features are tr | CI/CD pipeline redesign | Active | August 2026 | | Add SQL Server 2025 to test matrix | Planned | August 2026 | | Add .NET 10 to test matrix | Planned | August 2026 | -| Converting existing traditional pipelines to Yaml | Active | August 2026 | +| Converting existing traditional pipelines to YAML | Active | August 2026 | | Performance benchmarking pipeline (Internal) | Planned | September 2026 | --- From 7c378f10d9b2a70783c11b2413c6e9a4acae02ad Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Wed, 10 Jun 2026 15:17:11 -0700 Subject: [PATCH 09/12] Update issues --- roadmap.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roadmap.md b/roadmap.md index 3535ed280f..208c9ed2d2 100644 --- a/roadmap.md +++ b/roadmap.md @@ -26,9 +26,9 @@ Our team is actively working on the following high-level themes. Features are tr | Work Item(s) | Feature | Status | ETA | | ------------ | ------- | ------ | --- | -| [#3356](https://github.com/dotnet/SqlClient/issues/3356) [#601](https://github.com/dotnet/SqlClient/issues/601) [#979](https://github.com/dotnet/SqlClient/issues/979) | Connection pool performance improvements | Active | July 2026 | +| [#3356](https://github.com/dotnet/SqlClient/issues/3356) [#601](https://github.com/dotnet/SqlClient/issues/601) [#343](https://github.com/dotnet/SqlClient/issues/343) [#979](https://github.com/dotnet/SqlClient/issues/979) [#1881](https://github.com/dotnet/SqlClient/issues/1881) [#2152](https://github.com/dotnet/SqlClient/issues/2152) [#3118](https://github.com/dotnet/SqlClient/issues/3118) [#3545](https://github.com/dotnet/SqlClient/issues/3545) | Connection pool performance improvements | Active | July 2026 | | N/A | Performance benchmarking suite | Active | July 2026 | -| [#422](https://github.com/dotnet/SqlClient/issues/422) [#2408](https://github.com/dotnet/SqlClient/issues/2408) [#593](https://github.com/dotnet/SqlClient/issues/593) | Phase 1 - Unix async performance — thread starvation in parallel `ExecuteReaderAsync` | Active | September 2026 | +| [#422](https://github.com/dotnet/SqlClient/issues/422) [#1530](https://github.com/dotnet/SqlClient/issues/1530) [#1562](https://github.com/dotnet/SqlClient/issues/1562) [#2408](https://github.com/dotnet/SqlClient/issues/2408) [#593](https://github.com/dotnet/SqlClient/issues/593) | Phase 1 - Unix async performance — thread starvation in parallel `ExecuteReaderAsync` | Active | September 2026 | | TBD | Phase 2 - Async usage analysis and optimization | Planned | — | ### New Data Type Support From 206db3e5f59924df863564c06601eaf8b24d553f Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Wed, 10 Jun 2026 15:40:00 -0700 Subject: [PATCH 10/12] Keep parent tracking issues only --- roadmap.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roadmap.md b/roadmap.md index 208c9ed2d2..e41d19dc79 100644 --- a/roadmap.md +++ b/roadmap.md @@ -26,9 +26,9 @@ Our team is actively working on the following high-level themes. Features are tr | Work Item(s) | Feature | Status | ETA | | ------------ | ------- | ------ | --- | -| [#3356](https://github.com/dotnet/SqlClient/issues/3356) [#601](https://github.com/dotnet/SqlClient/issues/601) [#343](https://github.com/dotnet/SqlClient/issues/343) [#979](https://github.com/dotnet/SqlClient/issues/979) [#1881](https://github.com/dotnet/SqlClient/issues/1881) [#2152](https://github.com/dotnet/SqlClient/issues/2152) [#3118](https://github.com/dotnet/SqlClient/issues/3118) [#3545](https://github.com/dotnet/SqlClient/issues/3545) | Connection pool performance improvements | Active | July 2026 | +| [#3356](https://github.com/dotnet/SqlClient/issues/3356) | Connection pool performance improvements | Active | July 2026 | | N/A | Performance benchmarking suite | Active | July 2026 | -| [#422](https://github.com/dotnet/SqlClient/issues/422) [#1530](https://github.com/dotnet/SqlClient/issues/1530) [#1562](https://github.com/dotnet/SqlClient/issues/1562) [#2408](https://github.com/dotnet/SqlClient/issues/2408) [#593](https://github.com/dotnet/SqlClient/issues/593) | Phase 1 - Unix async performance — thread starvation in parallel `ExecuteReaderAsync` | Active | September 2026 | +| [#422](https://github.com/dotnet/SqlClient/issues/422) | Phase 1 - Unix async performance — thread starvation in parallel `ExecuteReaderAsync` | Active | September 2026 | | TBD | Phase 2 - Async usage analysis and optimization | Planned | — | ### New Data Type Support From 66d2deabac94ebc33b614c5f071b65ef7dee7631 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 11 Jun 2026 16:35:40 -0700 Subject: [PATCH 11/12] Update guidelines --- contributing-workflow.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/contributing-workflow.md b/contributing-workflow.md index 6b833c3772..9d86d5209d 100644 --- a/contributing-workflow.md +++ b/contributing-workflow.md @@ -106,13 +106,13 @@ PRs (and their linked issues) move through the **Status** field to communicate r | **To triage** | PR just opened or linked issue is awaiting initial assessment. Maintainers will review scope, assign reviewers, and set priority. | | **In progress** | Author is actively developing the change. PR may be in Draft state. | | **In review** | PR is ready for code review. Reviewers are assigned and the author considers the implementation complete. | -| **Waiting for customer** | Review feedback has been given; the PR author needs to respond or push changes. When a reviewer requests changes, they will also apply the **`Author Attention Needed`** label so the PR is easy to surface in queries and dashboards. Once the author addresses the feedback, they should remove the `Author Attention Needed` label and move the PR back to `In review`. | +| **Waiting for customer** | Review feedback has been given; the PR author needs to respond or push changes. When a reviewer requests changes, they will also apply the **`Author attention needed`** label so the PR is easy to surface in queries and dashboards. Once the author addresses the feedback, they should remove the `Author attention needed` label if permissions allow or comment `/ready` on the PR to remove the label `Author attention needed` and re-engage the reviewers to move the PR back to `In review`. | | **In validation** | PR is approved and being validated (CI, manual testing, integration checks) before merge. | | **Done** | PR has been merged and the associated work is complete. | ### Status Transitions -When a reviewer leaves feedback that needs author action, they move the PR to `Waiting for customer` **and** apply the `Author Attention Needed` label. The author removes the label (and updates Status back to `In review`/`In progress`) once the feedback is addressed. +When a reviewer leaves feedback that needs author action, they move the PR to `Waiting for customer` **and** apply the `Author attention needed` label. The author removes the label (and updates Status back to `In review`/`In progress`) once the feedback is addressed. ``` +--------------+ +---------------+ +-------------------------+ +-----------------+ +--------+ @@ -125,8 +125,8 @@ When a reviewer leaves feedback that needs author action, they move the PR to `W | v | | +------------------------+ | | Waiting for customer | - | | + Author Attention | - | | Needed (label) | + | | + Author attention | + | | needed (label) | | +------------------------+ | | | | major rework needed @@ -146,15 +146,15 @@ When a reviewer leaves feedback that needs author action, they move the PR to `W 1. **Link your PR to an issue** — This ensures the PR appears on the project board and is tracked through the workflow. 2. **Keep Status current** — If you're the author, move your linked issue to `In review` when your PR is ready for feedback. -3. **Respond promptly** — When status is `Waiting for customer` and the **`Author Attention Needed`** label is applied, the team is blocked on your response. Address the feedback, push the updates, **remove the `Author Attention Needed` label**, and move Status back to `In review` (or `In progress` for major rework) so reviewers know the PR is ready for another pass. +3. **Respond promptly** — When status is `Waiting for customer` and the **`Author attention needed`** label is applied, the team is blocked on your response. Address the feedback, push the updates, **remove the `Author attention needed` label**, and move Status back to `In review` (or `In progress` for major rework) so reviewers know the PR is ready for another pass. If you are a community contributor, you may post a comment `/ready` on the PR to automate removing the label and re-engaging reviewers on the PR. 4. **Flag API changes early** — Set **API Impact** appropriately so PM review can happen in parallel with code review. 5. **Don't skip validation** — Even after approval, the PR stays in `In validation` until CI passes and any manual verification is complete. ### Guidelines for Reviewers -1. **Signal that author action is required** — When your review requests changes (whether via formal "Request changes" or a comment that requires author follow-up), apply the **`Author Attention Needed`** label to the PR and move its linked issue to `Waiting for customer`. This pair (label + status) is what the team uses to find PRs that are blocked on the author versus those still awaiting review. -2. **Don't remove the label yourself** — Leave the `Author Attention Needed` label in place until the author pushes updates addressing the feedback; the author is responsible for removing it when they hand the PR back for review. -3. **Re-review promptly** — Once the author removes the label and Status returns to `In review`, pick the PR back up so it doesn't stall. +1. **Signal that author action is required** — When your review requests changes (whether via formal "Request changes" or a comment that requires author follow-up), apply the **`Author attention needed`** label to the PR and move its linked issue to `Waiting for customer`. This pair (label + status) is what the team uses to find PRs that are blocked on the author versus those still awaiting review. +2. **Don't remove the label yourself** — Leave the `Author attention needed` label in place until the author pushes updates addressing the feedback; the author is responsible for removing it when they hand the PR back for review. +3. **Re-review promptly** — Once the author removes the label, the PR status should be updated either by Author (if they have permissions) or the reviewer to `In review`, so it doesn't stall and is picked up for review on time. 4. **Only reviewers resolve their own feedback threads** — A review comment thread should only be resolved by the reviewer who created it, once they are satisfied the feedback has been addressed. Authors should not resolve reviewer threads themselves. ## Stale PR Management @@ -198,7 +198,7 @@ One or more Microsoft team members will review every PR prior to merge. They wil - Address all review comments before the PR can be merged. - Feel free to ask questions if feedback is unclear. - Push additional commits to address feedback (these will be squashed later). -- When a reviewer leaves feedback that needs your action, they will set Status to `Waiting for customer` and apply the **`Author Attention Needed`** label. After you push updates, **remove the `Author Attention Needed` label** and move Status back to `In review` so reviewers know the PR is ready for another pass. +- When a reviewer leaves feedback that needs your action, they will set Status to `Waiting for customer` and apply the **`Author attention needed`** label. After you push updates, **remove the `Author attention needed` label** or post a comment `/ready` to do so, so the reviewers know the PR is ready for another pass. ## Merging Pull Requests From 5a4e16c79b05de77dc85467799ce7b5ffecb3064 Mon Sep 17 00:00:00 2001 From: Cheena Malhotra Date: Thu, 11 Jun 2026 17:00:25 -0700 Subject: [PATCH 12/12] Feedback --- CONTRIBUTING.md | 2 +- contributing-workflow.md | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e032b25aa1..13ee1ef83b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -134,7 +134,7 @@ Security issues and bugs should be reported privately, via email, to the Microso - **New features from community PRs must be driven by creating a GitHub issue first.** Discuss the proposal in the issue before starting implementation. This helps avoid wasted effort and ensures alignment with project goals. - **Community contributions must not derail the project roadmap.** We prioritize features and fixes according to our published milestones. PRs that conflict with or distract from active roadmap items may be deferred. - **Our maintainers reserve the right to reject PRs** that do not meet the required criteria to qualify for review. This includes PRs that: - - Lack a corresponding approved issue (i.e., an issue that has been reviewed, acknowledged, and agreed upon by maintainers — typically indicated by the **PM Approved** status in the GitHub Project board) + - Lack a corresponding approved issue (i.e., an issue that has been reviewed, acknowledged, and agreed upon by maintainers — typically indicated by the **`PM Approved`** field being set to **`Approved`** in the GitHub Project board) - Introduce breaking changes without prior discussion - Do not follow the project's coding standards and conventions - Are missing adequate test coverage diff --git a/contributing-workflow.md b/contributing-workflow.md index 9d86d5209d..be7fffdbf2 100644 --- a/contributing-workflow.md +++ b/contributing-workflow.md @@ -45,7 +45,6 @@ We use and recommend the following workflow: - It is OK for your PR to include a large number of commits. - PRs are merged via the default "Squash and Merge" strategy (see [Merging Pull Requests](#merging-pull-requests)), so your commit history is automatically collapsed into a single commit at merge time. -- If the PR is planned NOT to follow the default squash-and-merge path (for example, when the author requests "Merge and Commit" to preserve a meaningful commit series), you will be asked to squash your commits into one or some appropriately small number of commits before your PR is merged. ## PR - CI Process