TimelyDataflow / TimelyDataflow/timely-dataflow

mdbook Improvements

Open
#249 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
3.6k
Forks
293
Avg merge
14h 46m
Merged PRs (30d)
4

Description

I'm currently reading timely's gitbook, and so far it has been great!

Here are some suggestions on what to improve:

  • most examples start with extern crate timely;, I think this isn't necessary for Rust 2018 anymore
  • The first code example in the iteration chapter doesn't match its surrounding description: E.g. LoopVariable is introduced, but the example uses feedback(), "(i) what is the upper bound on the number of iterations" isn't reflected in the function arguments, and "We've built an upper limit of 100" doesn't exist in the example code
  • Subsection Scopes clears this up a little, but perhaps it might make sense to present the difference between feedback & loop_variable earlier (esp. since loop_variable just uses feedback under the hood)
  • Many concepts are defined independently, but never compared or connected to each other: e.g. how capability.downgrade() & flushing relates to input_handle.advance_to(), how input_handle.time() relates to frontier, how the source we wrote relates to providing input via an InputHandle, and what the differences between InputHandle outside of a dataflow (the one with .time()) and the (Frontiered)InputHandle within operator closures (the one with .frontier() and for_each()) are. Maybe a short summary / glossary / comparison of concepts at the end of Chapter 3 could make this clearer?
  • Lastly, I think it might be confusing that (as far as I saw) it's nowhere mentioned that timely cleans up when dataflows go out of scope. That way, especially when writing small programs, you'll always see some output, even when you never advanced time or called worker.step(). I've added use std::io::stdin; stdin().read_line(&mut String::new()).unwrap(); at the end of the execute closure to make sure nothing is cleaned up without me interrupting the program so that I can better observe my changes

Best, Malte

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the mdBook chapters covering Rust 2018 examples, iteration, scopes, and input and time concepts. Review the examples and explanations against the reported mismatches and missing connections. Done means the documentation consistently matches its code and clearly explains the listed concepts, including cleanup when dataflows go out of scope.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.