Skip to content

YJS Provider compatibility is foggy #1040

@Annakan

Description

@Annakan

Part of the documentation?
https://tiptap.dev/docs/hocuspocus/provider/overview…

Hard to understand, missing or misleading
I read this page and was really wondering if this was AI slop :)

The page seems to contradict itself constantly probably because similar names are used for different things.

Providers are the Y.js way to set up communication between different users, or cache the updates in the browser.

Hocuspocus comes with its own provider and is not compatible anymore (since v2) with other y-providers, as we are supporting multiplexing to synchronize multiple documents over the same websocket connection.

So Hocuspocus and the titptap extension connecting to it are not compatible with the rest of the YJs ecosystem ... right ? Damm ! shame !!! ...

but :

All Y.js providers can be used together. That includes the Hocuspocus provider, and the original y-websocket provider, y-webrtc, y-indexeddb (for in-browser caching) or y-dat (work in progress). You can use the Hocuspocus provider with y-webrtc and other y-providers,

So what it is ?

Does that mean that the Hocuspocus provider ( that I understand to be the TipTap extension part : @hocuspocus/provider) support two 'wire' protocols one for the Hocuspocus SERVER/hub and one for other YJs clients ?

Or does it mean that we can plug several providers into TipTap one optimized for the hocupocus "server" and others to talk to standard Yjs clients/providers ?

but when using Hocuspocus you'll have to use our HocuspocusProvider, and server implementations apart from hocuspocus probably won't work too. You can however instantiate multiple providers if you want to synchronize with Hocuspocus and other servers.

Now I am truly lost :)

I my case I want to synchronize a python server through pycrdt (wrapper around yrs) and I would like to know if I can plug that into the TipTap ecosystem (thus through @hocuspocus/provider and the undo/redo extension etc...) or if I am out of luck and looking into manual sync (and the horrors that come with that)

My current experimentation tend confirm to the latter I would love to be wrong.

Is there any example of this I have missed ?

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions