Open
Description
As stated in the issue title, I'd like to propose moving the hosted documentation away from Read the Docs and using GitHub Pages instead for hosting. This was last discussed in #706 (comment) and, probably, a few times elsewhere.
Some of the advantages and reasons for this suggestion are as follows:
- We receive greater control over the build process and we can modify it as we like, instead of having to configure extra build steps we might end up needing in a
.readthedocs.yaml
file - For enabling the rest of the interactive documentation for PyWavelets on latest versions, it is then possible to embed a custom Pyodide distribution, which seems to me should be the best approach for reusing the docs. I've previously tried a similar approach, but this new one that I propose should work better, since it would work without the need for nightly WASM wheels.
- One less GitHub App to configure for this repository/organisation and fewer finicky permissions to handle.
- and so on
Some things to be thought about:
- PyWavelets is a package that has been present for almost nineteen years now, and a lot of links will get subjected to link rot if we don't preserve the style of the Read the Docs links, i.e., to link to the "stable" documentation and "latest" documentation under
/en/stable/
and/en/latest/
respectively. Setting redirects for broken links is possible under the Read the Docs admin dashboard, but it's difficult to do the same thing on GitHub Pages. - How to best navigate "stable" and "latest" documentation updates on GitHub Pages. For the latter, it would be through a GitHub Actions job that gets triggered on pushes to the
master
branch and uses a fine-grained PAT to update the rebuilt docs in the gh-pages branch for a PyWavelets/docs repository - The features enabled via the Read the Docs add-ons will be lost. Not a big bummer, though, considering we host only the "latest" and "stable" versions and the version switcher has been the most useful one, IO. The version warning on an "unstable" version can be natively re-implemented using admonitions by customising the
conf.py
file. - and more things I might have missed at the time of writing this issue.