Peta Hoyes, COO, and Fabian Franz, Vice President of Software Engineering, of Tag1 Consulting discuss how teams are working collaboratively in real time and asynchronously more than ever before. Content management systems (CMS) need to meet the needs of users, but to date no system offers real time collaboration, because building collaborative software is extremely complex. Yjs, a real-time collaboration framework abstracts all this complexity, allowing you to enable collaboration in any application. Working with the author of Yjs, Tag1 integrated real-time shared editing into Drupal and WordPress. In this talk, Peta and Fabian discuss the spectrum of collaborative applications, how we integrated collaborative editing into WordPress and Drupal, and demo the applications.

As we face the challenges of the global novel coronavirus pandemic, Peta feels that expanding on the tools that remote users already use is critical for the continued success of businesses in the future. Asynchronous tools have been the staple of collaboration, meeting a plethora of needs. While synchronous communication is a backup, there is a space where those tools don’t match up. Peta brings a strong focus on how a modern content management system works, with an explanation of how CMSs still aren’t meeting the collaborative needs of their users.

“A great collaboration tool needs to support the appropriate levels of interaction throughout the entire workflow process to be effective.” - Peta Hoyes

Synchronous collaboration and the CMS

The core of a content management system is the content, and content creation. Content creation techniques lag behind, leaving users to create their content elsewhere, and copy and paste into the CMS. None of them work collaboratively, the way teams need to today.

Peta makes the case for three components that a CMS needs to create a truly collaborative tool:

  • Presence awareness indicators - can you tell who you’re collaborating with? Can you see if they are active and who’s working where, or if they are passive?
  • Change management - do you have an editing workflow? Can you leave comments, and track changes?
  • Algorithms - is the underlying technology ensuring content editors aren’t clobbering each other?

Enter Yjs

Yjs is an open source framework for making any application with structured data collaborative. Integrating Yjs with Drupal enables content creators to work together in the CMS in a way they have never been able to before, with editorial workflow and presence and awareness features. Yjs is extensible, giving you the ability to create your own features. Yjs is also offline-first, encouraging users to work from wherever they need to, whether or not they have a network connection.

Yjs makes use of the Conflict Free Replicated Data type (CRDT). This type of data is designed for data distributed across networks, on multiple machines, possibly being updated by multiple users at once. When you store that data in a JavaScript array, move it to a YArray, connect it to a server - you’ve got real-time collaboration.

Yjs and Drupal

The biggest challenge was not technical, but philosophical; integrating ownership, change tracking, and workflows requires input from different audiences. Yjs stores state data in a binary file - when saving a revision in Drupal, storing the HTML, JSON, and the binary state vector of the Yjs history document gives you a consistent match between states. The core Drupal revisioning system works directly with the Yjs framework. You can even use a level of access control by using a hash between the user and document.

Many features could be integrated in the future. These are the first steps towards a fully collaborative content creation process. The Tag1 team has also been working on a similar integration for WordPress too.

To learn more about how Tag1 uses Yjs, see our other podcasts, blog posts, and presentations on Yjs.

For more of Tag1's content for and about DrupalCon, see DrupalCons!