The Libz Blitz is the library team’s major 2017 initiative: raising a solid core of the Rust crate ecosystem to a consistent level of completeness and quality.
Join the Working group Gitter chat and say hi, talk about the blitz and ask where help is needed.
Read the Working group doc to see how we’re tracking and where we need help.
I want to:
Lead an evaluation
See crates that need a lead then reach out on gitter
- Help steer the direction of fundamental crates in the Rust ecosystem
- Engage with experienced Rust contributors
- Solicit feedback from the crate author, users and other community members
Contribute to an open evaluation
See open evaluations then reach out on gitter
- Share your experience using a crate
- Help fill in the guidelines checklist
- Help think of examples for the cookbook
Contribute to an evaluated crate
See crates that need contributors and crates that need design work then reach out on gitter
- Help fix beginner-friendly issues in evaluated crates
- Help fix more complex issues in evaluated crates
- Contribute your thoughts to bigger design questions
About the blitz
Let’s apply what we’ve learned in stabilizing std to raise a solid core of the Rust crate ecosystem to a consistent level of completeness and quality, and accomplish a number of other important objectives along the way.
This is a multi-faceted project to achive a number of inter-related goals around the quality of the Rust library ecosystem. It is intended to be amenable to contributions from both experienced Rust developers, and completely new Rust developers.
For more background, see the blog post.
This post is a wiki. Feel free to edit it.
Goals
The basic goal for 2017 is to get 16 key crates to “1.0” quality levels.
But there are several other goals here:
- Raise the quality of crates in the Rust ecosystem to consistent high levels
- Release
1.0
versions of crates - Produce API guidelines that capture established best practices for Rust crate design
- Produce a cookbook of idiomatic examples of Rust crate usage
- Consistently generate well-defined tasks for contributors who are looking to make an impact on important areas of the project
- Demonstrate a reproducible process for evaluating crate quality, that hopefully other crate authors will appreciate and use.
- Foster greater collaboration between the Rust libs team and the wider community of crate authors
At the end of 2017 we will aim to have a blog post summarizing the progress made in the Rust crate ecosystem this year, and to the first versions of the guidelines and the cookbook.
Who makes the blitz work
Crate lead
Each crate needs a volunteer to lead the evaluation effort. That entails starting up a thread, breaking up the evaluation work into small work items that can be taken on by others in the community, keeping the discussion moving in productive directions, making sure the evaluation is completed on time, presenting the results at the libs team meeting, and, finally, filing discrete, actionable issues on everything raised, and funneling them to TWiR.
Anyone can be a crate lead, but it’s a substantial commitment and is largely about organization, communication, and consensus, and requires presenting to the libs team in a video meeting. Say so on this thread if you are interested in leading a particular crate.
Crate evaluator
This is the preliminary work of comparing a crate to the API guidelines, identifying deficiencies, and raising observations about API design that may impact the guidelines. It will often require working with the crate author to understand a crate’s known shortcomings.
Each evaluation will be published to the coordination thread, providing an opportunity for general feedback. Open feedback allows for a wide range of voices to be heard and is an important check against design myopia.
This effort is collaborative and everyone is welcome to participate in this way at any time. The crate lead will help create opportunities to jump in.
Documentation slinger
A lot of the work involved in getting a crate up to full quality is improving documentation, including writing up cookbook entries. There will be lots of opportunities for this kind of high value work.
Everyone is welcome to participate in this way at any time. The crate lead will help create opportunities to jump in.
Library hacker
Somebody must do the programming work of resolving the issues on the roadmap to stability for each crate. We expect to produce many discrete work items and that many of them will be accessible to inexperienced Rust programmers.
Everyone is welcome to participate in this way at any time. The crate lead will help create opportunities to jump in.
Library designer
There remain some important libraries that are only lightly maintained but are known to require significant design work (again thinking of rand especially). These will not improve without a dedicated and skilled author to drive them forward. We are going to be looking out for authors with the design skills necessary to fix the problems, and the social skills necessary to navigate the process.
We will occasionally make pleas for help on specific design matters as they arise.
Libs team guest
The library team will spend one of their video meetings reviewing each crate evaluation. We hope that the crate authors will be interested in joining us, sharing their unique expertise, and getting to know the libs team. This kind of interaction creates strong bonds in a way that communicating through text does not. We hope this will foster shared values across the ecosystem, and pave the way for expanding the libs team more formally.
This will be by invitation and focused on authors with an existing reputation for high quality work and productive collaboration.
Crate author
How we’re tracking
This is the schedule the libs team is keeping, and reflects the crates they have already reviewed, and the crates they desire to review in the near future.
We are only evaluating crates with the permission of their authors. These crates tend to be drawn from the crate listlower in this thread. Other past evaluations not reviewed by the full libs team are in another list.
Expand the section below for details on each evaluated crate.
-
2017-02-21 byteorder
- Authors: BurntSushi
- Lead: brson
- Guests: dtolnay
- Evaluation: https://public.etherpad-mozilla.org/p/rust-crate-eval-byteorder
- Tracking issue: https://github.com/BurntSushi/byteorder/issues/76
- Cookbook issue: todo
- Libs mtg video: N/A (everything but a bump and release)
-
2017-03-07 bitflags
- Authors: acrichto
- Lead: brson
- Guests: dtolnay, stephenbuys
- Evaluation: https://public.etherpad-mozilla.org/p/rust-crate-eval-bitflags
- Tracking issue: https://github.com/rust-lang-nursery/bitflags/issues/80
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/190
- Libs mtg video: https://air.mozilla.org/rust-libs-team-cyber-meeting-3-07-17/ (everything but a bump and release)
-
2017-03-21 tempdir
- Authors: acrichto
- Lead: burntsushi
- Guests: stephenbuys
- Evaluation: https://public.etherpad-mozilla.org/p/rust-crate-eval-tempdir
- Tracking issue: https://github.com/rust-lang-nursery/tempdir/issues/28
- Cookbook issue: todo
- Libs mtg video: https://air.mozilla.org/rust-libs-meeting-2017-03-21/
-
2017-04-04 flate2
- Authors: acrichto
- Lead: dtolnay
- Guests: danburkert, dtolnay
- Evaluation: https://public.etherpad-mozilla.org/p/rust-crate-eval-flate2
- Tracking issue: https://github.com/alexcrichton/flate2-rs/issues/89
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/185
- Libs mtg video: https://air.mozilla.org/rust-libs-meeting-4-04-17/
-
2017-04-18 memmap
- Author: danburkert
- Lead: sfackler
- Guests: WindowsBunny, danburkert, stephenbuys
- Evaluation: https://public.etherpad-mozilla.org/p/rust-crate-eval-memmap
- Tracking issue: https://github.com/danburkert/memmap-rs/issues/38
- Cookbook issue: todo
- Libs mtg video: N/A
-
2017-05-02 url
- Authors: SimonSapin
- Lead: brson
- Guests: SimonSapin, seanmonstar, stephenbuys
- Evaluation: https://public.etherpad-mozilla.org/p/rust-crate-eval-url
- Tracking issue: https://github.com/servo/rust-url/issues/319
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/40
- Libs mtg video: https://air.mozilla.org/rust-libs-meeting-2017-05-02/
-
2017-05-16 log
- Authors: acrichto, sfackler
- Lead: acrichto
- Guests: none
- Evaluation: Crate evaluation for 2017-05-16: log
- Tracking issue: https://github.com/rust-lang-nursery/log/issues/150
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/61
- Libs mtg video: https://air.mozilla.org/rust-libs-team-meeting-2017-05-16/
-
2017-05-30 reqwest
- Authors: seanmonstar
- Lead: dtolnay
- Guests: seanmonstar, stephenbuys, kodraus
- Evaluation: Crate evaluation for 2017-05-30: reqwest
- Tracking issue: https://github.com/seanmonstar/reqwest/issues/120
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/84
- Libs mtg video: https://air.mozilla.org/rust-libs-team-meeting-2017-05-30/
-
2017-06-13 walkdir
- Authors: BurntSushi
- Lead: KodrAus
- Guests: kodraus
- Evaluation: Crate evaluation for 2017-06-13: walkdir
- Tracking issue: https://github.com/BurntSushi/walkdir/issues/47
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/112
- Libs mtg video: https://air.mozilla.org/rust-libs-meeting-2017-06-13/
-
2017-06-27 error-chain
- Authors: brson, Yamakaky
- Lead: aturon
- Guests: Yamakaky
- Evaluation: Crate evaluation for 2017-06-27: error-chain
- Tracking issue: https://github.com/brson/error-chain/issues/190
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/184
- Libs mtg video: todo
-
2017-07-11 gcc
- Authors: alexcrichton
- Lead: burntsushi
- Guests: none
- Evaluation: https://internals.rust-lang.org/t/crate-evaluation-for-2017-07-11-gcc
- Tracking issue: https://github.com/alexcrichton/gcc-rs/issues/198
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/236
- Libs mtg video: https://air.mozilla.org/rust-libs-meeting-2017-07-11/
-
2017-07-25 rand
- Authors: co-authored/maintained
- Lead: aturon
- Guests: briansmith
- Evaluation: Crate evaluation for 2017-07-25: rand
- Tracking issue: todo
- Cookbook issue: https://github.com/rust-lang-nursery/rust-cookbook/issues/227
- Libs mtg video: N/A
-
2017-08-15 mio
- Authors: carllerche
- Lead: dtolnay
- Guests: carllerche
- Evaluation: Crate evaluation for 2017-08-15: mio
- Tracking issue: Crate evaluation for 2017-08-15: mio
- Cookbook issue: https://github.com/rust-lang-nursery/rust-cookbook/issues/113
- Libs mtg video: N/A
-
2017-08-29 rayon
- Authors: nikomatsakis
- Lead: acrichto
- Guests: nikomatsakis, cuviper
- Evaluation: Crate evaluation for 2017-08-29: rayon
- Tracking issue: https://github.com/nikomatsakis/rayon/issues/433
- Cookbook issue: https://github.com/rust-lang-nursery/rust-cookbook/issues/272
- Libs mtg video: N/A
-
2017-04-04 lazy_static
- Authors: kimundi
- Lead: dtolnay
- Evaluation: https://public.etherpad-mozilla.org/p/rust-crate-eval-lazy-static
- Tracking issue: https://github.com/rust-lang-nursery/lazy-static.rs/issues/70
- Cookbook issue: todo
-
2017-07-11 same-file
- Authors: burntsushi
- Lead: KodrAus
- Evaluation: Out-of-band crate evaluation for 2017-07-18: same-file
- Tracking issue: https://github.com/BurntSushi/same-file/issues/15
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/205
-
2017-07-06 env_logger
- Authors: alexcrichton sfackler
- Lead: sebasmagri
- Evaluation: Out of band crate evaluation for 2017-07-06: env_logger
- Tracking issue: https://github.com/sebasmagri/env_logger/issues/5
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/220
-
2017-07-07 threadpool
- Authors: frewsxcv
- Lead: ericho
- Evaluation: Out of band crate evaluation for 2017-07-06: threadpool
- Tracking issue: https://github.com/rust-threadpool/rust-threadpool/issues/86
- Cookbook issue: https://github.com/brson/rust-cookbook/issues/225
-
2017-10-09 semver
- Authors: steveklabnik
- Lead: KodrAus
- Evaluation: Out-of-band crate evaluation for 2017-10-13: semver
- Tracking issue: https://github.com/steveklabnik/semver/issues/139
- Cookbook issue: https://github.com/rust-lang-nursery/rust-cookbook/issues/276
-
2017-10-09 [semver_parser]
- Authors: steveklabnik
- Lead: KodrAus
- Evaluation: Out-of-band crate evaluation for 2017-10-13: semver
- Tracking issue: https://github.com/steveklabnik/semver-parser/issues/24
- Cookbook issue: https://github.com/rust-lang-nursery/rust-cookbook/issues/276
-
2017-10-13 num_cpus
- Authors: seanmonstar
- Lead: davidfutcher
- Evaluation: Out-of-band crate evaluation for 2017-10-13: num_cpus
- Tracking issue: https://github.com/seanmonstar/num_cpus/issues/55
- Cookbook issue: https://github.com/rust-lang-nursery/rust-cookbook/issues/300
-
2017-10-16 mime
- Authors: seanmonstar
- Lead: KodrAus
- Evaluation: Out-of-band crate evaluation for 2017-10-20: mime
- Tracking issue: TODO
- Cookbook issue: https://github.com/rust-lang-nursery/rust-cookbook/issues/312
Candidate crates
These candidates provide features that would be mostly included in a “batteries included” Rust standard library. For our limited purposes we can exclude many domains that are important but further on the periphery of what is needed for a general computing platform’s standard library (specifically thinking about multimedia, web frameworks, specific databases, and such).
At present there is no defined selection process, but the above criteria are a guideline.
We are only going to do evaluations of crates where the author agrees. This is a lengthy, critical process, that imposes new work on the crate’s maintaners, and it is reasonable not to want to be involved.
The working list: https://public.etherpad-mozilla.org/p/rust-crate-list
This list is only on an etherpad because Discourse seems to not support tables in markdown.
Please discuss candidates on thread before adding them to the list.
Lists of crates: