Skip to content

Foundations

Everything footman does about parallelism rests on a handful of operating system ideas: what a process is, what the working directory and the environment really are, how programs get spawned, and how deadlocks happen. The Guide assumes them; this section teaches them from zero, in plain words, each page ending in the one rule worth remembering. If you have ever been surprised by a taught error mentioning "the parallel regime", this is where it stops being arbitrary.

How to read this

Each page opens with two or three self-check questions. If you can answer them all, skip ahead; the pointer at the top of each page says where. Nothing here is required reading; the pages exist so that when you want the ground under a rule, it is one click away.

The pages build on each other in this order:

graph TD
  P["One process, many tasks"] --> C["The working directory"]
  P --> E["The environment"]
  P --> S["Spawning programs"]
  P --> T["Threads & the GIL"]
  C --> D["Deadlocks"]
  E --> Sh["The shell"]
  Sh --> S
  E --> S
  S --> D
  T --> D
  D --> R["The four globals, two regimes"]
  C --> R
  E --> R

Start at One process, many tasks: every other page assumes only it and its ancestors in the graph.

Where this leads

The destination is a single sentence you will be able to defend by the end: in a parallel run, the only non-parallel execution is the kind you declared. Everything else (why the working directory belongs to nobody, why environment writes scope to a task, why a bare input() is an error and a wizard is not) falls out of the pages above.