# Library Experts Map and Maintainers
###### tags: `Libs MCPs`
## Summary
Seed and maintain a mapping of users to areas of the standard library that they have expertise in. The experts map will help answer questions like:
- _Who knows how to check some tier 3 target?_
- _Who knows how some piece of implementation works?_
- _Who knows what direction we want to move some API in?_
## What is an expert?
Experts are carriers of domain-knowledge for a specific area of the standard library that might not be readily accessible to other contributors. An expert may not know everything about a specific area of the standard library, but will bring specialized insight that's essential to developing in that area. As an example, an expert on collections may specifically advise on how custom/fallible allocators affect the API and implementation without necessarily understanding the nuts-and-bolts of all the collections themselves.
### What do experts do?
Experts provide input on issues and reviews that relate to specific areas of the standard library. They may be actively pinged in response to concerns raised or passively cc'd.
Experts have an idea of where an area of the standard library is at now and how it might develop in the future. They help maintain consistency over time that keeps the standard library healthy and useful.
Experts offer insight but don't sidestep any existing decision-making processes around FCPs. It's still the overall responsibility of the Library team to decide what the public API of the standard library is.
We should be comfortable giving experts **`r+` rights**.
Some areas, such as `collections::btree_map`, maintain a complex enough domain-specific implementation that only a handful of people who understand the code can meaningfully contribute to it. An expert in these areas should be able to **review contributions** to them.
Other areas, such as `sys::windows`, are cross-cutting with other concepts but require deep understanding of that area. An expert in these areas should be able to **provide advice** on how best to support the needs of other concepts through that area.
Some areas, such as map-like collections, have cross-cutting concerns for API design that we want to keep consistent. An expert for these concepts should be aware of these potentially implicit consistency requirements and try **make requirements explicit** where possible.
### Who can be considered an expert?
Experts for an area aren't necessarily members of the Library or Compiler teams. Experts for an area aren't necessarily frequently committing code to it. As an example, an expert on Windows-specific implementation may have deep knowledge of Windows itself and advise on what APIs to use without actually contributing code themselves. An expert on IP addresses may have familiarity with the various IETF RFCs and advise on what's current and what's deprecated.
## What is the experts map?
The experts map is a living document that acts as a registry of people who are experts on specific areas of the standard library.
Eventually it should be maintained in a machine-readable format that's compatible with [the one used by the Compiler team](https://github.com/rust-lang/compiler-team/blob/master/content/experts/map.toml).
### How are experts added to the map?
Experts may self-nominate for inclusion in the map if there's an area of the standard library they've been supporting already.
Changes to the experts map will be made using regular pull requests, just like other directories in the `rust-lang` organization.
## Future possibilities
In the future, we might want to convert experts into project groups and treat them as responsible for that area of the standard library to help scale governance, giving the Library team a cross-cutting role.
## An initial experts map
## `rust-lang/rust/library`
This section attempts to categorize modules into concepts and list potential and nominated experts for them. The concepts should try align with [the lanes in the Libs tracking project][Tracking Project].
There are a few kinds of experts listed here.
[Tracking Project]: https://github.com/rust-lang/libs-team/projects/2
### Seeding the experts map from history
We can get a rough idea of activity in a specific area of the codebase using commit history in the `rust-lang/rust` repository. The [raw results can be found here](https://gist.github.com/KodrAus/6963fd1ad8852e872f5a9b606eac1b3e). They were collected using [this tool in `rust-lang/libs-team`](https://github.com/rust-lang/libs-team/tree/main/tools/list-contributors).
These raw results can be processed to list the top contributors for each path [using this script](https://gist.github.com/camelid/1b1ccdd43ae7bc100afe87f63896956e).
It's a starting point, but doesn't take into account that experts may be contributing a lot of comments and reviews without writing code themselves.
## Platform Support
This list includes maintainers for specific platforms, who may need to be pinged to check them.
### `wasm32`
Maintainers:
- alexcrichton
### `vxworks`
Maintainers:
- bpangWR
### `haiku`
Maintainers:
- nielx
### `hermit`
Maintainers:
- stlankes
### `fuchsia`
Maintainers:
- petrhosek
## Other `rust-lang` crates
This list includes maintainers for other libraries in the `rust-lang` organization that align with the standard library.
### `rust-lang/socket2`
Maintainers:
- Thomasdezeeuw
### `rust-lang/rust-bindgen`
Maintainers:
- emilio
### `rust-lang/stdarch`
Maintainers:
- Amanieu
### `rust-lang/regex`
Maintainers:
- burntsushi
### `rust-lang/futures-rs`
Maintainers:
### `rust-lang/hashbrown`
Maintainers:
- Amanieu
### `rust-lang/stdsimd`
Maintainers:
- calebzulawski
- Lokathor
- workingjubilee
### `rust-lang/libz-sys`
Maintainers:
- joshtriplett
### `rust-lang/packed_simd`
Maintainers:
- calebzulawski
- Lokathor
- workingjubilee
### `rust-lang/compiler-builtins`
Maintainers:
- Amanieu
### `rust-lang/log`
Maintainers:
- sfackler
- KodrAus
### `rust-lang/backtrace-rs`
Maintainers:
- alexcrichton
### `rust-lang/stacker`
Maintainers:
- nagisa
### `rust-lang/flate2-rs`
Maintainers:
- joshtriplett
### `rust-lang/pin-utils`
Maintainers:
- taiki-e
### `rust-lang/getopts`
Maintainers:
- KodrAus
### `rust-lang/libm`
Maintainers:
- Amanieu
### `rust-lang/libbacktrace`
Maintainers:
- alexcrichton