Andrey Mokhov
Software engineer at Jane Street working on build systems, and co-author of Build Systems à la Carte — an academic paper that strips every major build system (Make, Bazel, Shake, Excel) down to a two-component model and shows how their differences reduce to a choice of scheduler and rebuilder. Before joining Jane Street, Mokhov spent several years on Hadrian, the Haskell-based replacement for the Glasgow Haskell Compiler’s Make-based build system, an experience that gave him an unusually concrete understanding of why large, long-lived build descriptions resist migration.
At Jane Street he has worked on two build systems simultaneously: Jenga, the internal monorepo build tool written and configured in OCaml, and Dune, the open-source OCaml build system that grew from a Jane Street internal tool into the community standard. His current focus includes adding cloud build support to Jenga — enabling developers to share compiled artefacts via a content-addressed store rather than rebuilding from scratch on every machine — and planning the eventual migration from Jenga to Dune.
Core positions
Mokhov holds that most of the apparent complexity in the build system ecosystem reflects two distinct design choices — how to schedule tasks and how to decide whether to re-run them — being conflated and solved ad hoc rather than separated and composed. His paper’s scheduler / rebuilder decomposition is a genuine analytical tool: it identified Cloud Shake as a novel and implementable combination before it existed, and gave Neil Mitchell a clear blueprint for extending Shake with cloud build support. He is candid that migrating between build systems resembles archaeological fieldwork more than software engineering: years of accumulated build rules encode institutional knowledge that must be surfaced through conversation and careful testing, not merely converted mechanically.
On the future of the field, Mokhov expects build systems to absorb more of what compilers currently handle — moving from file-level to function-level incrementality — and eventually to be treated as a named first-class component inside compiler architectures, rather than an external tool invoked after the fact.
In the wiki
- Andrey Mokhov on Build Systems — Signals and Threads, 16 September 2020: Make, cloud builds, the scheduler / rebuilder decomposition, Jenga and Dune at Jane Street, and the future of incremental computation