Skip to content

README: add a suggested reading order for new contributors #9

Description

@perbu

The README's crate table says what each layer is, but not what to read first. The layering (transport → wire protocol → zero-copy semantics → async adapter → demos) only lands in one direction, and a newcomer opening hord-stream/src/stream.rs first — the biggest file — gets the worst possible entry point.

A short "Where to start" section would help. Suggested order, with the reason each step earns its place:

  1. SPEC.md §4–§6 — the wire protocol before any code: envelope, handshake, credits. The tree carries 260 inline § annotations, so these clause numbers are the vocabulary every comment assumes you already have.
  2. hord-stream/src/handshake.rs — 246 lines, self-contained, with round-trip unit tests that need no device. The smallest complete piece of the protocol.
  3. HordStream::handle_completion in hord-stream/src/stream.rs — the heart of the transport: one flat dispatcher over completion types, each branch naming its spec clause. Worth reading before the API surface around it.
  4. serve_one in hord-demo/src/bin/server.rs — a whole request/response cycle, sync, no tokio in the way.
  5. hord-zerocopy/src/lib.rs with the rdma feature off — the X-HORD-RDMA-Write codec with no RDMA anywhere near it; builds and tests on a laptop.
  6. acceptor_loop in hord-async/src/listener.rs — deliberately last. The subtlest error handling in the tree, and it only makes sense once the layers beneath it do.

The new "Spec coverage map" in PROTOTYPE.md is the companion piece — it maps each spec section to the crate and file implementing it, so step 1 has somewhere to go next.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationgood first issueGood for newcomers

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions