jupyter-book / mystmd

Command line tools for working with MyST Markdown.
https://mystmd.org/guide
MIT License
205 stars 61 forks source link

Define guidelines for adding support for external services in Jupyter Book (e.g. launch buttons, edit buttons, etc) #1584

Open choldgraf opened 4 days ago

choldgraf commented 4 days ago

Context

There are several places where users can use Jupyter Book to connect with external services for interactive computing and editing. For example:

In the past, representatives from open source projects or private companies have requested to add support for their services[^1]. This has led to some confusion about when to say "yes", what maintenance obligation we're taking on, etc. We should define this more clearly to avoid this confusion in the future.

[^1]: For example see this PR adding deepnote to the book theme and this PR about adding Lightning Studio

Suggested guidelines to follow now

Longer term we should define an extension point for this

In the long term, I think we should define an extension point for these kinds of integrations, so that external parties could define MyST plugins that added support for various services, rather than requiring this to be part of the core codebase. This policy is a suggestion for an intermediary solution.

rowanc1 commented 4 days ago

I think another axis of this that we should prioritize is how to make these sorts of integration point generic, such that the documentation/code allows launch buttons to be configured (e.g. open this URL with a github link param, show this icon, say "Launch ___").

I am also coming up against this with identifiers, e.g. where to put biorxiv, zenodo, arxiv, openalex, pmc, pmid, etc. identifiers. Right now we are defaulting to top level documented changes, and that requires a frontmatter change every time. We should likely move to that being more generic and can be added by users without changes. (See #1585)