Jupyterlab runtime dependency on ydoc (packaging for Linux distro)

Hello.

I’m trying to package JupyterLab into Fedora Linux and I’m slowly moving up in the graph of dependencies we don’t have in Fedora yet. The main motivation is that the next generation of Notebook will be based on components from JupyterLab so we might have them both.

Right now, I’m looking at the graph of the runtime dependencies of JupyterLab and I see a cluster looking like this (those are the only runtime dependencies we don’t have in Fedora Linux yet):

  • jupyter-server-ydoc
    • jupyter-server-fileid
    • jupyter-ydoc
      • y-py
    • ypy-websocket
      • y-py

I’m not able to find what these dependencies are for or what YDoc is in general. The documentation I’ve found is empty: Welcome to Jupyter YDoc’s documentation! — jupyter-ydoc 0.3.0 documentation

Is this some new format or something like that? And if so, is there any chance to make it optional? Packaging Jupyterlab without these packages would make my life much easier.

Ydoc is part of the y-crdt protocol for CRDT-based multi-player/multi-cursor applications.

All put together, these provide the underpinnings of the long-requested multi-user (or multi-screen) editing capability in jupyterlab 3.6a0+, which notebook 7 will inherit. The yjs CRDT document model is pretty much the evented model in these clients, moving forward, so not shipping it in core on the server would probably break a lot of assumptions as more experiences are built with that capability in mind.

that being said: it is a deep and wide stack, to be sure, terminating with a couple rust packages, and i’m not super excited to have to maintain it on the conda-forge side of things.