Refining Your Project
Hi! I'm Hoverbear
- Working for Asquera in Berlin, Germany
- From Victoria, BC, Canada
- Rust user since 0.6 nightlies
- Organizer for RBR2016 and all RustFests
- Helps maintain some random crates
- Loves writing at hoverbear.org
- I lost my first slides draft at 5AM today. Yay
This Workshop
- Look at some data
- Talk about the data results
- Pair up
- Try to use each other's stuff
- ???
- GOTO 3
Some Data
I like asking questions! :)
Evaluating Crates
How do users evaluate crates to use in their own projects?
What is important?
- Published on Crates.io
- (Complete) Examples
- A good API feel
- Documentation (Crate/Trait/Struct level)
- A responsive maintainer
What is not important?
- Dependencies
- Word of mouth
- Talks/Presentations
These results were very surprising to me!
...wish more crates had?
- Support both Stable and Nightly
- Support Windows (Or mention it doesn't!)
- Examples for most features (see clap)
- Changelogs(!)
- "Works well with..."
- Justifications for `unsafe` blocks
- Performance notes
- NOT commiting on `master`
'Good'
- Serde
- Rocket
- Rayon
- Nom
- Diesel
- Clap
- Byteorder
'Bad'
- Iron (maintenance)
- Rocket (nightly)
- Tokio (docs)
- Futures (docs)
- gfx-rs (corner cutting)
Maintaining Crates
How do we create better crates?
What is prioritized?
- Published (70% ranked critical)
- API Feel
- Documentaion (Higher than when evaluating!)
- CI Builds (Not important when evaluating!)
- Tests
- Examples
Advertising
- Reddit (71%)
- Blog (35%)
- Forums (38%)
- Twitter (35%)
- IRC/Chat (28%)
- Meetups/Conferences (20%)
How can a crate help new users?
- Show a roadmap for new features
- Documentation
- Examples
- Metadata (for crates)
- Links to more about the subject matter (!!)
- Advice on how to get help
- Sample projects (big examples)
Honor roll: "Nothing. I don't care for noobs" AKA someone who doesn't want users.
What do maintainers need to work on?
- Better documentation
- More internal linking
- Cited that it is hard/awkward to do with rustdoc
- Examples
- Fuzzing
- Tests
- Advertising
- Finishing the last mile / polishing the crate
Note: New Contributors
Be willing to mentor them and help them evolve PRs.
"Have you ever sat with a new user as they used your crate?"
- 76% said no, but they want to!
- 9% said no, and they don't want to!
- 14% have!
So, let's sit together and try stuff!
Goals Today
- Learn to improve our projects!
- Learn how others learn!
- Create lots of small, actionable improvements
- Perhaps find new users and contributors. :)
- Share new learnings with everyone else.
How we do it
- Pair up with an observer and a user
- User tries to find, learn about, and use observer's crate.
- User is tasked with (or makes up) a project to expand an example from the crate.
- User explains their internal monologue and thought process to observer. (Light prompting allowed)
- Observer can not help without being explicitly asked.
- Observer takes notes about stumbling blocks and confusing bits.
- After about 20-30 mins, we change partners again after a short group sharing period.
What did we learn?
deck
By hoverbear
deck
- 631