rnote icon indicating copy to clipboard operation
rnote copied to clipboard

Multi-Client syncronisation

Open tonitch opened this issue 2 years ago • 1 comments

Is your feature request related to a problem? Please describe.
there is two use case:

  • Work with someone else on the same document
  • visualise two part of the same document at the same time (for scool for instance, see exo and solving at the same time)
    • Particularly I have two computer and I like to put one on one pc and the other on the other pc. (one with big screen to see and one with small screen to write)

Describe the solution you'd like
A Client/server archicture (like styluslab does). all input should be sent to the server and relayed to other client. The view location should be free and not transmited. Maybe permissions could be good too (one write other are viewer, usefull in class with one teacher and student)

Describe alternatives you've considered
A socket file that handle "sessions" (like tmux, vim, ...) this socket file would handle communication and you can use ssh to handle multiple machine.

Additional context
I thinks this is not a feature that is planned in the current scope of rnote. I put this feature request here because this is the point of feature request but I assume I will have to implement it myself. (supposedly on a fork). I haven't tried rust yet so if you have any advice on that I would be glad to read. If you plan to implement it tho, please tell me so it saves me time and energy to put in my studies. I also think that could be a "plugin" or "script" for the project if one day you do a add-on system.(this is another feature request so I won't develop here)

tonitch avatar Dec 19 '23 10:12 tonitch

A feature like this would definitely be welcome. In fact, it is requested since basically the beginning of the project (issue #2 ).

There is no implementation yet, but I would personally lean towards a peer to peer solution based on a CRDT like automerge. What you're suggesting would be what's called operational transforms which are apparently quite difficult to implement and require a central server node. The layer for communicating between nodes is also a topic that would need more investigation, but libp2p could be a better fit. It claims to support NAT hole punching which would be a plus when communicating directly with other nodes

I personally only came so far to write a prototype collaborative text-editor to become familiar with the mentioned libraries, but that's quite a while ago

flxzt avatar Dec 19 '23 17:12 flxzt