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

Fix root OWNERS approvers #93637

Closed
dims opened this issue Aug 2, 2020 · 25 comments
Closed

Fix root OWNERS approvers #93637

dims opened this issue Aug 2, 2020 · 25 comments
Labels
committee/steering Denotes an issue or PR intended to be handled by the steering committee. kind/bug Categorizes issue or PR as related to a bug. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. sig/contributor-experience Categorizes an issue or PR as relevant to SIG Contributor Experience.

Comments

@dims
Copy link
Member

dims commented Aug 2, 2020

Preface: IMO, we should not fix root OWNERS approvers by adding more people to it. We should fix it by distributing the 
responsibility (per area) to SIG TLs, and sub-project TLs. I actually think we should consider removing folks from root OWNERS approvers.

Follow up from: #85638 (comment)

@bgrant0607 @brendandburns @dchen1107 @lavalamp @liggitt @smarterclayton @thockin @wojtek-t , your thoughts please!

It's been a while since the previous discussion in #85638. So at this point either we move forward by implementing what @lavalamp mentions above or document steps to add someone to the root OWNERS. Let's pick one and move on.

@dims dims added the kind/bug Categorizes issue or PR as related to a bug. label Aug 2, 2020
@k8s-ci-robot k8s-ci-robot added the needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. label Aug 2, 2020
@dims
Copy link
Member Author

dims commented Aug 2, 2020

/sig contributor-experience

@k8s-ci-robot k8s-ci-robot added sig/contributor-experience Categorizes an issue or PR as relevant to SIG Contributor Experience. and removed needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. labels Aug 2, 2020
@dims
Copy link
Member Author

dims commented Aug 2, 2020

/committee steering

@k8s-ci-robot k8s-ci-robot added the committee/steering Denotes an issue or PR intended to be handled by the steering committee. label Aug 2, 2020
@nikhita nikhita added this to Inbox (unprioritized) in committee-steering via automation Aug 3, 2020
@thockin
Copy link
Member

thockin commented Aug 3, 2020

Without a way to self-limit, I think the group should be kept very small. As I think about it, I intentionally DON'T approve PRs because I don't want it to apply too broadly.

I suggested on slack for contribex: What if I could /approve <dir> and that would only count as approval for that specific
directory? I often want to /approve an API change but not the whole PR. Talking to other root-OWNERs (overly-empowered are we) it seems like a useful self-limit on authority.

@dims
Copy link
Member Author

dims commented Aug 3, 2020

@spiffxp @nikhita WDYT? (looked up the /approve plugin and saw your finger prints there)

@spiffxp
Copy link
Member

spiffxp commented Aug 4, 2020

I want to get @cjwagner's input, I think he's got the most prior experience with approvers and repoowners

I think it's a good idea. My gut tells me it would be somewhat involved, N weeks ish

@spiffxp
Copy link
Member

spiffxp commented Aug 4, 2020

I also think, separately, that we should consider hitting root OWNERS a failure mode and immediately address by adding OWNERS in a deeper/more relevant dir.

It used to be that the approval message would suggest the fewest possible approvers who could cover N OWNERS files but I think it now outputs leaf approvers.

Something like: either the root owner should boostrap a deeper file with themselves and then seek out more appropriate people, or the author of the PR shouldn't be allowed to merge it until they've added an OWNERS file that would rectify the situation going forward.

@bgrant0607
Copy link
Member

Regarding removing people from root approvers, I volunteer to be moved to emeritus status, as I can't respond to most/any PR approval requests, anyway.

@bgrant0607
Copy link
Member

Do we have a way to audit uses of root OWNERS approval power? If not, that would be useful to implement.

I used to get regular pings to approve changes to CHANGELOG.md. CONTRIBUTING.md and .gitignore were recently updated.

go.mod already has a distinct reviewer set.

@BenTheElder
Copy link
Member

BenTheElder commented Aug 4, 2020 via email

@BenTheElder
Copy link
Member

Something like: either the root owner should boostrap a deeper file with themselves and then seek out more appropriate people, or the author of the PR shouldn't be allowed to merge it until they've added an OWNERS file that would rectify the situation going forward.

plenty of files can't be moved out of the root easily (think go.mod, go.sum, .gitignore ...) and lots of tools are unhappy with symlinks.

@brendandburns
Copy link
Contributor

I'm with @bgrant0607 that I'm ok being moved to emeritus, I don't think I have approved a PR in > 1 year. I'm also happy to continue if that is preferrable, as can be seen from the stats, I'm not abusing the power :)

@cjwagner
Copy link
Member

cjwagner commented Aug 4, 2020

This sounds good to me, here are my two cents:
Addressing kubernetes/test-infra#7690 by rewriting the approve plugin would allow the plugin to support the OWNERS file regular expression filtering. That would help with defining different approvers for files in the same directory like what might be desired for go.sum or files with specific extensions. Adding support for /approve <dir|file> also sounds like a good way to support more granular approvals, but that would similarly be difficult to add to the existing approve plugin implementation. So the approve plugin would need a significant revamp as Aaron mentioned, but it seems worthwhile and overdue to me.

Forbidding root level OWNERS approval unless the PR includes an update to the OWNERS files such that root approval would not be required once merged is an interesting idea. That would mean that root level approvers would really only be responsible for delegating approval permissions (possibly to themselves in non-root OWNERS though). This would definitely need to be an opt-in feature and I'm not sure where it would be best to implement (approve or verify-owners), but that seems like a good way to prevent root level OWNERS from acting as a catch all. We'd probably want to exclude regex filtered approvers in the root OWNERS so that we could delegate approvals for the root level files that Ben mentioned and not consider those root approvers.

@lavalamp
Copy link
Member

lavalamp commented Aug 4, 2020

Would it be enough to make root owners non-recursive? Would e.g. adding new top-level directories play nicely with that?

@nikhita
Copy link
Member

nikhita commented Aug 5, 2020

I think we'll need a KEP for the approval plugin revamp before moving onto the implementation (I have previously looked at the plugin and have bandwidth to work on this now).

The KEP would cover:

  • Support for granular approval - /approve <dir|file>
  • Support for regex filtering for approvers in OWNERS - approve plugin makes assumptions about OWNERS file implementation test-infra#7690
    • Have an opt-in feature where catch-all-root-approvers (i.e. root approvers having privileges to approve * at root) would only be required while changing the root OWNERS file to update the regex, adding new files at root, etc.
  • Ability to track usage of blanket root approval vs selective/granular approval - this doesn't need to be part of prow, but we should make sure that it plays nicely with tools like devstats, etc

prevent root level OWNERS from acting as a catch all.

Technically, once we have regex filtered approvers in place, we don't need to have catch-all-root-approvers at all. We can have "root" approvers defined for files like go.mod, go.sum, etc and have leaf approvers for each sub-directory. Whether we choose to have catch-all-root-approvers would then be a policy thing IMO. Edit: misread what @cjwagner wrote, added some more things into the KEP point above!

Added this to today's SIG Contribex meeting agenda so that we can reach consensus and look at starting work on this.

@nikhita nikhita added this to Backlog in Contributor Experience via automation Aug 5, 2020
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Nov 3, 2020
@nikhita
Copy link
Member

nikhita commented Nov 3, 2020 via email

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Nov 3, 2020
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Feb 1, 2021
@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Mar 3, 2021
@nikhita
Copy link
Member

nikhita commented Mar 3, 2021 via email

@k8s-ci-robot k8s-ci-robot removed the lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. label Mar 3, 2021
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jun 1, 2021
@nikhita
Copy link
Member

nikhita commented Jun 1, 2021

/remove-lifecycle stale
k/enhancements issue - kubernetes/enhancements#2768

cc @ykakarap

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jun 1, 2021
@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle stale
  • Mark this issue or PR as rotten with /lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Aug 30, 2021
@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue or PR as fresh with /remove-lifecycle rotten
  • Close this issue or PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Sep 29, 2021
@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Reopen this issue or PR with /reopen
  • Mark this issue or PR as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close

@k8s-ci-robot
Copy link
Contributor

@k8s-triage-robot: Closing this issue.

In response to this:

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages issues and PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Reopen this issue or PR with /reopen
  • Mark this issue or PR as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Contributor Experience automation moved this from Backlog to Done Oct 29, 2021
committee-steering automation moved this from Inbox (unprioritized) to Done Oct 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
committee/steering Denotes an issue or PR intended to be handled by the steering committee. kind/bug Categorizes issue or PR as related to a bug. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. sig/contributor-experience Categorizes an issue or PR as relevant to SIG Contributor Experience.
Development

No branches or pull requests