Any progress on Jupyter Scribe / WYSIWYG extension?

In 2019, I was excited to see news about “Jupyter Scribe” an extension using ProseMirror by @isabela-pf and @dereklam for a WYSIWYG editor / toolbar icons.

I understand this was a summer intern project… but when I’m teaching undergrads, there’s definitely a learning curve with Markdown … and toolbar icons or a WYSIWYG / ProseMirror section would be really helpful for new users.

Are there any other alternatives that work with newer versions of JupyterLab?

Thanks in advance!

1 Like

While there has been an explosion of other rich text editors, I don’t think anyone has pushed the bar much further than what was shown there.

I think in the forthcoming JupyterLab 4/Notebook 7, the stage will be set to revisit some of these:

  • CodeMirror 6 integrates much more seamlessly into Prosemirror
    • CM6 also isn’t the accessibility nightmare it had to be to support legacy browsers like IE6
  • the ecosystem around Prosemirror has improved substantially
  • the ecosystem around JupyterLab no longer forces an error-prone nodejs dependency on users for rich features
    • indeed, jupyterlite could provide a “no daemon” renderer/editor which won’t require re-writing everything multiple times
  • a multi-user editing model that has less catastrophic data loss

As we’ve explored jupyterlab-markup and other tools, I am partially of the mind that a Prosemirror-like schema (if not exactly the prosemirror schema) that knows how to edit and compare, and not just render, is necessary to achieve more of the features one would inevitably expect after the initial “it can make bold” of basic editing: comments, track changes, transclusion, etc.

A given document will need to provide metadata about which extensions (at what versions) were in use when it was created: complex-documents-as-unannotated-markdown is a gangland hellscape from which no document will be representable a few years down the line.

So stay tuned!


jupyter-wysiwyg is a very similar project that offers WYSIWYG editing in JupyterLab.