Skip to content

Sync Engine and Real-Time Collaboration #52593

@youknowriad

Description

@youknowriad

This is the overview issue for the collaborative editing project as defined on this post.

The goals are multiple here:

  • Allow multiple users connected to the same WP-Admin to collaborate together on the same content (multiple posts/templates...) live.
  • Enabling offline editing and synchronization of data.
  • Offer a great DevX where developers are freed from thinking about the collaborative editing needs. Data is collaborative and synced by default and abstracted away from the UI developer.

Tasks:

  • Review previews explorations (Collaborative editing using WebRTC #1930 and asblocks).
  • Bootstrap the sync engine architecture and package (being experimental flag) Bootstrap a minimal sync package  #52681
  • Allow persisting and loading data from a local database. (browser, offline-first data)
  • Build a transport communication layer between multiple peers working on the same documents. (WebRTC based on long polling or poling?) [Try] HTTP based PHP signaling server for colaborative editing #53922
  • Extensibility: Allow the transport layer to be replaced ?
  • Design and represent the “presence” of connected peers in the interface. Integrate selection state with other useful parts of the interface, like the block list sidebar.
  • Implement a security layer on top of the transport layer to prevent private data from being shared between peers without the right permissions.
  • Lift concurrent editing restrictions. Right now WordPress locks a post to the current user that is editing it. Another user can take over, but it doesn’t allow two users working on the same post at the same time.
  • Review undo / redo stacks and resolution.
  • Implement the syncing behavior for all the entities of WordPress Data (CRDT representation and config).
  • Employ peer caret and selection primitives that work across block types and design their semantic and visual representation.
  • Explore the possibility of “following a user” as they work through a document.
  • Assess performance and memory usage and impact on non-collaborative editing sessions.
  • Support multi-site (both multi WP and single WP installs) local databases (document ids) Bootstrap a minimal sync package  #52681 (comment)
  • Support syncing for global styles edits Bootstrap a minimal sync package  #52681 (review)
  • Check that all entities are synced properly.
  • Implement e2e tests for collaborative editing and offline syncing.
  • Support inline comments
  • Allow peers to make edits as suggestions to later be accepted/rejected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    [Feature] Real-time CollaborationPhase 3 of the Gutenberg roadmap around real-time collaboration[Type] OverviewComprehensive, high level view of an area of focus often with multiple tracking issues

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions