Real-Time Collaboration on a Note - Project

Hi,
I read through all proposal and discussion in this matter: Trying now to summarize it, it may help in this discussion.
The technologies mentioned in the proposal and other private discussion are pretty much the same as mentioned in Joplin Server pre-release is now available - Development - Joplin Forum (joplinapp.org) and Any suggestions on what web technology could be used to add support for sharing notes? - Development - Joplin Forum (joplinapp.org).

These TECHNOLOGIES are:

  1. yjs/yjs: Shared data types for building collaborative software (github.com)
  2. Convergence: The Real-Time Collaboration Engine
  3. jsfiddle/togetherjs: A service for your website that makes it surprisingly easy to collaborate in real-time. (github.com)
  4. Socket.IO
  5. WebRTC
  6. bontaq/textdb: The whole shaboodle for textdb, a simple data sharing service (github.com)
  7. ShareDB.
  8. Gun
  9. Automerge

In addition, EXAMPLES are referenced:

  1. Use Microsoft Live Share to collaborate with Visual Studio Code
  2. An Online Visual Collaboration Platform for Teamwork | Miro and Figma: the collaborative interface design tool. to show collobartion could be visualized. I used Miro once and liked the way, the cursor of others is shown.
  3. This Is How to Build a Collaborative Text Editor Using Rails | Aha! what is a good instruction how to implement this
  4. Conclave Case Study - A private and secure real-time collaborative text editor (conclave-team.github.io) another instructions as 4. but in much more detail
  5. Textdb
  6. JSFiddle - Code Playground what uses Mozilla Labs : TogetherJS
  7. Synchronization ยท zadam/trilium Wiki (github.com) as it mentions Conflict resolution, what is another GSoC project, Conflict Resolution.

@Aksh-Konda, you create a new topic or put it somewhere else, whatever suits you best and do a final compare of the technologies available, similar to Convergence Labs: Choosing a real-time collaboration library.
Tell if:

  1. server is needed
  2. if so, if server can be provided as docker, e.g. Docker NodeJS Socket.io tutorial (dockerize.io)
  3. activity on the repository (project alive, issue closed within a reasonable time etc.)
  4. basic implementation into Joplin

This shall happen rather soon


If we come to the conclusion that a server is required, it shall be easily deployable.
It may be merged into the Joplin Server, if all runs stable and implementation is not much of a big deal.


For sure but I can imagine if you edit something that is deleted by someone else you are going to have a conflict that cannot be avoided.
I could imaging that in that case, the user, who changed something in the changed section, should be asked if the removal should be applied and sync of this part is frozen until this is resolved.
Anything else should happen without a conflict. The only challenge is how to keep the overview if a lot of changes are done, avoiding that your cursor jumps up and down the note etc.

4 Likes