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

Removing users inactive for 60 months from teams and repositories #75

Merged
merged 5 commits into from
Mar 4, 2024

Conversation

galargh
Copy link
Contributor

@galargh galargh commented Feb 26, 2024

Summary

This PR cleans up user access by removing users who have been inactive for over 60 months (5 years) from teams and repositories.

A user is deemed inactive if they haven't performed any of the following actions in the past 60 months in a repository in question or in any of the repositories the team in question grants access to:

  • created an issue or a pull request
  • commented on an issue or a pull request
  • reviewed a pull request
  • commented on a commit
  • pushed (in particular, force pushed) to a branch
  • created a branch
  • deleted a branch
  • merged a pull request
  • added a pull request to a merge queue

Any user who, after the introduction of the above changes, isn't a direct collaborator in any of the repositories and isn't a member of any teams is assigned to the Alumni team.

If a user's access to a repository or team should be restored, the appropriate line change should be reverted, and a comment starting with KEEP: (followed by a reason) should be added directly above that line.

This pertains to the "'archive' inactive users and teams" in ipfs/ipfs#511.

Who is this targeting?

The current PR is what results from a script to identify inactive users in an org.

Why is this being done?

See "Why do we care about periodically cleaning up permissions across the orgs?" in ipfs/ipfs#511

Is this set in stone?

No. This PR was created and being left open for some days to give awareness and incorporate feedback. We're not taking a "ask for permission" approach, as that would require way too much wrangling. Instead, we're giving visibility to what's proposed and inviting folks to comment and influence. A saving grace here is that none of this is a "one-way door". If something got messed up or missed, a follow-up PR can be done to correct it.

Is anyone being removed from the organization?

No. All existing members of the org are staying members. In the most reduced/scoped-down case, someone will still be part of an "Alumni" team in the org to signal their past involvement. Thank you for your past contributions, and we certainly welcome you to play a more active role in the future.

Timeline

2024-02-26: public PR
2024-02-28: notify affected parties with @mention:
2024-03-04: merge this change after incorporating feedback

Copy link
Contributor

github-actions bot commented Feb 26, 2024

Before merge, verify that all the following plans are correct. They will be applied as-is after the merge.

Terraform plans

ipld

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create
  - destroy

Terraform will perform the following actions:

  # github_repository_collaborator.this["go-car-priv:alvin-reyes"] will be destroyed
  # (because key ["go-car-priv:alvin-reyes"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "go-car-priv:alvin-reyes" -> null
      - permission = "pull" -> null
      - repository = "go-car-priv" -> null
      - username   = "alvin-reyes" -> null
    }

  # github_repository_collaborator.this["go-car-priv:hsanjuan"] will be destroyed
  # (because key ["go-car-priv:hsanjuan"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "go-car-priv:hsanjuan" -> null
      - permission = "push" -> null
      - repository = "go-car-priv" -> null
      - username   = "hsanjuan" -> null
    }

  # github_repository_collaborator.this["go-car-priv:jennijuju"] will be destroyed
  # (because key ["go-car-priv:jennijuju"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "go-car-priv:jennijuju" -> null
      - permission = "pull" -> null
      - repository = "go-car-priv" -> null
      - username   = "jennijuju" -> null
    }

  # github_repository_collaborator.this["go-car-priv:tippyflitsuk"] will be destroyed
  # (because key ["go-car-priv:tippyflitsuk"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "go-car-priv:TippyFlitsUK" -> null
      - permission = "pull" -> null
      - repository = "go-car-priv" -> null
      - username   = "TippyFlitsUK" -> null
    }

  # github_repository_collaborator.this["go-selector-store:hannahhoward"] will be destroyed
  # (because key ["go-selector-store:hannahhoward"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "go-selector-store:hannahhoward" -> null
      - permission = "admin" -> null
      - repository = "go-selector-store" -> null
      - username   = "hannahhoward" -> null
    }

  # github_repository_collaborator.this["go-storethehash:ischasny"] will be destroyed
  # (because key ["go-storethehash:ischasny"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "go-storethehash:ischasny" -> null
      - permission = "push" -> null
      - repository = "go-storethehash" -> null
      - username   = "ischasny" -> null
    }

  # github_repository_collaborator.this["go-walker:hannahhoward"] will be destroyed
  # (because key ["go-walker:hannahhoward"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "go-walker:hannahhoward" -> null
      - permission = "admin" -> null
      - repository = "go-walker" -> null
      - username   = "hannahhoward" -> null
    }

  # github_repository_collaborator.this["js-blockcodec-to-ipld-format:achingbrain"] will be destroyed
  # (because key ["js-blockcodec-to-ipld-format:achingbrain"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "js-blockcodec-to-ipld-format:achingbrain" -> null
      - permission = "admin" -> null
      - repository = "js-blockcodec-to-ipld-format" -> null
      - username   = "achingbrain" -> null
    }

  # github_repository_collaborator.this["js-dag-ucan:olizilla"] will be destroyed
  # (because key ["js-dag-ucan:olizilla"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "js-dag-ucan:olizilla" -> null
      - permission = "maintain" -> null
      - repository = "js-dag-ucan" -> null
      - username   = "olizilla" -> null
    }

  # github_repository_collaborator.this["js-ipld-format-to-blockcodec:achingbrain"] will be destroyed
  # (because key ["js-ipld-format-to-blockcodec:achingbrain"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "js-ipld-format-to-blockcodec:achingbrain" -> null
      - permission = "admin" -> null
      - repository = "js-ipld-format-to-blockcodec" -> null
      - username   = "achingbrain" -> null
    }

  # github_repository_collaborator.this["js-unixfs:gobengo"] will be destroyed
  # (because key ["js-unixfs:gobengo"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "js-unixfs:gobengo" -> null
      - permission = "maintain" -> null
      - repository = "js-unixfs" -> null
      - username   = "gobengo" -> null
    }

  # github_repository_collaborator.this["libipld:lkrayola"] will be destroyed
  # (because key ["libipld:lkrayola"] is not in for_each map)
  - resource "github_repository_collaborator" "this" {
      - id         = "libipld:lKrayola" -> null
      - permission = "push" -> null
      - repository = "libipld" -> null
      - username   = "lKrayola" -> null
    }

  # github_team_membership.this["alumni:adamstone"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "AdamStone"
    }

  # github_team_membership.this["alumni:andyschwab-admin"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "andyschwab-admin"
    }

  # github_team_membership.this["alumni:cloutiertyler"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "cloutiertyler"
    }

  # github_team_membership.this["alumni:flyingzumwalt"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "flyingzumwalt"
    }

  # github_team_membership.this["alumni:haadcode"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "haadcode"
    }

  # github_team_membership.this["alumni:ipfsbot"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "ipfsbot"
    }

  # github_team_membership.this["alumni:jbenetsafer"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "jbenetsafer"
    }

  # github_team_membership.this["alumni:jesseclay"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "jesseclay"
    }

  # github_team_membership.this["alumni:kevina"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "kevina"
    }

  # github_team_membership.this["alumni:litzenberger"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "litzenberger"
    }

  # github_team_membership.this["alumni:michaelavila"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "michaelavila"
    }

  # github_team_membership.this["alumni:mxinden"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "mxinden"
    }

  # github_team_membership.this["alumni:nicola"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "nicola"
    }

  # github_team_membership.this["alumni:pkafei"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "pkafei"
    }

  # github_team_membership.this["alumni:richardlitt"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "RichardLitt"
    }

  # github_team_membership.this["alumni:richardschneider"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "richardschneider"
    }

  # github_team_membership.this["alumni:tinytb"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "tinytb"
    }

  # github_team_membership.this["alumni:travisperson"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "travisperson"
    }

  # github_team_membership.this["alumni:victorb"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "victorb"
    }

  # github_team_membership.this["alumni:wanderer"] will be created
  + resource "github_team_membership" "this" {
      + etag     = (known after apply)
      + id       = (known after apply)
      + role     = "member"
      + team_id  = "7328107"
      + username = "wanderer"
    }

  # github_team_membership.this["ci:ipfsbot"] will be destroyed
  # (because key ["ci:ipfsbot"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"b077981b3e003453fcaa88f1fb760a65ae5de72869a1bcc470a716089b16bd3e\"" -> null
      - id       = "2562367:ipfsbot" -> null
      - role     = "member" -> null
      - team_id  = "2562367" -> null
      - username = "ipfsbot" -> null
    }

  # github_team_membership.this["contributors:daviddias"] will be destroyed
  # (because key ["contributors:daviddias"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"db6b38579b4fb9e3234dc3d58b358ba88f8195203804e1f206c2d69b1e0a67d0\"" -> null
      - id       = "2411284:daviddias" -> null
      - role     = "member" -> null
      - team_id  = "2411284" -> null
      - username = "daviddias" -> null
    }

  # github_team_membership.this["contributors:flyingzumwalt"] will be destroyed
  # (because key ["contributors:flyingzumwalt"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"810dc5e6aafb6760e3c2415c748a34c917cca9f37434b2796fd81525d1aad86f\"" -> null
      - id       = "2411284:flyingzumwalt" -> null
      - role     = "member" -> null
      - team_id  = "2411284" -> null
      - username = "flyingzumwalt" -> null
    }

  # github_team_membership.this["contributors:kubuxu"] will be destroyed
  # (because key ["contributors:kubuxu"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"35becd336cb00fe7fb914c93b1012730bd0db4017725009c16ea7a57959a1d2a\"" -> null
      - id       = "2411284:Kubuxu" -> null
      - role     = "member" -> null
      - team_id  = "2411284" -> null
      - username = "Kubuxu" -> null
    }

  # github_team_membership.this["contributors:nicola"] will be destroyed
  # (because key ["contributors:nicola"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"f097c141d982fad21a7e70e146403acf7b9f86b90378395ce7d192cbb3c4e788\"" -> null
      - id       = "2411284:nicola" -> null
      - role     = "member" -> null
      - team_id  = "2411284" -> null
      - username = "nicola" -> null
    }

  # github_team_membership.this["contributors:richardlitt"] will be destroyed
  # (because key ["contributors:richardlitt"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"ccc66a7d039a55ee63097daa91f0e2523d02ff8d77f462afc67225202556f35d\"" -> null
      - id       = "2411284:RichardLitt" -> null
      - role     = "member" -> null
      - team_id  = "2411284" -> null
      - username = "RichardLitt" -> null
    }

  # github_team_membership.this["contributors:whyrusleeping"] will be destroyed
  # (because key ["contributors:whyrusleeping"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"d23e13b236a3ee1d585df354a901f5411f55c9e311b2aa72ae02c8aa70a79f15\"" -> null
      - id       = "2411284:whyrusleeping" -> null
      - role     = "member" -> null
      - team_id  = "2411284" -> null
      - username = "whyrusleeping" -> null
    }

  # github_team_membership.this["dx:travisperson"] will be destroyed
  # (because key ["dx:travisperson"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"aad81d499586166f1bdf3ec72e6670d84811fa7670439327d9ac7012c5908323\"" -> null
      - id       = "2827046:travisperson" -> null
      - role     = "member" -> null
      - team_id  = "2827046" -> null
      - username = "travisperson" -> null
    }

  # github_team_membership.this["dx:victorb"] will be destroyed
  # (because key ["dx:victorb"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"d335ded94b94adf4ca0f62060bba234687cbab341d0f20e30973d261733cb675\"" -> null
      - id       = "2827046:victorb" -> null
      - role     = "member" -> null
      - team_id  = "2827046" -> null
      - username = "victorb" -> null
    }

  # github_team_membership.this["java team:jbenet"] will be destroyed
  # (because key ["java team:jbenet"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"69bfa619da10c45098e6cc6a8aa2eddaae7a5244b26c6ae23ffd555f4e447267\"" -> null
      - id       = "2211157:jbenet" -> null
      - role     = "member" -> null
      - team_id  = "2211157" -> null
      - username = "jbenet" -> null
    }

  # github_team_membership.this["javascript team:adamstone"] will be destroyed
  # (because key ["javascript team:adamstone"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"ef27255d750ded7a5f15a2109c459e223ca946377b5fc2f7eb0a89e3113bd13a\"" -> null
      - id       = "2208929:AdamStone" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "AdamStone" -> null
    }

  # github_team_membership.this["javascript team:daviddias"] will be destroyed
  # (because key ["javascript team:daviddias"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"4af72934f9b2f8a2ba3c6ac2086cce1fe692e8ab2257e7744528987d91cbf2b8\"" -> null
      - id       = "2208929:daviddias" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "daviddias" -> null
    }

  # github_team_membership.this["javascript team:haadcode"] will be destroyed
  # (because key ["javascript team:haadcode"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"9595baf17efa92524cb2922aeb5eeff62effcb6fe2976964375c28dc848c11a0\"" -> null
      - id       = "2208929:haadcode" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "haadcode" -> null
    }

  # github_team_membership.this["javascript team:hacdias"] will be destroyed
  # (because key ["javascript team:hacdias"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"5e6c0741d655a0ae560f9137ec54ebf3d19d641d4656b5e8f5bc41e409e88c81\"" -> null
      - id       = "2208929:hacdias" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "hacdias" -> null
    }

  # github_team_membership.this["javascript team:ipldbot"] will be destroyed
  # (because key ["javascript team:ipldbot"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"b6144fa5e54a8222b5032d441ba7995afeb1d762e8d6cd54e9ba4744482db3a3\"" -> null
      - id       = "2208929:ipldbot" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "ipldbot" -> null
    }

  # github_team_membership.this["javascript team:kumavis"] will be destroyed
  # (because key ["javascript team:kumavis"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"6d49c047daedab298c64dfdfc5154d83d01d3fbde2b72375281133a2adfa31a6\"" -> null
      - id       = "2208929:kumavis" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "kumavis" -> null
    }

  # github_team_membership.this["javascript team:litzenberger"] will be destroyed
  # (because key ["javascript team:litzenberger"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"7a94ec939ddfddcafef8ca11f8421b207f3840c952fd460ff4bee6e774f12464\"" -> null
      - id       = "2208929:litzenberger" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "litzenberger" -> null
    }

  # github_team_membership.this["javascript team:magik6k"] will be destroyed
  # (because key ["javascript team:magik6k"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"0ac06b7b323e4fcb29d608eb1a24a5673af7f295b20ff2b8ffad904988312ae9\"" -> null
      - id       = "2208929:magik6k" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "magik6k" -> null
    }

  # github_team_membership.this["javascript team:mcollina"] will be destroyed
  # (because key ["javascript team:mcollina"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"fba7a5a9f4b9691f8705eab5842d5dd6c892d0433c94dceabf9a0b8c75546518\"" -> null
      - id       = "2208929:mcollina" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "mcollina" -> null
    }

  # github_team_membership.this["javascript team:momack2"] will be destroyed
  # (because key ["javascript team:momack2"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"f6bcc8b4a25e5ea2abc1b2d0034b544b680cbc25191d5918f2384d9706bac56f\"" -> null
      - id       = "2208929:momack2" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "momack2" -> null
    }

  # github_team_membership.this["javascript team:nicola"] will be destroyed
  # (because key ["javascript team:nicola"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"e0d9341bf07141090c49857e714abf80f70a778a2f2f0af7e6249526b97091cc\"" -> null
      - id       = "2208929:nicola" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "nicola" -> null
    }

  # github_team_membership.this["javascript team:pkafei"] will be destroyed
  # (because key ["javascript team:pkafei"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"c948d8dc8029d24060832f0373d1b0c0596260eb0a2eb7c396949689e59f3100\"" -> null
      - id       = "2208929:pkafei" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "pkafei" -> null
    }

  # github_team_membership.this["javascript team:richardschneider"] will be destroyed
  # (because key ["javascript team:richardschneider"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"90ad07c8f2c57f3589cfa5fd82a2faedb12a0f40d06127b6e55e6261a94b1d5f\"" -> null
      - id       = "2208929:richardschneider" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "richardschneider" -> null
    }

  # github_team_membership.this["javascript team:vasco-santos"] will be destroyed
  # (because key ["javascript team:vasco-santos"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"c98a679ebe46955f4dfc4fdb017663f1f5730471233db2d27291cf770caae753\"" -> null
      - id       = "2208929:vasco-santos" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "vasco-santos" -> null
    }

  # github_team_membership.this["javascript team:victorb"] will be destroyed
  # (because key ["javascript team:victorb"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"b56f5cc4ce45d75254ddb98717fea56a0d2e514e34a262e982a9f60d00dfa624\"" -> null
      - id       = "2208929:victorb" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "victorb" -> null
    }

  # github_team_membership.this["javascript team:wanderer"] will be destroyed
  # (because key ["javascript team:wanderer"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"c350da782fa69bbd17e4f32e4cdae8a9680b7bae35262a2232cf05eff05eb146\"" -> null
      - id       = "2208929:wanderer" -> null
      - role     = "member" -> null
      - team_id  = "2208929" -> null
      - username = "wanderer" -> null
    }

  # github_team_membership.this["python team:daviddias"] will be destroyed
  # (because key ["python team:daviddias"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"680c2570cfdd4ddf2f606149efb5373ad9f9c9fdd2a98f2d5aa1960c33a74935\"" -> null
      - id       = "2474599:daviddias" -> null
      - role     = "member" -> null
      - team_id  = "2474599" -> null
      - username = "daviddias" -> null
    }

  # github_team_membership.this["python team:dhruvbaldawa"] will be destroyed
  # (because key ["python team:dhruvbaldawa"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"eacf81e1b4ee01024ef803d572128849fa8359b999f9d83a2088bec6f081dd7b\"" -> null
      - id       = "2474599:dhruvbaldawa" -> null
      - role     = "member" -> null
      - team_id  = "2474599" -> null
      - username = "dhruvbaldawa" -> null
    }

  # github_team_membership.this["research:jbenet"] will be destroyed
  # (because key ["research:jbenet"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"1f7b3d67e9e46acb41f8e12bcdf8168c563eb3a9c9178887e69b57db8d7169c7\"" -> null
      - id       = "2591269:jbenet" -> null
      - role     = "member" -> null
      - team_id  = "2591269" -> null
      - username = "jbenet" -> null
    }

  # github_team_membership.this["research:nicola"] will be destroyed
  # (because key ["research:nicola"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"41e1c0f21ad386b79dfd4963c8cc1f9b280887cf1163e7f232654d901893e606\"" -> null
      - id       = "2591269:nicola" -> null
      - role     = "maintainer" -> null
      - team_id  = "2591269" -> null
      - username = "nicola" -> null
    }

  # github_team_membership.this["swift team:cloutiertyler"] will be destroyed
  # (because key ["swift team:cloutiertyler"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"ef5a5414ba73652e996971abc186dd307fd2bedecb09484d9593126a0e801ab0\"" -> null
      - id       = "2568968:cloutiertyler" -> null
      - role     = "member" -> null
      - team_id  = "2568968" -> null
      - username = "cloutiertyler" -> null
    }

  # github_team_membership.this["swift team:daviddias"] will be destroyed
  # (because key ["swift team:daviddias"] is not in for_each map)
  - resource "github_team_membership" "this" {
      - etag     = "W/\"5aba2790214237e87b505c32a5136b409fc47230aca7e36f46a37bf7bb7eafaa\"" -> null
      - id       = "2568968:daviddias" -> null
      - role     = "member" -> null
      - team_id  = "2568968" -> null
      - username = "daviddias" -> null
    }

Plan: 20 to add, 0 to change, 44 to destroy.

Copy link
Contributor

github-actions bot commented Feb 26, 2024

The following access changes will be introduced as a result of applying the plan:

Access Changes
User AdamStone:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User RichardLitt:
  - will lose pull permission to ipld
User TippyFlitsUK:
  - will lose pull permission to go-car-priv
User alvin-reyes:
  - will lose pull permission to go-car-priv
User daviddias:
  - will lose pull permission to cid-cbor
  - will lose push permission to js-bitcoin
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User flyingzumwalt:
  - will lose pull permission to ipld
User gobengo:
  - will lose maintain permission to js-unixfs
User haadcode:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User hacdias:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User hannahhoward:
  - will lose admin permission to go-selector-store
  - will lose admin permission to go-walker
User hsanjuan:
  - will lose push permission to go-car-priv
User ipldbot:
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User ischasny:
  - will lose push permission to go-storethehash
User jbenet:
  - will lose pull permission to java-ipld-cbor
User jennijuju:
  - will lose pull permission to go-car-priv
User kumavis:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User lKrayola:
  - will lose push permission to libipld
User litzenberger:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User magik6k:
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User mcollina:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User momack2:
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User nicola:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User olizilla:
  - will lose maintain permission to js-dag-ucan
User pkafei:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User richardschneider:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User vasco-santos:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User victorb:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify
User wanderer:
  - will lose pull permission to cid-cbor
  - will lose push permission to ipld
  - will lose push permission to js-bitcoin
  - will lose push permission to js-car
  - will lose push permission to js-dag-cbor
  - will lose push permission to js-dag-json
  - will lose push permission to js-dag-pb
  - will lose pull permission to js-examples
  - will lose push permission to js-ipld-garbage
  - will lose push permission to js-ipld-schema
  - will lose push permission to js-printify

@@ -332,13 +332,6 @@ repositories:
advanced_security: false
allow_update_branch: false
archived: false
collaborators:
Copy link
Member

Choose a reason for hiding this comment

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

This one's interesting because it's for a private repository that was used for security release coordination with other teams. The people here don't contribute to the org but would have been added for visibility.

I think it makes sense to have them pruned in a process like this. Ideally we'd just be using private forks off advisory drafts but sometimes it doesn't make sense, like for this one. The repo in question here is less than 60 months old and they're always going to be deleted regardless of how short you make it. If you run it too often then we're going to hit snags because they'd be added to a private repo and then removed as soon as the next run happens.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Right now, one option to preserve access through and permanently opt out of the automated cleanup would be to add KEEP comments. It would look something like that:

      pull:
        # KEEP: Because ... 
        - alvin-reyes
        # KEEP: Because ... 
        - jennijuju
        # KEEP: Because ... 
        - TippyFlitsUK
      push:
        # KEEP: Because ... 
        - hsanjuan

Do you think it'd make sense to allow opting out entire repositories out of the automated cleanup?

@rvagg
Copy link
Member

rvagg commented Feb 26, 2024

Two other interesting things to note - two people, Hannah and Alex, are being removed from repos they created, leaving nobody but admin. Might be fair because they're pretty stale and maybe even archived now, I wonder if people will object to pruning like that though. Otherwise seems fine to me to move on to general feedback.

@galargh
Copy link
Contributor Author

galargh commented Feb 26, 2024

Two other interesting things to note - two people, Hannah and Alex, are being removed from repos they created, leaving nobody but admin. Might be fair because they're pretty stale and maybe even archived now, I wonder if people will object to pruning like that though. Otherwise seems fine to me to move on to general feedback.

That's a great point. I think in these cases we should treat a PR like that as a invitation to discussion whether the repository in question should be archived or, if not, we should add a KEEP comment to the original creator so that they're not removed and anyone looking through the config understands why.

@rvagg
Copy link
Member

rvagg commented Feb 27, 2024

Yes, that's all reasonable, having an escape hatch is the key here. I can see now that you've mentioned in the original post so maybe that's all this needs.

Nothing from me to KEEP, but nice to know it can be done in future if required. Will be interesting to see if anyone impacted by this asks for a KEEP.

Copy link
Contributor Author

@galargh galargh left a comment

Choose a reason for hiding this comment

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

@web3-bot should be added back to new repositories.

github/ipld.yml Outdated Show resolved Hide resolved
github/ipld.yml Outdated Show resolved Hide resolved
@galargh galargh marked this pull request as ready for review February 28, 2024 09:42
@galargh galargh requested review from a team as code owners February 28, 2024 09:42
@galargh
Copy link
Contributor Author

galargh commented Feb 28, 2024

Hi! We're ready to open up the PR for general review 🥳

I'd like to ask you to review the changes affecting you and flag any that should be reverted, are wrong, or need more explanation. You can find the detailed explanation of this PR, the reasoning for introducing the changes and the process itself in the description - #75 (comment)

Thank you, and let me know if you have any questions 💁

Tagging all the people whose access changes (#75 (comment)) as a result of this PR:

@RichardLitt
Copy link

I would love to be added to an Alumni organization for IPLD and Multiformats. It makes me sad to leave this org - these were interesting days for me. Having an alumni org or team with no permissions also helps, considering how GitHub is increasingly the CV of the future.

@mcollina
Copy link

100% remove me.

@galargh
Copy link
Contributor Author

galargh commented Feb 29, 2024

I would love to be added to an Alumni organization for IPLD and Multiformats. It makes me sad to leave this org - these were interesting days for me. Having an alumni org or team with no permissions also helps, considering how GitHub is increasingly the CV of the future.

We're not removing anyone from the organization here, we're only updating direct repository collaborator access and team memberships. There's also a special Alumni team to which everyone who doesn't have heightened access to any particular repository is added.

This all means that everyone will remain part of the organization and it will be really simple to restore access wherever and whenever needed.

@jennijuju
Copy link

Okay to remove me!

@galargh galargh merged commit a803a30 into master Mar 4, 2024
6 checks passed
@galargh galargh deleted the master-cleanup branch March 4, 2024 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants