Concepts

This section provides a conceptual overview of WBS. If something doesn't make sense or you want to learn more about WBS's architecture, this is a good section to read.

TLDR

Want represents all build inputs and outputs as values in a content-addressed data model called Mycelium. Every value has a cryptographic hash, and equal values have equal hashes, so Want can easily tell whether two trees, files, or computations are identical.

A build is a transformation from an input filesystem (a Module, plus the outputs of its dependencies) to an output filesystem. Everything a computation reads is named explicitly, and the only way to reach outside the module is through the small set of executors, so a computation can always be cached and replayed.

The pieces you will read about next:

  • Data Model: how Mycelium values and the Want filesystem (wantfs) are shaped.
  • Tasks & Jobs: how units of work are named, cached, and run.
  • Executors: responsible for executing Tasks, in the context of a Job.
  • Spore: the language that want files are written in.