Libs Impl Team

tags: Charters

Summary

Establish a new Libs Impl team under the Libs team for contributors who want to work on the standard library.

Motivation

Clear ownership of the standard library codebase

Today, maintainership of the standard library is split between the the Libs and the Compiler teams. The Compiler team makes decisions that affect the rust-lang/rust codebase, and triage high-priority standard library issues. The Libs team handles stabilizations of new APIs and updates to documentation. In practice, a lot of discussion about standard library implementation is still done by the Libs team, even though it may be also be covered by the Compiler team.

The splitting of responsibilities between the Libs and Compiler teams has never been concretely laid out. This document aims to do that by establishing the charter for a new team, Libs Impl, that will take responsibility for maintaining the /library directory under rust-lang/rust.

Directing contributions

The standard library codebase has been developed without a clearly communicated direction for a while. That hasn't been necessary to introduce new independent APIs but has blocked progress on larger projects.

The Libs Impl team will set the direction for development of the standard library codebase. It will identify and support projects that may involve deep refactorings and re-organization that unblock future work.

Growing and supporting reviewers

Reviewing changes to the standard library is currently a daunting commitment. There aren't enough reviewers and the ones we have suffer from burnout. There aren't any useful resources to support reviewers and there isn't anybody to reach out to with questions.

The Libs Impl team will establish a clear support framework for standard library reviewers so we can both grow the number of reviewers and better equip them to review contributions. These resources will also help produce some consistent expectations between reviewers.

2021 Charter

Parent Home Handle
Libs libs-team @rust-lang/t-libs-impl

How does this group define success?

Success means:

  • A well-defined and supportive environment for standard library contributors.
  • Consistent expectations on whether and how contributions to the standard library will be accepted.

This can be measured through:

  • Progress on long-term projects that affect the standard library codebase.
  • Fewer high-priority bugs raised against the standard library.
  • Fewer contributions that become blocked on team input that's never given. That doesn't necessarily mean more contributions are accepted, only that fewer are blocked on the team or reviewer side.

What does this group do?

The Libs Impl team maintains the Rust standard library codebase.

Decision maker

The Libs Impl team as a whole will make decisions through final comment periods and major change proposals.

The Libs Impl team will have at least one team lead who's also a member of either the Libs or Compiler teams. The team lead will be responsible for hosting regular triage, checking in on members, and generally helping get things unblocked.

The Libs Impl team may want to rotate their team leads like the Compiler team has been considering.

Accountable

The Libs Impl team is accountable for keeping the standard library a dependable and trustworthy platform for all Rust users by focusing on:

  • Developing code itself under the /library directory of rust-lang/rust.
    • Directing internal crate structure and architecture.
    • Determing what unstable language features are and aren't ready to use internally in the standard library codebase and how to use them.
    • Preferred style for use of rustdoc features, such as in examples and links.
  • Handling regressions in a timely manner and coordinating fixes with releases.
    • Meeting on a regular cadence to respond to triaged regressions.
    • Assigning and tracking fixes to regressions.
  • Ensuring contributors and reviewers of the code are equipped to work with confidence.
    • Maintaining the Standard Library Dev Guide as a resource for reviewers and contributors to the standard library.
    • Mentoring new reviewers.

Responsible

The Libs Impl team is responsible for what gets merged into the standard library codebase. Even when a member of the team isn't directly involved in a given contribution, the resources produced by the team should keep it in-line with the team's expectations.

As a general principle, when there's /library code involved and there aren't any #[stable] attributes it's either the responsibility of the Libs Impl team, or the Libs Impl team will know whose responsibility it is.

Consulted

The Libs Impl team should be consulted on changes to tooling that affect working on the standard library, such as x.py.

Informed

The Libs Impl team should be informed of changes to other areas of the rust-lang codebase. They should also be informed of new language features that may be worthwhile for the standard library to adopt.

The Libs Impl team should also be informed of any other Libs project groups that are spun up, because they may have implications for future Libs Impl work.

How does this group make decisions?

The Libs Impl team makes decisions through final comment periods, major change proposals, and regular approvals.

  • Meta changes affecting the team itself are made through major change proposals.
  • General refactorings and re-organizations affecting a significant portion of the standard library are made through final comment periods.
  • Deep refactorings affecting a specific area of the standard library in a fundamental way are made through major change proposals.
  • The addition of small new unstable APIs are made through individual approvals.
  • The addition of large new unstable APIs are made through individual approvals, following an expression of interest from the Libs team.
  • Changes to the Standard Library Dev Guide are made through individual approvals from other team members.

What is expected of members?

Members of the Libs Impl team have a broad interest in working on the standard library codebase.

Members should try participate in regular triage and design discussions affecting the standard library. These discussions will likely involve final comment periods for consensus building.

Where does this group work?

The Libs Impl team will work in:

The Libs Impl team will coordinate in:

  • Issues and pull requests in rust-lang/rust.
  • The #t-libs and related streams on Zulip.

Who is the point of contact?

The Libs Impl team lead will act as a common point of contact and liaison for other teams.