I feel like all of the components are in place in the Jupyter ecosystem to enable ~ a full publishing pipeline for reproducible computation. These are the major pieces I can think of:
- Jupyter Notebooks (
.ipynbor text-based notebooks) for storing the content + computation + (optionally) results
- JupyterHub / BinderHub (for providing environments where people can interact with the computation, or providing kernels that can power visualizations remotely)
- Jupyter Book (for providing more “publication-ready” documents and syntax, such as citations and figures, and for providing a lightweight way to share content with others)
- JupyterLab (for authoring and interacting interactively with notebooks)
- GitHub Actions (to automate some of the connections between services, and manage a review pipeline on GitHub)
From a user’s perspective
I want to be able to do the following:
- Work on my notebook in a Jupyter Lab interface, author my computation etc in that notebook, along with rich syntax for publishing (figures etc)
- In one-or-two clicks, publish that notebook so
- Others can quickly read what I created, in a beautiful and “publication-style” form
- Others can quickly discover what I created, potentially along with creations from others on a hub
- Others can quickly interact with what I created on the infrastructure where I created it.
- Others can quickly comment on what I created to provide feedback.
- Others can find a DOI for my notebook
I think that we have the building blocks needed to do much of this:
author: JupyterLab (with improvements to Lab markdown so that some publication-relevant MyST markdown syntax is supported)
discover: something like the jupyter book gallery or the Pangeo Gallery
interact: either thebe integration via Jupyter Book, or links that connect back to a JupyterHub / BinderHub
comment: a commenting system built in to the published page, like hypothesis in jupyter book
DOI: connect to one of the DOI minting services like cross-ref
I think there are two kinds of development we’d need:
- Focused development in each tool to improve each of these tools in focused ways (e.g., MyST support in JupyterLab).
- “Glue” development focused around building better connections between these tools (e.g., a JupyterLab extension to publish a notebook as a Jupyter Book on github, or in a gallery).
I think we’d need the following roles (covered by one or more people):
- A JupyterHub/Binder person with knowledge about the infrastructure + cloud
- A JupyterLab person to help with the interface and extension updates
- A Jupyter Book person who understands MyST markdown and some of the publishing features in JB
- One or more usecases for publishing that we can use to design tech + proces around
- A person with relevant background in publishing use-cases to notice edge-cases and blind spots we haven’t considered (e.g. a librarian, publishing expert, etc)
Just wanted to get this idea written down to see what others think! Perhaps this is the kind of thing a group of us can raise some $$$ around building? Would love to know the reaction of others to this idea!
thanks to @rabernat for helping me think through some of these ideas