You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**Stay on Hugo**| Theme parity with sibling SP sites; no content changes needed | Hugo is not Python; MyST content conversion still desirable long-term |
24
-
|**jupyter-book**| Python-native; fits SP ecosystem conventions; familiar to SP contributors | Wraps `mystmd` under the hood — adds a layer; less direct than the CLI |
25
-
|**MyST-MD** (`mystmd` CLI) | Single tool; native MyST markdown; first-class cards/grids/admonitions; active ExecutableBooks development | Node-based toolchain; theme/footer customisation less mature than Hugo |
|**Stay on Hugo**| Theme parity with sibling SP sites; no content changes needed | Hugo is not Python; MyST content conversion still desirable long-term |
29
+
|**jupyter-book 2.x**| Pure Python (`pip install jupyter-book`); SP ecosystem familiar with JB; conda-forge package; handles notebook execution natively | Wraps `mystmd` under the hood — extra abstraction; config format (`_config.yml`, `_toc.yml`) is not portable to plain `myst.yml` if JB is dropped later; JB 2.x released late 2024 — docs and community experience thin; feature lag vs direct `mystmd`|
30
+
|**mystmd — Node CLI** (`npm install mystmd`) | Native runtime; latest npm releases immediately; same `myst.yml` config; active ExecutableBooks development | Requires Node.js in every build environment (Netlify, RTD, CI); unfamiliar to Python contributors |
31
+
|**mystmd — Python package** (`pip install mystmd`) | Python-centric install (pip/conda-forge); bundles Node internally — no separate Node needed; same `myst.yml` config as Node CLI (no extra abstraction layer); proven by `tools.scientific-python.org` PR #81; works on all considered deploy platforms | Node bundled internally — slightly opaque; PyPI/conda releases may lag npm by 1–7 days |
32
+
33
+
## Rationale for proposed decision
34
+
35
+
**Why not jupyter-book:**`learn.scientific-python.org` contains no Jupyter
36
+
notebooks; JB's primary value (notebook execution, Sphinx integration) does not
37
+
apply here. JB 2.x uses `mystmd` as its build engine, so the team would get
38
+
`mystmd` indirectly with an extra config layer on top. The JB config format
39
+
(`_config.yml`, `_toc.yml`) is not portable — if JB were dropped later, the
40
+
config would need to be rewritten to `myst.yml` from scratch.
41
+
42
+
**Why not the Node CLI:** Requires Node.js in every build environment. SP
43
+
contributors and maintainers work in Python environments; npm is unfamiliar and
44
+
adds friction for new contributors. The Python package provides identical
45
+
functionality without any Node setup.
46
+
47
+
**Why the Python package:** Fits SP's Python-centric workflow; `conda install
48
+
-c conda-forge mystmd` works for conda users. No Node.js needed in Netlify,
49
+
RTD, or GitHub Actions (Node is bundled inside the package). The `myst.yml`
50
+
config is identical to the Node CLI — switching delivery method later is a
51
+
one-line change.
52
+
53
+
## Open question for maintainers
54
+
55
+
> **Which MyST toolchain should `learn.scientific-python.org` adopt?**
0 commit comments