# Lessons from the Async Vision Doc Tyler Mandry Note: A lead for async wg --- # How it started: async vision Note: Niko gave a talk on the process in the first CTCFT ---- ## Narratives, please 50 status quo stories! Note: Asked people to write about their experience Big response Helps to have post on the main Rust blog ---- ## The metanarrative What are the problems with async? ---- Hard choices to start Subtle design patterns Harder to get code to compile Code doesn't "just work" Can't debug or gain visibility Lack of interop with other executors --- ## Imagining the future A little harder 10 shiny future stories ---- "Not the status quo" Note: Status quo was _mostly_ complaints in practice, so picking the inverse of that turned out to be a pretty good direction --- ## The meta-metanarrative Was this a success? Yes! Challenges? It's a lot of information. Note: Even the metanarrative doesn't fit on a full 4k screen Want to roll up narratives into a few summary ones, but haven't yet But we got the feedback we were looking for --- # Now what? ---- Lots of discussions around - What to do - Dependencies - Priorities These are harder to define when you don't _quite_ know what you're building yet. ---- Eventually, we settled on a [roadmap](https://rust-lang.github.io/wg-async-foundations/vision/roadmap.html) As it turned out, there was a lot to do! --- # How to roadmap --- Group everything into high-level **goals** - Focus on the end user experience - State the specific impact - Must have an owner who's responsible for making progress ---- ### Example: Flexible async iteration #### Impact - Able to create and compose iterators that await async results - Able to create complex parallel or concurrent schedules that work reliably Note: Executes in a predictable way ---- | Goal | State | Owner |---|---|---| | Async fn everywhere | :crab: | tmandry | | Scoped spawn, reliable cancellation | :zzz: | | Async iteration | :crab: | estebank | | Portability across runtimes | :zzz: | | Polish | :crab: | eholk | Tooling | :crab: | pnkfelix | Documentation | :zzz: | | Testing | :zzz: | | Threadsafe portability | :zzz: | | Async overloading | :zzz: | Note: This is what's staffed as of today Don't want to take on too much or it would get overwhelming ---- Goals define *what* we're trying to accomplish, not *how* to do it ---- For the *how*, we need **initiatives** :sparkles: ---- | Deliverable | State | Progress | [Owner](https://rust-lang.github.io/wg-async-foundations/vision/how_to_vision/owners.html) | | --- | --- | --- | --- | | 🔻 [Tooling](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/tooling.html) | 🦀 | ▰▰▱▱▱▱ | [pnkfelix](https://github.com/pnkfelix) | |   ↳ [Tokio console](https://github.com/tokio-rs/console) | 🦀 | ▰▰▰▰▱▱ | [eliza weisman](https://github.com/hawkw) | |   ↳ [Crashdump debugging](https://rust-lang.github.io/wg-async-foundations/vision/roadmap/tooling/crashdump.html) | 🦀 | ▰▰▱▱▱▱ | [michaelwoerister](https://github.com/michaelwoerister) | --- **Initiative** - One or more well-defined **features** - Clear user impact - Define **milestones** Note: Could also be called a "project" More clear cut than goals Always have an end point Often high-context work ---- ### Example: Precise Generator Captures | Milestone | Status | Key Participants | | --- | --- | --- | | Prototyped | 🦀 | [eholk](https://github.com/eholk/) | | Reference documentation | 🦀 | [eholk](https://github.com/eholk/) | | [Lang team](https://www.rust-lang.org/governance/teams/lang) initiative proposal | 💤 | [eholk](https://github.com/eholk/) | | [Lang team](https://www.rust-lang.org/governance/teams/lang) signoff | 💤 | [Lang team](https://www.rust-lang.org/governance/teams/lang) | | Stabilized | 💤 | [eholk](https://github.com/eholk/) | Note: Relatively small, could be bigger ---- ## How granular? - Goals can be worked on in parallel - Initiatives can have high-level dependencies - Milestones might have an intricate sequencing Note: Complex interdependencies allowed ---- ## Transparency is key * Roadmap is available [online](https://rust-lang.github.io/wg-async-foundations/vision/roadmap.html) * Initiatives have up-to-date page or dedicated [repository](https://rust-lang.github.io/async-fundamentals-initiative/index.html) Note: Benefits: Historical record Empower smart people in the community to contribute in a meaningful way ---- ![initiative template screenshot](https://i.imgur.com/f1QHJWf.png) ---- ![async fundamentals initiative website screenshot](https://i.imgur.com/T7Vuu4t.png) Note: Someone actually opened a PR out of the blue with a design doc! --- # Process ---- ## Sprint planning - Sprints every 2 weeks - Goal owners and optionally others attend Agenda: 1. Sprint retrospective 1. Polish issues 1. Plan next sprint ---- Sprint goals must be - well-defined - achievable Note: Find it can be very motivating to have: regular meetings, achievable goals ---- Polish issues - Shared team responsibility - Small investments add up - Goal owners all contribute ---- Things seem to be working! --- What's next? ---- Stakeholders Note: Design issues especially need them involved Hard to keep up Identify 5-10 Monthly presentations / talks, poll on specific questions ---
{"metaMigratedAt":"2023-06-16T12:24:11.834Z","metaMigratedFrom":"YAML","title":"Lessons from the Async Vision Doc","breaks":true,"slideOptions":"{\"allotedMinutes\":20}","contributors":"[{\"id\":\"09323fe7-fe4f-48dd-bee9-51cb785e58b9\",\"add\":7477,\"del\":2080},{\"id\":\"db349910-53c1-45a5-aa34-1ac5434980b0\",\"add\":114,\"del\":0}]"}
    277 views
   Owned this note