Johannes Raggam: Collaboration revolutions in Quaive

published Oct 05, 2023

Talk by Johannes Raggam at Plone conference 2023, Eibar, Basque Country.

Currently we have quaive.app.onlyoffice and quaive.app.libreoffice for realtime collaboration. As html editor we use TipTap, using the pat-tiptap pattern, with Hocuspocus for synching changes. This can be used for example for collaboratively writing notes for a weekly meeting.

TipTap is a headless/designless editor, so you need to build your own. It fits nicely in our Patternslib ecosystem. It is based on ProseMirror. This means it has a strict content schema: you define exactly what html structures are allowed. The outcome is potentially nicer HTML than what you get from TinyMCE, the default editor in Plone. Our integration is opinionated, but well-reasoned.

We use the Yjs library, which is a bit like conflict resolution in the ZODB. Also offline support, with sync once you are back online.

Hocuspocus is Tiptap's oen collaboration library. Based on web sockets.

We have a first prototype. We don't have a collaboration history: the document is just saved. Currently only the initiating user can save. Permission check is only client-side for now.

Uses plone.app.textfield, with the Yjs document in the raw value.

Code:

We have to see if Plone as storage backend is good for this. There are some BBQ (Boring Bundling Questions).

We want to make this available in standard Quaive. Maybe even for Plone and Volto.

We would like multi-channel editing, so at the same time you can edit text, title, description, data, list of participants, etc.

A collaborative whiteboard would be nice. Collaborative card notes. Collaborative anything!