Skip to content

[DISCUSSION] Migrate documentation to Great Docs + GitHub Pagesย #716

@EKtheSage

Description

@EKtheSage

Opening this as a discussion before any implementation work. Want to gather input from maintainers on whether to migrate the docs site away from the current JupyterBook + ReadTheDocs setup to Great Docs (Posit) hosted on GitHub Pages.

Why migrate

1. Modern, opinionated Python docs framework

Great Docs (https://posit-dev.github.io/great-docs/) is purpose-built for Python packages. It uses Quarto under the hood and provides a single-command setup (great-docs init) plus auto-generated API reference. The look and feel matches what users now expect from libraries like Polars, Ibis, FastAPI: clean, searchable, dark mode, minimal navigation friction.

2. ReadTheDocs ads

ReadTheDocs displays ads on the free tier. For a CAS-affiliated project, ad-free hosting is preferable.

3. GitHub Pages benefits

  • No ads, free, deploys directly from a GitHub Action triggered on main.
  • Great Docs has a setup-github-pages command that scaffolds the workflow for you.
  • Build logs live in GitHub Actions alongside test/CI runs, making it easier to debug failures.
  • Simpler infrastructure surface area: one less external service to depend on.

4. AI-friendly outputs

Great Docs auto-generates llms.txt and llms-full.txt for AI assistant indexing, plus an "Agent Skills" output. Given how many users now interact with codebases through AI tools, this is increasingly valuable.

5. Subsumes existing requests

Issue #566 (multi-version documentation) is straightforward in Quarto/Great Docs. The source-link work in #710 (sphinx.ext.linkcode) would need a corresponding mechanism, which Quarto provides natively.

Migration cost is lower than it looks

A natural concern is that all the existing notebook content under docs/gallery/ and docs/getting_started/tutorials/ would need to be converted to Quarto's .qmd format. That isn't actually required: Quarto natively supports .ipynb files (see https://quarto.org/docs/tools/jupyter-lab.html). Existing notebooks can keep their .ipynb extension and be rendered directly by Quarto. New content can be authored in either format depending on author preference.

Open questions

  • Custom Sphinx extension: the ext_linkcode extension added in Add links to object source code in API Reference sectionย #710 is Sphinx-specific. We would need a Quarto equivalent or accept losing the linkcode_resolve customization.
  • URL stability: ReadTheDocs URLs are deeply linked across the actuarial community. We should plan redirects.

Proposed next step

Maintainer feedback on whether this direction is acceptable in principle. If so, I can scope a multi-phase migration plan (small content port first to validate, then bulk migration, then DNS/redirect work).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Documentation ๐Ÿ“šChanges to docstrings or the documentation site. No codebase changes.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions