This section describes how to review content.
1 - Reviewing pull requests
Anyone can review a documentation pull request. Visit the pull requests section in the Kubernetes website repository to see open pull requests.
Reviewing documentation pull requests is a great way to introduce yourself to the Kubernetes community. It helps you learn the code base and build trust with other contributors.
Before reviewing, it's a good idea to:
- Read the content guide and style guide so you can leave informed comments.
- Understand the different roles and responsibilities in the Kubernetes documentation community.
Before you begin
Before you start a review:
- Read the CNCF Code of Conduct and ensure that you abide by it at all times.
- Be polite, considerate, and helpful.
- Comment on positive aspects of PRs as well as changes.
- Be empathetic and mindful of how your review may be received.
- Assume good intent and ask clarifying questions.
- Experienced contributors, consider pairing with new contributors whose work requires extensive changes.
Review process
In general, review pull requests for content and style in English. The figure below outlines the steps for the review process. The details for each step follow.
choose Comment] end subgraph third[Select PR] direction TB T[ ] -.- J[read description
and comments]--> K[preview changes in
Netlify preview build] end A[Review open PR list]--> B[Filter open PRs
by label] B --> third --> fourth classDef grey fill:#dddddd,stroke:#ffffff,stroke-width:px,color:#000000, font-size:15px; classDef white fill:#ffffff,stroke:#000,stroke-width:px,color:#000,font-weight:bold classDef spacewhite fill:#ffffff,stroke:#fff,stroke-width:0px,color:#000 class A,B,J,K,M,N,O grey class S,T spacewhite class third,fourth white
Figure - Review process steps
-
Go to https://github.com/kubernetes/website/pulls. You see a list of every open pull request against the Kubernetes website and docs.
-
Filter the open PRs using one or all of the following labels:
cncf-cla: yes
(Recommended): PRs submitted by contributors who have not signed the CLA cannot be merged. See Sign the CLA for more information.language/en
(Recommended): Filters for english language PRs only.size/<size>
: filters for PRs of a certain size. If you're new, start with smaller PRs.
Additionally, ensure the PR isn't marked as a work in progress. PRs using the
work in progress
label are not ready for review yet. -
Once you've selected a PR to review, understand the change by:
- Reading the PR description to understand the changes made, and read any linked issues
- Reading any comments by other reviewers
- Clicking the Files changed tab to see the files and lines changed
- Previewing the changes in the Netlify preview build by scrolling to the PR's build check section at the bottom of the Conversation tab and clicking the deploy/netlify line's Details link.
-
Go to the Files changed tab to start your review.
- Click on the
+
symbol beside the line you want to comment on. - Fill in any comments you have about the line and click either Add single comment (if you have only one comment to make) or Start a review (if you have multiple comments to make).
- When finished, click Review changes at the top of the page. Here, you can add add a summary of your review (and leave some positive comments for the contributor!), approve the PR, comment or request changes as needed. New contributors should always choose Comment.
- Click on the
Reviewing checklist
When reviewing, use the following as a starting point.
Language and grammar
- Are there any obvious errors in language or grammar? Is there a better way to phrase something?
- Are there any complicated or archaic words which could be replaced with a simpler word?
- Are there any words, terms or phrases in use which could be replaced with a non-discriminatory alternative?
- Does the word choice and its capitalization follow the style guide?
- Are there long sentences which could be shorter or less complex?
- Are there any long paragraphs which might work better as a list or table?
Content
- Does similar content exist elsewhere on the Kubernetes site?
- Does the content excessively link to off-site, individual vendor or non-open source documentation?
Website
- Did this PR change or remove a page title, slug/alias or anchor link? If so, are there broken links as a result of this PR? Is there another option, like changing the page title without changing the slug?
- Does the PR introduce a new page? If so:
- Is the page using the right page content type and associated Hugo shortcodes?
- Does the page appear correctly in the section's side navigation (or at all)?
- Should the page appear on the Docs Home listing?
- Do the changes show up in the Netlify preview? Be particularly vigilant about lists, code blocks, tables, notes and images.
Other
For small issues with a PR, like typos or whitespace, prefix your comments with nit:
. This lets the author know the issue is non-critical.
2 - Reviewing for approvers and reviewers
SIG Docs Reviewers and Approvers do a few extra things when reviewing a change.
Every week a specific docs approver volunteers to triage and review pull requests. This person is the "PR Wrangler" for the week. See the PR Wrangler scheduler for more information. To become a PR Wrangler, attend the weekly SIG Docs meeting and volunteer. Even if you are not on the schedule for the current week, you can still review pull requests (PRs) that are not already under active review.
In addition to the rotation, a bot assigns reviewers and approvers for the PR based on the owners for the affected files.
Reviewing a PR
Kubernetes documentation follows the Kubernetes code review process.
Everything described in Reviewing a pull request applies, but Reviewers and Approvers should also do the following:
-
Using the
/assign
Prow command to assign a specific reviewer to a PR as needed. This is extra important when it comes to requesting technical review from code contributors.Note: Look at thereviewers
field in the front-matter at the top of a Markdown file to see who can provide technical review. -
Making sure the PR follows the Content and Style guides; link the author to the relevant part of the guide(s) if it doesn't.
-
Using the GitHub Request Changes option when applicable to suggest changes to the PR author.
-
Changing your review status in GitHub using the
/approve
or/lgtm
Prow commands, if your suggestions are implemented.
Commit into another person's PR
Leaving PR comments is helpful, but there might be times when you need to commit into another person's PR instead.
Do not "take over" for another person unless they explicitly ask you to, or you want to resurrect a long-abandoned PR. While it may be faster in the short term, it deprives the person of the chance to contribute.
The process you use depends on whether you need to edit a file that is already in the scope of the PR, or a file that the PR has not yet touched.
You can't commit into someone else's PR if either of the following things is true:
-
If the PR author pushed their branch directly to the https://github.com/kubernetes/website/ repository. Only a reviewer with push access can commit to another user's PR.
Note: Encourage the author to push their branch to their fork before opening the PR next time. -
The PR author explicitly disallows edits from approvers.
Prow commands for reviewing
Prow is
the Kubernetes-based CI/CD system that runs jobs against pull requests (PRs). Prow
enables chatbot-style commands to handle GitHub actions across the Kubernetes
organization, like adding and removing labels, closing issues, and assigning an approver. Enter Prow commands as GitHub comments using the /<command-name>
format.
The most common prow commands reviewers and approvers use are:
Prow Command | Role Restrictions | Description |
---|---|---|
/lgtm |
Anyone, but triggers automation if a Reviewer or Approver uses it | Signals that you've finished reviewing a PR and are satisfied with the changes. |
/approve |
Approvers | Approves a PR for merging. |
/assign |
Reviewers or Approvers | Assigns a person to review or approve a PR |
/close |
Reviewers or Approvers | Closes an issue or PR. |
/hold |
Anyone | Adds the do-not-merge/hold label, indicating the PR cannot be automatically merged. |
/hold cancel |
Anyone | Removes the do-not-merge/hold label. |
See the Prow command reference to see the full list of commands you can use in a PR.
Triage and categorize issues
In general, SIG Docs follows the Kubernetes issue triage process and uses the same labels.
This GitHub Issue filter finds issues that might need triage.
Triaging an issue
- Validate the issue
- Make sure the issue is about website documentation. Some issues can be closed quickly by answering a question or pointing the reporter to a resource. See the Support requests or code bug reports section for details.
- Assess whether the issue has merit.
- Add the
triage/needs-information
label if the issue doesn't have enough detail to be actionable or the template is not filled out adequately. - Close the issue if it has both the
lifecycle/stale
andtriage/needs-information
labels.
- Add a priority label (the Issue Triage Guidelines define priority labels in detail)
Label | Description |
---|---|
priority/critical-urgent |
Do this right now. |
priority/important-soon |
Do this within 3 months. |
priority/important-longterm |
Do this within 6 months. |
priority/backlog |
Deferrable indefinitely. Do when resources are available. |
priority/awaiting-more-evidence |
Placeholder for a potentially good issue so it doesn't get lost. |
help or good first issue |
Suitable for someone with very little Kubernetes or SIG Docs experience. See Help Wanted and Good First Issue Labels for more information. |
At your discretion, take ownership of an issue and submit a PR for it (especially if it's quick or relates to work you're already doing).
If you have questions about triaging an issue, ask in #sig-docs
on Slack or
the kubernetes-sig-docs mailing list.
Adding and removing issue labels
To add a label, leave a comment in one of the following formats:
/<label-to-add>
(for example,/good-first-issue
)/<label-category> <label-to-add>
(for example,/triage needs-information
or/language ja
)
To remove a label, leave a comment in one of the following formats:
/remove-<label-to-remove>
(for example,/remove-help
)/remove-<label-category> <label-to-remove>
(for example,/remove-triage needs-information
)`
In both cases, the label must already exist. If you try to add a label that does not exist, the command is silently ignored.
For a list of all labels, see the website repository's Labels section. Not all labels are used by SIG Docs.
Issue lifecycle labels
Issues are generally opened and closed quickly. However, sometimes an issue is inactive after its opened. Other times, an issue may need to remain open for longer than 90 days.
Label | Description |
---|---|
lifecycle/stale |
After 90 days with no activity, an issue is automatically labeled as stale. The issue will be automatically closed if the lifecycle is not manually reverted using the /remove-lifecycle stale command. |
lifecycle/frozen |
An issue with this label will not become stale after 90 days of inactivity. A user manually adds this label to issues that need to remain open for much longer than 90 days, such as those with a priority/important-longterm label. |
Handling special issue types
SIG Docs encounters the following types of issues often enough to document how to handle them.
Duplicate issues
If a single problem has one or more issues open for it, combine them into a single issue.
You should decide which issue to keep open (or
open a new issue), then move over all relevant information and link related issues.
Finally, label all other issues that describe the same problem with
triage/duplicate
and close them. Only having a single issue to work on reduces confusion
and avoids duplicate work on the same problem.
Dead link issues
If the dead link issue is in the API or kubectl
documentation, assign them /priority critical-urgent
until the problem is fully understood. Assign all other dead link issues /priority important-longterm
, as they must be manually fixed.
Blog issues
We expect Kubernetes Blog entries to become outdated over time. Therefore, we only maintain blog entries less than a year old. If an issue is related to a blog entry that is more than one year old, close the issue without fixing.
Support requests or code bug reports
Some docs issues are actually issues with the underlying code, or requests for
assistance when something, for example a tutorial, doesn't work.
For issues unrelated to docs, close the issue with the kind/support
label and a comment
directing the requester to support venues (Slack, Stack Overflow) and, if
relevant, the repository to file an issue for bugs with features (kubernetes/kubernetes
is a great place to start).
Sample response to a request for support:
This issue sounds more like a request for support and less
like an issue specifically for docs. I encourage you to bring
your question to the `#kubernetes-users` channel in
[Kubernetes slack](https://slack.k8s.io/). You can also search
resources like
[Stack Overflow](https://stackoverflow.com/questions/tagged/kubernetes)
for answers to similar questions.
You can also open issues for Kubernetes functionality in
https://github.com/kubernetes/kubernetes.
If this is a documentation issue, please re-open this issue.
Sample code bug report response:
This sounds more like an issue with the code than an issue with
the documentation. Please open an issue at
https://github.com/kubernetes/kubernetes/issues.
If this is a documentation issue, please re-open this issue.