Skip to content

Implement libs team refactor (RFC 3984) - #2651

Open
clarfonthey wants to merge 6 commits into
rust-lang:mainfrom
clarfonthey:libs-refactor
Open

Implement libs team refactor (RFC 3984)#2651
clarfonthey wants to merge 6 commits into
rust-lang:mainfrom
clarfonthey:libs-refactor

Conversation

@clarfonthey

@clarfonthey clarfonthey commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Note: blocked on RFC 3984 merging, still has a few unanswered questions like renaming Zulip streams. Tried to split into a few commits to make reviewing easier.

Resolved items:

  • I'm not sure what the policy is for archived teams, especially when it comes to merging them into existing teams. I figured that since we have an explicit policy in the RFC for allowing alumni to be re-nominated, it would make sense to merge all the alumni here as well, but would also like some guidance on that. (this is fine)
  • I also am not sure whether we truly need to keep the library contributors team archived at all since it functionally has no difference from the new libs team. The libs-API team specifically feels like it's worth tracking, though. (this is also fine)

Remaining items:

  • Amanieu recommended just archiving t-libs/private; this would be something we want to do before merging this, since we don't want to add new libs members to it just to archive it.
  • With that archived, it makes sense to rename t-libs/reviewers to t-libs/private also before merging.
  • (Code is updated to account for this, but manual changes should be done prior to merging.)
  • We wanted to make sure libs didn't have any crates.io access to important crates, and this was only done via commits instead.
  • (Code maybe was modified to account for this, but it's unclear.)

@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Dry-run check results

[WARN  rust_team::sync] sync-team is running in dry mode, no changes will be applied.
[INFO  rust_team::sync] synchronizing crates-io
[INFO  rust_team::sync] 💻 Trusted Publishing Crate Diffs:
      Removing `team` owner `github:rust-lang:libs` from krate `cc`
      Removing `team` owner `github:rust-lang:libs` from krate `ctest`
      Removing `team` owner `github:rust-lang:libs` from krate `find-msvc-tools`
      Removing `team` owner `github:rust-lang:libs` from krate `libc`
      Removing `team` owner `github:rust-lang:libs` from krate `libm`

[INFO rust_team::sync] synchronizing github
[INFO rust_team::sync] 💻 Team Diffs:
📝 Editing team 'rust-lang-nursery/libs':
Adding member 'BurntSushi' with member role
Adding member 'ChrisDenton' with member role
Adding member 'Darksonn' with member role
Adding member 'JohnTitor' with member role
Adding member 'KodrAus' with maintainer role
Adding member 'LawnGnome' with member role
Adding member 'Mark-Simulacrum' with maintainer role
Adding member 'Noratrieb' with member role
Adding member 'SimonSapin' with member role
Adding member 'aapoalas' with member role
Adding member 'adamgemmell' with member role
Adding member 'calebzulawski' with member role
Adding member 'clarfonthey' with member role
Adding member 'cramertj' with member role
Adding member 'davidtwco' with member role
Adding member 'dtolnay' with maintainer role
Adding member 'folkertdev' with member role
Adding member 'hanna-kruppe' with member role
Adding member 'ibraheemdev' with member role
Adding member 'jhpratt' with member role
Adding member 'joboet' with member role
Adding member 'kennytm' with maintainer role
Adding member 'm-ou-se' with member role
Adding member 'nia-e' with member role
Adding member 'programmerjake' with member role
Adding member 'sayantn' with member role
Adding member 'sunfishcode' with member role
Adding member 'tgross35' with member role
Adding member 'workingjubilee' with member role
Adding member 'yaahc' with member role
📝 Editing team 'rust-lang/libs':
Adding member 'BurntSushi' with member role
Adding member 'ChrisDenton' with member role
Adding member 'Darksonn' with member role
Adding member 'JohnTitor' with member role
Adding member 'KodrAus' with member role
Adding member 'LawnGnome' with member role
Adding member 'Mark-Simulacrum' with maintainer role
Adding member 'Noratrieb' with member role
Adding member 'SimonSapin' with member role
Adding member 'aapoalas' with member role
Adding member 'adamgemmell' with member role
Adding member 'calebzulawski' with member role
Adding member 'clarfonthey' with member role
Adding member 'cramertj' with member role
Adding member 'davidtwco' with member role
Adding member 'dtolnay' with member role
Adding member 'folkertdev' with member role
Adding member 'hanna-kruppe' with member role
Adding member 'ibraheemdev' with member role
Adding member 'jhpratt' with member role
Adding member 'joboet' with member role
Adding member 'kennytm' with member role
Adding member 'm-ou-se' with member role
Adding member 'nia-e' with member role
Adding member 'programmerjake' with member role
Adding member 'sayantn' with member role
Adding member 'sunfishcode' with member role
Adding member 'tgross35' with member role
Adding member 'workingjubilee' with member role
Adding member 'yaahc' with member role
❌ Deleting team 'rust-lang/libs-api'
❌ Deleting team 'rust-lang/libs-contributors'
❌ Deleting team 'rust-lang-nursery/libs-contributors'
❌ Deleting team 'rust-lang-nursery/libs-api'
💻 Repo Diffs:
📝 Editing repo 'rust-lang/api-guidelines':
Permission Changes:
Removing team 'libs-api''s write permission
📝 Editing repo 'rust-lang/enzyme':
Permission Changes:
Removing team 'libs-api''s maintain permission
📝 Editing repo 'rust-lang/goals':
Permission Changes:
Removing team 'libs-api''s maintain permission
📝 Editing repo 'rust-lang/hashbrown':
Permission Changes:
Removing team 'libs-contributors''s write permission
📝 Editing repo 'rust-lang/libs-team':
Permission Changes:
Removing team 'libs-contributors''s maintain permission
Removing team 'libs-api''s maintain permission
📝 Editing repo 'rust-lang/packed_simd':
Permission Changes:
Removing team 'libs-contributors''s write permission
Removing team 'libs-api''s write permission
📝 Editing repo 'rust-lang/rust':
Permission Changes:
Removing team 'libs-api''s write permission
Removing team 'libs-contributors''s write permission
📝 Editing repo 'rust-lang/rust-forge':
Permission Changes:
Removing team 'libs-api''s maintain permission
📝 Editing repo 'rust-lang/rustc-dev-guide':
Permission Changes:
Removing team 'libs-api''s write permission
Removing team 'libs-contributors''s write permission
📝 Editing repo 'rust-lang/std-dev-guide':
Permission Changes:
Removing team 'libs-api''s write permission
Removing team 'libs-contributors''s write permission
📝 Editing repo 'rust-lang/stdarch':
Permission Changes:
Removing team 'libs-contributors''s write permission
Removing team 'libs-api''s write permission
📝 Editing repo 'rust-lang/wg-allocators':
Permission Changes:
Removing team 'libs-api''s write permission
Removing team 'libs-contributors''s write permission

@nia-e

nia-e commented Aug 5, 2026

Copy link
Copy Markdown
Member

I think the Zulip stream setup proposed here makes sense, and I wouldn't change it. Same with merging the alumni, it checks out. The only bit I'm not 100% sure on archiving vs deleting libs-contributors & libs-api since functionally they're all just being merged, but I think this is the right call for historical preservation reasons.

lgtm, and I'm happy to merge this as-is as soon as the refactor FCP is done

@clarfonthey

Copy link
Copy Markdown
Contributor Author

Probably still gonna need a sign off from @Amanieu too as a team lead but otherwise, yeah, I figure Zulip rearranging can happen after the fact.

@rustbot

This comment has been minimized.

Comment thread teams/libs-fcp.toml Outdated
Comment on lines +32 to +33
[[zulip-streams]]
name = "t-libs/private"

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.

We should just drop the private channel. It's basically dead and all the internal discussions are happening on the t-libs/reviewers channel. I see no need to keep a separate channel for libs-fcp.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I'm fine with that, although my inclination is to assign libs-fcp to it first so it doesn't dump the new libs team in there immediately, then delete it in a future PR. Not that it matters, since it's not going to reveal old messages or anything, but to avoid confusion.

Since I believe deleting it from this PR will just cause its permissions to remain the same, which would dump all of the new libs into it.

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 believe perms are per-user, not per-group. either way this is smth infra can clarify, it seems we agree on the intent being to archive that channel without adding anyone new

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

AFAIK the Zulip channel has group permissions, so the users would be added because their group changed, not because the channel changed. But either way, yeah, I'm happy to remove the channel from the PR if infra is fine coordinating that.

We would also want to name the reviewers channel to t-libs/private too, presumably.

@jieyouxu jieyouxu Aug 8, 2026

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.

Permissions are tied to per-user at least from I can tell.

jieyouxu
jieyouxu previously approved these changes Aug 8, 2026

@jieyouxu jieyouxu 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.

team-repo-admin approval given, this needs an infra-admin review as well since this modifies rust-lang/rust permissions.

Comment thread repos/rust-lang/rust.toml

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.

NB: this touches rust-lang/rust

Comment thread teams/libs-fcp.toml
Comment thread teams/libs-fcp.toml Outdated
Comment on lines +32 to +33
[[zulip-streams]]
name = "t-libs/private"

@jieyouxu jieyouxu Aug 8, 2026

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.

Permissions are tied to per-user at least from I can tell.

@jieyouxu jieyouxu added needs-infra-admin-review This change requires one of the `infra-admins` to review. needs-team-repo-admin-review This change requires one of the `team-repo-admins` to review. S-waiting-on-review Status: waiting on review from a team/WG/PG lead, an infra-admin, and/or a team-repo-admin. labels Aug 8, 2026

@Mark-Simulacrum Mark-Simulacrum 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.

It's unfortunately hard to tell what is actually changing permissions wise (i.e., where the libs team growing has influence). I think the crates.io thing is the primary one I see real risk in, but I may be missing other cases we granted libs access that may want to get removed as part of this transition.

Comment thread teams/libs.toml
"the8472",
"thomcc",
"workingjubilee",
"yaahc",

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 adding everyone in this list with publish etc. access to the 20 crates currently owned (in part) by libs on crates.io - https://crates.io/teams/github:rust-lang:libs

I suspect we don't really want that. It's not an "umbrella privilege" laid out in the RFC. Some subset of those probably have restricted publishing to trusted publishing, which moves this to a question of repository access.

Should we maybe either remove that access on crates.io or move it to (say) crate-maintainers or libs-fcp? A few of those are controlled by team so we could do it here.

@nia-e nia-e Aug 8, 2026

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.

libs-fcp is imo an acceptable option. we can always add perms to libs or crate-maintainers later, and libs-fcp should not consist of anyone we don't trust with that kind of access. we can always give libs write but not maintain perms for those crates

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

cc @Amanieu in case you have a better idea short term, otherwise we can just move crate publishing to libs-fcp for now

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.

I brought this up at #t-infra > crates.io owners of rust-lang crates as well. But libc-fcp seems fine to me as well for now.

I think the solution mentioned there of having some bot handle yanks (release-plz?) and eventually removing libs-fcp would be the best long term option.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I remember this discussion and wasn't 100% sure what the best long-term solution is, since write access to repos with CI publishing would mean that everyone effectively has crate-publishing privileges, but I also have no idea what the threat model here is anyway.

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 just went through every single crate owned by rust-lang/libs on crates.io. I think we can safely just remove rust-lang/libs from all of them (and add rust-lang-owner to the ones that are missing it).

These all fall into one of these categories:

  • Crates where release-plz is used for publishing, which uses rust-lang-owner and is controlled by write access in the team repo.
  • Crates that are mostly maintained by a select number of people who are additional owners (e.g. dlmalloc-rs which is maintained by alexcrichton)
  • Crates that are deprecated/unmaintained and haven't had a release in years.

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.

As long as infra can yank crates as needed until we get a better solution for that (I assume they can), this sounds reasonable to me.

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.

infra-admins can, it's just a bit of a hassle since we need to get into the owner account. I guess we can mint a token with yank permissions and stash it somewhere easier/less risky to get into.

@clarfonthey clarfonthey Aug 11, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

So, just to clarify what exactly would be necessary to make these changes in the repo: we just need to remove teams = ["libs"] from the crates-io section of repos wherever it's present, right? (I did this, but what Amanieu said implies there is more than just a handful of them.)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Side note, there are a few crates that have this listed for compiler as well, and since that team is so large, I'm actually unsure if this was noticed when they did their team refactor either.

Comment thread teams/libs.toml Outdated
name = "T-libs"

[[zulip-streams]]
name = "t-libs/reviewers"

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.

why not leave this as reviewers? that way private can be archived entirely and won't need a rename

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

We could do that, I just figured it shouldn't be too difficult to coordinate.

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

Labels

needs-infra-admin-review This change requires one of the `infra-admins` to review. needs-team-repo-admin-review This change requires one of the `team-repo-admins` to review. S-waiting-on-review Status: waiting on review from a team/WG/PG lead, an infra-admin, and/or a team-repo-admin.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants