Skip to content

docs: introduce PipeCD community contributor ladder and automated generation (#6548) - #7383

Draft
Ankitdotraider wants to merge 2 commits into
pipe-cd:masterfrom
Ankitdotraider:feat/contributor-ladder
Draft

Ankitdotraider wants to merge 2 commits into
pipe-cd:masterfrom
Ankitdotraider:feat/contributor-ladder

Conversation

@Ankitdotraider

@Ankitdotraider Ankitdotraider commented Sep 15, 2026 •

Copy link
Copy Markdown

What this PR does
Fixes #6548
Adds a contributor ladder so we can recognize people who've had PRs merged into PipeCD, something that's come up a few times in the newcomers meeting and got discussed on the linked issue.
The generator script (scripts/generate_contributors.py) hits the GitHub API for merged PRs and buckets contributors into three tiers by count: Newcomer at 1, Contributor at 2-4, Core Contributor at 5+ (also the point where someone's eligible to ask about org membership). Bots get filtered out. It writes CONTRIBUTORS.md and updates the docs page.
There's a workflow that reruns this daily and on manual trigger, only committing if something actually changed. Docs page explains how the tiers work.
CONTRIBUTORS.md in this PR is just the initial seed from running it once locally.

Tier cutoffs are just a first guess and happy to change it as the reviewer wants me to.

Checklist

  • Commits are signed with DCO (Signed-off-by)
  • Documentation added and previewed
  • Automated workflow and script tested

Copilot AI lite review requested due to automatic review settings September 15, 2026 11:12
@netlify

netlify Bot commented Sep 15, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for pipecd-site ready!

Name Link
🔨 Latest commit f74b0cf
🔍 Latest deploy log https://app.netlify.com/projects/pipecd-site/deploys/6ab8095ae88257000817c8c1
😎 Deploy Preview https://deploy-preview-7383--pipecd-site.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Unresolved workflow, generator, and RSS issues—including an unpinned privileged action—block approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds an automated PipeCD contributor ladder based on merged pull requests, generated contributor documentation, daily refresh automation, and RSS configuration.

Changes:

  • Adds GitHub API-based contributor generation.
  • Adds ladder documentation and CONTRIBUTORS.md.
  • Adds scheduled workflow automation.
  • Adds RSS and Hugo author configuration.
File summaries
File Summary
scripts/generate_contributors.py Generates contributor tiers and documentation; requires fixes for API pagination, timeouts, repository handling, and configurable tier text.
docs/layouts/_default/list.rss.xml Adds an RSS override, but author metadata lookups do not match the configured Hugo author block.
docs/content/en/docs-dev/contribution-guidelines/contributor-ladder.md Documents contributor tiers, counting rules, and eligibility.
docs/config.toml Adds author and security configuration; the author configuration is not consumed by the RSS template.
CONTRIBUTORS.md Provides the initial generated contributor listing.
.github/workflows/update-contributors.yml Automates refreshes; requires fixes for caching, concurrency, action pinning, publication triggering, and timestamp-driven commits.
Review details

Suppressed comments (8)

.github/workflows/update-contributors.yml:59

  • Even aside from GITHUB_TOKEN event suppression, this commit message contains [skip ci], which prevents push-triggered workflows such as publish_site from running. The generated docs will therefore be committed but the live site will not rebuild; remove the skip marker and use a token whose push can trigger workflows, or explicitly dispatch the publication workflow.
          git commit -m "docs: update contributors ladder and documentation [skip ci]"
          git push

.github/workflows/update-contributors.yml:50

  • Because the generator always embeds the current timestamp in both output files, this git diff is non-empty on every daily run even when no contributor data changed. The scheduled job will therefore create a commit every day, contrary to the apparent change-only behavior and adding avoidable history/noise; remove the volatile timestamp or compare stable generated content before committing.
          if git diff --quiet CONTRIBUTORS.md docs/content/en/docs-dev/contribution-guidelines/contributor-ladder.md; then

docs/config.toml:58

  • The new RSS override reads .Site.Params.author, but the added configuration block is [author], which populates .Site.Author instead. As a result, the configured name and email are never emitted in the feed's editor/webmaster/item-author fields.
[author]
  name = "PipeCD Authors"
  email = "pipecd.dev@gmail.com"

docs/layouts/_default/list.rss.xml:30

  • This RSS author lookup has the same mismatch with the [author] configuration: .Site.Params.author.email is unset, so item-level <author> elements are omitted. Use .Site.Author as in the theme template.
      {{ with .Site.Params.author.email }}<author>{{.}}{{ with $.Site.Params.author.name }} ({{.}}){{end}}</author>{{end}}

scripts/generate_contributors.py:442

  • The generator only queries args.repo (the workflow passes pipe-cd/pipecd), so this requirement is not supported by the data shown in the ladder: PRs in other pipe-cd repositories are neither counted nor listed. Either aggregate all organization repositories or state that the five PRs must be in pipe-cd/pipecd.
            "1. Have at least **5 merged PRs** in repositories under the `pipe-cd` organization.",

scripts/generate_contributors.py:198

  • The Search API request also has no timeout, so --method search can hang indefinitely on a stalled connection. Use the same bounded request timeout as the pulls path.
        resp = session.get(url, headers=headers, params=params)

scripts/generate_contributors.py:379

  • The displayed repository name is hard-coded to pipe-cd/pipecd, even though this function accepts repo and the CLI exposes --repo. Generating the docs for any other repository would produce a misleading description; interpolate the target repository consistently with the link.
        f"The contributor ladder tracks contributions based on **merged pull requests** to the [`pipe-cd/pipecd`](https://github.com/{repo}) repository:",

scripts/generate_contributors.py:385

  • The tier table duplicates the threshold values instead of deriving them from TIERS. Changing the advertised configurable constants at the top will update the generated headings but leave this table—and the membership text below—stale, so generate these ranges and eligibility wording from the configured tier data.
        "| Tier | Merged PRs | Description & Recognition |",
        "| :--- | :---: | :--- |",
        "| 🌱 **Newcomer** | **1** | Welcome to the community! Listed in the Newcomers tier. |",
        "| 🛠️ **Contributor** | **2–4** | Continued active involvement and consistent contributions across any part of the project. |",
        "| 🚀 **Core Contributor** | **5+** | Established and trusted contributors with a strong track record. Eligible to apply for membership in the `pipe-cd` GitHub organization. |",
  • Files reviewed: 6/6 changed files
  • Comments generated: 7
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/update-contributors.yml Outdated
Comment thread .github/workflows/update-contributors.yml Outdated
Comment thread .github/workflows/update-contributors.yml Outdated
Comment thread docs/layouts/_default/list.rss.xml Outdated
Comment thread scripts/generate_contributors.py Outdated
Comment thread scripts/generate_contributors.py Outdated
Comment thread scripts/generate_contributors.py Outdated
@Ankitdotraider
Ankitdotraider marked this pull request as ready for review September 15, 2026 17:32
@Ankitdotraider
Ankitdotraider requested review from a team as code owners September 15, 2026 17:32
@Ankitdotraider
Ankitdotraider marked this pull request as draft September 15, 2026 17:33
@Ankitdotraider

Copy link
Copy Markdown
Author

cc: @rahulshendre

@harshitghagre

Copy link
Copy Markdown
Member

@Ankitdotraider can you please check deploy preview https://deploy-preview-7383--pipecd-site.netlify.app/docs/
also current branch has conflicts

image

@Ankitdotraider

Copy link
Copy Markdown
Author

ive looked Into it and fixed it, could you take another look at it

@codecov

codecov Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 30.36%. Comparing base (452addb) to head (a41ca86).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #7383      +/-   ##
==========================================
- Coverage   30.36%   30.36%   -0.01%     
==========================================
  Files         601      601              
  Lines       52622    52622              
==========================================
- Hits        15980    15977       -3     
- Misses      35123    35125       +2     
- Partials     1519     1520       +1     
Flag Coverage Δ
. 24.34% <ø> (ø)
.-pkg-app-pipedv1-plugin-analysis 29.19% <ø> (ø)
.-pkg-app-pipedv1-plugin-ecs 33.75% <ø> (ø)
.-pkg-app-pipedv1-plugin-kubernetes 59.85% <ø> (ø)
.-pkg-app-pipedv1-plugin-kubernetes_multicluster 60.48% <ø> (ø)
.-pkg-app-pipedv1-plugin-scriptrun 58.22% <ø> (ø)
.-pkg-app-pipedv1-plugin-terraform 39.88% <ø> (ø)
.-pkg-app-pipedv1-plugin-wait 32.22% <ø> (ø)
.-pkg-app-pipedv1-plugin-waitapproval 55.14% <ø> (ø)
.-pkg-plugin-sdk 51.89% <ø> (-0.18%) ⬇️
.-tool-actions-gh-release 19.94% <ø> (ø)
.-tool-actions-plan-preview 28.04% <ø> (ø)
.-tool-codegen-protoc-gen-auth 0.00% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@rahulshendre

Copy link
Copy Markdown
Contributor

@Ankitdotraider, thank you for putting this together.
I think we should split the PR into 3 sections, it's easier to review that way.

  1. the ladder docs page itself, static and hand-written (roles + progression), this is the one that actually closes Docs: Add a Contributor Ladder defining community roles and progression #6548
  2. the generator script + CONTRIBUTORS.md
  3. the automation, once we all agree on how it should run

For now let's focus the 1st itself, in this PR, and 2 and 3 can be covered in follow ups!

@eeshaanSA @Ayushmore1214, please share your thoughts as well!

Add static contributor ladder documentation outlining community contributor
tiers (Newcomer, Contributor, Core Contributor), roles, responsibilities,
progression criteria, and GitHub organization membership requirements.

Closes pipe-cd#6548

Signed-off-by: Ankit Ram <ankiittt15@gmail.com>
@Ankitdotraider

Copy link
Copy Markdown
Author

Thanks for the suggestion!
I've scoped down this PR so it contains only the static Contributor Ladder documentation page (docs/content/en/docs-dev/contribution-guidelines/contributor-ladder.md) defining community roles, tiers, and progression guidelines to close #6548.

I've moved the generator script and automated daily GitHub Actions workflow to a separate follow up branch, and will open follow up PRs for them once we merge the initial ladder docs.

| :--- | :---: | :--- | :--- |
| 🌱 **Newcomer** | 1 merged PR | First-time contributor getting familiar with the codebase, submission workflows, and community norms. | Recognized community member; welcome to join community meetings and CNCF Slack. |
| 🛠️ **Contributor** | 2–4 merged PRs | Regular contributor actively submitting improvements, helping review issues, and participating in discussions. | Can be assigned issues directly; community peer recognition. |
| 🚀 **Core Contributor** | 5+ merged PRs | Experienced, trusted contributor with a sustained track record of quality contributions across the project. | Eligible to apply for `pipe-cd` GitHub organization membership; eligible for subproject reviewer roles. |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@Ankitdotraider do you think 5+ merged pr is enough to be a core contributor ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

no cutoff is rigid as of now and we can tweak it however we want to.

- Adhere to the contribution guidelines, developer certificate of origin (DCO) sign-off, and PR submission templates.
- **Privileges:**
- Welcomed into the PipeCD contributor community.
- Access to community Slack channels and bi-weekly community meetings.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Access to slack and bi-weekly is already open to public and I think the statement seems to be wrong here, because that's not a privilege you get after merging your first PR it is already available to anyone in the public

- Participate in issue discussions and help clarify bugs or feature requests.
- **Privileges:**
- Issue assignment upon request.
- Peer review participation on related pull requests.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

hey this is going a bit on confused side for me, can you elaborate the privileges of Contributor ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

bad wording, ill fix it

- Actively participate in project discussions and roadmap planning.
- **Privileges:**
- Eligible to request official membership in the [`pipe-cd`](https://github.com/pipe-cd) GitHub organization.
- Organization member badge on GitHub.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is again misleading, the reader would think that if he/she merges 5 PR's they would get the member badge, but apparently that's not the truth, lets have something like Eligible to get the Org member badge if accepted the membership above, maybe you can have some better wording here but just gave an example!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

how'd you like to play it out, would be helpful if you suggest something that you & other members would like to see

- **Privileges:**
- Eligible to request official membership in the [`pipe-cd`](https://github.com/pipe-cd) GitHub organization.
- Organization member badge on GitHub.
- Pathway toward becoming an official Reviewer or Subproject Maintainer.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

does positions like these really exists or we planning to add those ?

@Ayushmore1214

Copy link
Copy Markdown
Member

Hey @rahulshendre how are we planning to assign these roles, how frequent do we assign ? per project meet ?

@Ayushmore1214

Copy link
Copy Markdown
Member

@rahulshendre @eeshaanSA @khanhtc1202 for the org membership, as it is going to be very frequent requests due to the contributor ladder, I propose adding a issue template specifically for org membership request with the org-membership label on it, to reduce the maintainer load and make the process clear, there are already some project who are implementing this : https://github.com/backstage/community/blob/main/.github/ISSUE_TEMPLATE/org_member.yaml
happy to open a issue and PR if it sounds great!

- At least **5 merged PRs** in `pipe-cd` repositories.
- Attendance at least one community meeting.
2. Open an issue or reach out to the project maintainers in the `#pipecd` channel on [CNCF Slack](https://slack.cncf.io/) or during a community meeting.
3. Two existing maintainers will sponsor and approve the membership invitation.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

According to this : https://github.com/pipe-cd/pipecd/blob/master/CONTRIBUTING.md#join-our-team-on-github the membership doesn't requires sponsors, please check it out thank you!

### How to Apply:
1. Verify that you meet the requirements:
- At least **5 merged PRs** in `pipe-cd` repositories.
- Attendance at least one community meeting.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'd add a line saying PR counts are a minimum and maintainers will still use judgement
@Ankitdotraider @rahulshendre thoughts ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

yea that would be great to have a human judgment in the loop before handing out member badges

@Ayushmore1214 Ayushmore1214 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@Ankitdotraider how are we planning to remove the inactive contributors ?
this is great starting point btw, thanks!

@Ankitdotraider

Copy link
Copy Markdown
Author

@Ankitdotraider how are we planning to remove the inactive contributors ? this is great starting point btw, thanks!

we can have a 2 or 3 months non active window , where if a contributor isnt actively doing anything in the repo, like review, opening an issue or discussing with maintainers we label them as grey (or inactive) and then give a one month window before removing from the leader board. would be very happy to discuss if anyone else got any idea @rahulshendre @Ayushmore1214

- Remove misleading claim that Slack/community meeting access is a
  Newcomer privilege (it is open to the public)
- Clarify Contributor privileges: issue assignment means maintainers can
  officially assign GitHub issues to the contributor, enabling them to
  take clear ownership of work items
- Fix Core Contributor privileges: organization member badge is not
  automatically granted on reaching 5 PRs; it is granted at maintainer
  discretion after a successful membership application
- Remove mention of 'sponsor' requirement for org membership; per
  CONTRIBUTING.md no sponsors are required, just a ping in Slack or at
  a community meeting
- Add explicit note that PR counts are minimums and maintainers retain
  final judgment on tier progression and membership
- Align membership requirements section directly with CONTRIBUTING.md

Signed-off-by: Ankit Ram <ankiittt15@gmail.com>
@Ankitdotraider

Copy link
Copy Markdown
Author

pushed an update regarding the issues @Ayushmore1214 pointed:

  • Removed Slack/meetings from Newcomer "privileges" since it's already open to everyone, it's now framed as community recognition instead.
  • Clarified Contributor privileges: issue assignment means you can officially take ownership of GitHub issues.
  • Fixed the org member badge wording to make it clear it's not automatic & granted at maintainer discretion after applying.
  • Removed the sponsor requirement, aligned directly with what CONTRIBUTING.md already says.
  • Added a note in both the tier table header and the membership section that PR counts are minimums and maintainers retain final judgment.

On your issue template idea for org membership requests, thats really a great idea.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs: Add a Contributor Ladder defining community roles and progression

5 participants