Skip to content

Evaluate authoring framework: stay on Just the Docs vs. migrate (interactivity + p5.js a priority) #103

Description

@jonfroehlich

The question

Is Just the Docs (a documentation theme) still the right engine for what is really an interactive textbook? Several V2.0 pain points trace back to JtD/Jekyll being a docs tool rather than a textbook/interactive-content platform. This issue is to evaluate alternatives and decide before we invest heavily in JtD-specific implementations of #99/#100/#101.

Requirements (what the engine must serve)

  • Maximum interactivity — now a first-class goal. Many newer lessons embed p5.js sketches; we want rich, ideally native/inline interactive content (live, possibly editable sketches), not just third-party iframes.
  • Academic-textbook rigor: LaTeX-grade math, figure/equation/section cross-references (see Add LaTeX-style clickable, auto-numbered figure references #101), citations, multi-format output (HTML, maybe PDF/ePub).
  • Executable code for the computational chapters (the signals/ module has Jupyter/Python content).
  • Accessibility + SEO (active V2.0 workstreams).
  • Longevity, open source, free hosting (GitHub Pages today), low ongoing maintenance.

Current state (what we'd migrate from / costs)

  • Just the Docs v0.12.0 via remote_theme; ~100 Markdown lesson pages, heavy inline HTML, MathJax ($$...$$ only), custom CSS, callouts.
  • Interactivity today is third-party runtime embeds, which is fragile:
  • These runtime embeds are invisible to screen readers/search and break if the external service goes down.

Candidate engines (with the interactivity lens)

Option Interactivity / p5.js Textbook strengths Migration cost
Stay: Jekyll + JtD (+ #98) Manual JS / iframes only Familiar; content keeps moving None
Astro + Starlight Strong — island components can run p5 sketches inline/natively; great a11y/SEO/perf Markdown/MDX, math via remark/KaTeX, cross-refs via plugins Medium-high (MDX, strip Liquid)
Docusaurus (React/MDX) Strong — React components for live sketches/simulators; versioning, Algolia search Good, app-like High (JS toolchain, MDX)
Quarto Moderate — raw HTML/OJS/iframe; p5 not a first-class component Best academic fit: native cross-refs (#101), executable Python for signals/, citations, PDF/ePub Medium-high
Material for MkDocs Weak-moderate — manual JS/iframes Lowest-friction upgrade; great search/a11y/admonitions Medium (convert Liquid + front matter)

The core tension

The "best interactive engine" (Astro/Starlight or Docusaurus — native p5/components) and the "best academic-textbook engine" (Quarto — math, cross-refs, executable code) pull in different directions. Given interactivity is now a stated priority, Astro + Starlight and Quarto are the two strongest candidates; the decision hinges on which axis dominates.

Relationship to other issues

This is upstream of:

Decide this (or explicitly defer it) before sinking effort into JtD-specific versions of #99/#101.

Proposed next step

Low-risk proof-of-concept: port one module to the top candidate(s) and compare real rendered output + authoring feel + how cleanly p5 embeds become native. Suggested pilot module: signals/ (worst-maintained today and exercises math + executable Python), and/or a p5-heavy communication/ lesson to test interactivity.

Tasks

  • Confirm hard requirements + rank them (interactivity vs. academic rigor vs. migration cost)
  • Build a Quarto PoC of one module
  • Build an Astro/Starlight PoC of one p5-heavy lesson
  • Compare a11y/SEO output, build speed, authoring ergonomics, migration effort
  • Decide: stay (+Evaluate moving to a GitHub Actions Jekyll deploy (enabler for V2.0) #98) vs. migrate, and to what

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestinfrastructureBuild, deploy, CI, performance, toolingquestionFurther information is requestedv2.0Targeted for the Version 2.0 release

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions