# 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
----

----

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}]"}