Skip to content

Support JupyterLab>=4.0 #16

Description

@bollwyvl

Problem

One of the larger breaking changes from JupyterLab 4.x will apparently be landing on the 3.6 line, namely the frontend expecting a jupyter_server_ydoc-compatible WebSocket server.

This should provide missing identity features, and fixes for total-data-loss bugs when working with many users in RTC.

Proposed Solution

NB: I really don't know what I don't know about everything happening here, and would greatly appreciate any help from others more knowledgable 😍.

Ideally, implementing this change should still result in a lightweight, low-config labextension (and likely liteserverextension) that only requires a public or self-hostable (#4), signaling-only server process.

LiteServerExtension

Provide the same features as the https://github.com/jupyter-server/jupyter_server_ydoc/blob/v0.1.12/jupyter_server_ydoc/ydoc.py#L86.

For a full JS solution, it would be a relatively deep stack including

Ultimately, it may still require a source of truth, a leader election process, or something, which may not be provided by a "naive" public yjs signaling server. Keeping this property may require an even more exotic implementation when it's all clients.

JupyterFrontEndPlugin

Update the provider (and related features) to match jupyterlab/jupyterlab#13222 (or whatever ends up being the final state).

Alternatives

LiteServerExtension

  • use the absolute lightest-weight python jupyter_server_ydoc-compatible implementation
    • if this didn't require replacing the entire jupyterlite server (contents, etc) a la Use jupyverse as a "real" server jupyterlite#779
      • this could be feasible if even viewing a file isn't blocked by the (much larger than ywasm) emscripten machine starting up

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions