Roadmap¶
marimo-book is alpha (v0.1.0a1) and evolving. This page is the
public-facing summary of what's shipped, what's in flight, and what's
on the medium-term horizon. Plans change; treat this as a direction,
not a contract.
Where v0.1 stands¶
The 0.1 series is the first stable surface — all the CLI commands,
the book.yml schema, the preprocessor pipeline, anywidget +
Plotly + WASM rendering, static-reactivity precompute, the build
cache, and Material-shell theming all ship today. See the
changelog for the granular release-by-release
history; below is what's coming next.
Next up (v0.2, in planning)¶
Subgraph re-execution for precompute¶
Today's precompute (Path X) re-runs the full notebook per widget
value. Path Y would drive marimo's App.embed() / _ast API directly
to execute only the downstream subgraph, often 10-100× faster.
Critical for chapters with expensive setup cells (large data loads,
ICA decompositions) where wrapping in mo.persistent_cache only
helps so much.
Dependency-graph-aware build cache¶
Marimo already computes a reactive DAG per notebook. Emit a build
manifest so marimo-book build re-executes only the cells whose
upstream dependencies changed, not the whole notebook. Today's
chapter-level cache invalidates on any source-file change; a
cell-level cache would let one-line prose edits skip re-execution
entirely.
Citation hover-cards¶
BibTeX ingest + [@key] rendering with Material's card syntax showing
authors, title, year, DOI on hover. Modern-doc-site parity.
Medium term (v0.3+)¶
Port to zensical¶
Zensical is Material for MkDocs' Rust-based
successor, built by the same team. It's designed for drop-in
compatibility: same mkdocs.yml, same Python Markdown extensions,
same custom CSS/JS, with minor MiniJinja template tweaks.
marimo-book's architecture is deliberately shell-agnostic — the
preprocessor emits plain Markdown + inline HTML, not mkdocs-plugin
artifacts. When zensical stabilizes, flipping to it will be one
command change in CI:
- marimo-book build # runs `mkdocs build` under the hood
+ marimo-book build --shell zensical # runs `zensical build`
Expected differentiators: 4–5× faster builds via zensical's differential-build engine, a faster client search (Disco), and a longer support runway than Material for MkDocs which is entering 12-month maintenance mode.
Smoke test — 2026-04-24 (zensical 0.0.36): a pip install zensical
run against the _site_src/mkdocs.yml that marimo-book build emits
builds successfully in 0.21s — ~5× the speed of MkDocs on this site
— and picks up our custom extra.css, Inter/JetBrains Mono fonts,
and theme.palette hex. Observations from the first build:
- The Rust core panics (
invariant: Format(Path(RootDir))) on absolutesite_dirpaths.shell.pycurrently emits absolute paths; the port will need to emit relative or pre-resolve. zensical newgenerates azensical.tomlwith a different schema thanmkdocs.yml(TOML tables, noplugins:, Lucide icons instead ofmaterial/*). The compat-page claim of "no new config format to learn" is currently aspirational; a real port will still want to emit a zensical-native config rather than relying on the YAML fallback.- Plugins we use (
social,htmlproofer) are not in zensical's 0.0.x plugin surface yet. Search is built-in (Disco). - Nav entries lose explicit
title:labels; zensical uses the page's# H1instead. Preserving TOC titles will need a config or preprocessor change. - Our icon uses (
material/weather-sunny) render as Lucide substitutes.
Net: zensical is further along than the 2026 v0.3 expectation, but still 0.0.x. A real port remains a v0.3 item, not a near-term swap.
Timeline: tracking zensical's own trajectory, not ours. Likely 6–12 months out.
Per-notebook dependency override¶
Mix env and sandbox modes within the same book by overriding at
the entry level:
First-class BibTeX + {cite} / [@key]¶
Full citation support: inline [@smith2020], auto-generated
references page, APA + numbered styles. Uses
pybtex.
Multi-book cross-references¶
Link from one marimo-book site to a chapter in another (similar to
Sphinx's intersphinx or Jupyter Book's xref:). Low priority — we
haven't met a user who needs this yet.
Not on the roadmap¶
Things we've deliberately decided not to do, with reasoning:
- PDF / EPUB / Word export. Orthogonal to a web-first tool. Users
who need PDF output can layer
mkdocs-with-pdfon top of the generatedmkdocs.yml. - A notebook editor. Author in marimo itself;
marimo-bookonly builds. - A kernel runner. The static site serves HTML + JS; no server-side execution. Reactivity comes from anywidgets (client-side) or molab (external).
- MyST syntax. marimo-book uses Material for MkDocs's Markdown dialect
(
!!! notefor admonitions,[label](page.md)for cross-refs). Existing Jupyter Book content using MyST directives like:::{glossary}or roles like{download}needs a one-time migration to Material syntax.
How to influence this¶
marimo-book is open and transparent. Everything above is a hypothesis
about what users need — your use case might shift priorities.
- File an issue on github.com/ljchang/marimo-book/issues describing what you're trying to publish and what's blocking you.
- Send a pull request — the project is MIT-licensed, tests are green and fast, and the architecture is small enough to comprehend in an afternoon.
- Build your own book and tell us what broke. The tool is in active use on at least one real course but needs more consumers to surface the things we haven't hit yet.