Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Improve clarity/asks in PR template and request additional metadata #81278

Closed
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
121 changes: 86 additions & 35 deletions .github/PULL_REQUEST_TEMPLATE.md
@@ -1,64 +1,115 @@
<!-- Thanks for sending a pull request! Here are some tips for you:
<!--
Thanks for submitting a pull request!

1. If this is your first time, please read our contributor guidelines: https://git.k8s.io/community/contributors/guide#your-first-contribution and developer guide https://git.k8s.io/community/contributors/devel/development.md#development-guide
2. Please label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request. For reference on required PR/issue labels, read here:
https://git.k8s.io/community/contributors/devel/sig-release/release.md#issuepr-kind-label
3. Ensure you have added or ran the appropriate tests for your PR: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
4. If you want *faster* PR reviews, read how: https://git.k8s.io/community/contributors/guide/pull-requests.md#best-practices-for-faster-reviews
5. Follow the instructions for writing a release note: https://git.k8s.io/community/contributors/guide/release-notes.md
6. If the PR is unfinished, see how to mark it: https://git.k8s.io/community/contributors/guide/pull-requests.md#marking-unfinished-pull-requests
If this is your first time submitting a PR, please familiarise yourself with:

Contributor Guidelines
https://git.k8s.io/community/contributors/guide#your-first-contribution

Developer Guide
https://git.k8s.io/community/contributors/devel/development.md#development-guide

The following are additional useful links for PRs:

Best Practices for Faster Reviews
https://git.k8s.io/community/contributors/guide/pull-requests.md#best-practices-for-faster-reviews

Marking Unfinished PRs for Review or as a Work in Progress (WIP)
https://git.k8s.io/community/contributors/guide/pull-requests.md#marking-unfinished-pull-requests

Has consideration been given to a test plan related to this PR? If appropriate, were tests added/modified to cover this PR? You can find more information in:

Testing Guide
https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
-->

**Which is the sponsoring or primary SIG associated with this PR?**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A PR can touch areas that target multiple SIGs and we already have this information with the sig/ labels, so asking to mention the SIGs here would lead to multiple sources of truth 😬

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@paulbouwer for some additional context. Depending on what areas of the codebase are touched by the PR, label(s) will automatically be applied via theOWNERS files. For example, this PR touches content in the .github directory and k8s-ci-robot automatically applied the label sig/contributor-experience

labels:
- sig/contributor-experience

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this is unneeded.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nikhita - this was specifically targeting the primary sig based on the request in issue #668. @onyiny-ang - it may be worth discussing this in more detail. Looking at the release-notes-draft.md, I'm not sure I can see the reason for the primary sig collection.

@mrbobbytables - I have been wondering how that aspect of the label magic worked. Thanks 👍

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry in advance because this will be a bit long winded, but from the release notes standpoint, we were hoping to collect the singular SIG that is primarily responsible for the change the PR brings so that when we are sorting release notes (or ideally programming the release notes tool to collect release notes for a release) we are able to easily identify which SIG the note should be filed under. Having multiple SIG labels helps identify all areas that a PR may impact or contribute changes to and the release notes website makes this easier for users to digest.

However, for the release notes draft, the relnotes tool sorts each note that is tagged with multiple SIG labels to buckets created for that note (ie. there will be a SIG API Machinery bucket for PRs with only that SIG label as well as a bucket for all notes labelled with both SIG API Machinery and SIG Cluster Lifecycle) and this makes things confusing for the relnotes team and contributors trying to find all of the pertinent notes associated with what their SIG has accomplished/changed for a release. For the relnotes team, which may be fairly new contributors, it can be impossible to determine which SIG to sort the PR under without reaching out to every contributor who submitted a PR tagged with multiple labels.

As we're still generating the human curated notes, it would greatly help the relnotes team and contributors who have to look through the release notes draft if we were able to identify the SIG that the release note should be filed under automatically. This was what I had in mind when I was requesting the "primary-sig" field to be added. BUT I'm certainly open to better ideas!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems like this is a non-issue for the release notes website. It is just the markdown release notes draft where this is an issue. And given how many of the current release notes fall into multiple sigs, I can see how this can create a lot of manual work.

<!--
Label the sponsoring or primary SIG associated with this PR.

For reference on available SIGs, you can find more details at:
https://github.com/kubernetes/test-infra/blob/master/label_sync/labels.md#labels-that-apply-to-all-repos-for-both-issues-and-prs

Add only ONE sig here via a /sig-primary <name> entry.
-->
/sig-primary

**What type of PR is this?**
> Uncomment only one ` /kind <>` line, hit enter to put that in a new line, and remove leading whitespaces from that line:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer to keep the "uncomment" format since it's easier than typing it out completely.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll revert and add the "uncomment" text back in. Can a PR specify multiple "kinds"? Does this make sense. If so, should I remove the language around only selecting one?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can a PR specify multiple "kinds"?

Generally, most PRs have a single "kind" but it is possible to have multiple "kinds" too -- a PR can have kind/feature and kind/api-change.

If so, should I remove the language around only selecting one?

No strong opinions on this one. I think it should be fine to remove the language around selecting one, but a thing to note here is that we need at least one "kind" or else the PR will get the needs-kind label and won't get merged. 😬

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nikhita we were primarily hoping for something to signify a deprecation. Whether a kind/deprecation label or just a deprecation label. If kind/deprecation is used, it would make sense to have more than one kind--but this may mean that it is more confusing for contributors. Perhaps just a label would be best.

It may also be useful to have a metrics-change label . . .

We have changed the release notes template significantly over the past couple of releases with deprecations and metrics as well as urgent upgrade notes being added. Since this is becoming the "way we do relnotes by hand" some tooling to support further automation around these headings would prevent a scramble just prior to the release and reduce the strain on the relnotes team/contributors who consistently help out 😄

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nikhita The use of blockquote here and the requirement for having to hit enter and remove leading whitespace felt complicated. I wish markdown had a line comment character that we could use here.

I have updated the PR by using the ~~ strikethrough wrapping characters. It is less visually busy in the rendered version. Thoughts? At this point, after playing with a number of options to improve this, I'm at a loss. So if the strikeththrough option is not appealing to everyone, I'll move it back to blockquotes.

>
> /kind api-change
> /kind bug
> /kind cleanup
> /kind design
> /kind documentation
> /kind failing-test
> /kind feature
> /kind flake
<!--
Label this pull request according to what type of issue you are addressing, especially if this is a release targeted pull request.

For reference on required PR labels, you can find more details at:
https://git.k8s.io/community/contributors/devel/sig-release/release.md#issuepr-kind-label

Uncomment at least one of the following /kind entries that are relevant to this PR. You can do this by removing the strikethrough characters `~~` wrapping the entries you want associated with this PR.
-->
~~/kind api-change~~
~~/kind bug~~
~~/kind cleanup~~
~~/kind design~~
~~/kind documentation~~
~~/kind failing-test~~
~~/kind feature~~
~~/kind flake~~

**What this PR does / why we need it**:


**Which issue(s) this PR fixes**:
<!--
*Automatically closes linked issue when PR is merged.
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
_If PR is about `failing-tests or flakes`, please post the related issues/tests in a comment and do not use `Fixes`_*
Add references to issues that are fixed by this PR by using one or more of the following templates:

Fixes #<issue number>
Fixes <issue url>

NOTE: The linked issue will automatically be closed when the PR is merged.

If the PR is about failing-tests or flakes, please post the related issues/tests in a comment and do not use the Fixes templates above.
-->
Fixes #

**Special notes for your reviewer**:

**Does this PR introduce a user-facing change?**:

**What user facing changes are introduced by this PR?**:
<!--
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
Indicate whether there are any user facing changes that should be added to the Release Notes.

If there are no user facing changes, write "None" text in the release-note block below. If your PR does introduce user facing changes, then a release note is required and should be added in the release-note block below.

If the PR requires additional action from users switching to the new release, start the release-notes block with the text "Action required".

Familiarise yourself with the instructions for writing a release note:
https://git.k8s.io/community/contributors/guide/release-notes.md
-->
```release-note

```

**Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.**:
**Should this PR be associated with a deprecation notice?**
<!--
Indicate whether this PR implements a change that requires users to be informed of a deprecation of behaviour.

If your PR does require a deprecation note, then remove the `None` from the deprecation-note block below and add your notes.
-->
```deprecation-note
None
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer not to default this because we want people to consciously apply the release note. An empty block will lead to do-not-merge/release-note-label-needed and will prevent merge but defaulting can automatically merge a PR in case someone forgot to mention the release note.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer not to default this because we want people to consciously apply the release note. An empty block will lead to do-not-merge/release-note-label-needed and will prevent merge but defaulting can automatically merge a PR in case someone forgot to mention the release note.

Very much this ^^^

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added this in since there are a large number of release notes with variations of none, n/a etc. I wanted the default to help those folks. But I totally see both of your concerns now. I'm slowly building up an understanding of the inter-dependent bits here.

I'll remove the default and adjust the comment appropriately.

```

**Additional documentation e.g., KEPs (Kubernetes Enhancement Proposals), usage docs, etc.**:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would not change this whole section again in this PR to move faster forward.

<!--
This section can be blank if this pull request does not require a release note.
Provide links to any additional relevant documentation in the docs block below ONLY if you have added a release note, otherwise leave it blank.

The Kubernetes Release Notes website (https://relnotes.k8s.io) provides additional documentation to the end users about the changes in this PR.

When adding links which point to resources within git repositories, like
KEPs or supporting documentation, please reference a specific commit and avoid
linking directly to the master branch. This ensures that links reference a
specific point in time, rather than a document that may change over time.
If you decide to add links which point to resources within git repositories, please ensure that the appropriate revision is included in the link and not generic ones like `master`. This ensures that links reference a specific point in time, rather than a document that may change over time. The same applies to external documentation, which may be not available any more because it got updated to a more recent version.

See here for guidance on getting permanent links to files: https://help.github.com/en/articles/getting-permanent-links-to-files

Please use the following format for linking documentation:
- [KEP]: <link>
- [Usage]: <link>
- [Other doc]: <link>
Use one or more of the following templates in the docs block for linking to documentation:
- [KEP]: <url>
- [Usage]: <url>
- [Other doc]: <url>
-->
```docs

Expand Down