kothariji / SyntaxMeets

Syntaxmeets. Create rooms 🏠 Call your friends πŸ‘¬πŸΌ Sip Chai, β˜• Chat, Create, and CodeπŸ‘¨β€πŸ’». A coding platform to code simultaneously πŸš€ with your friends and design your algorithms on SyntaxPad.πŸ’«βœ¨
https://syntaxmeets.vercel.app
MIT License
167 stars 59 forks source link

Conflict resolution for collaborative editing. #45

Open Aryaman1706 opened 3 years ago

Aryaman1706 commented 3 years ago

Is your feature request related to a problem? Please describe.

Describe the solution you'd like

Motivation

Are you willing to contribute to this issue?

Describe alternatives you've considered

Additional context

kothariji commented 3 years ago

Hi @Aryaman1706, First of all, thank you so much for taking out the time to create this issue. πŸš€

We will try to analyze these algorithms and will get back to you shortly, that what we can do in this scenario. Also, @nehaparmar99, can you please look into this issue and share your reviews πŸ™Œ

Aryaman1706 commented 3 years ago

So I have read more on both these algorithms to figure out which one would be better. Links in my previous comment depicts why do we need any of them.

Here is a very nice article comparing OT with CRDT. It covers up most of the things without going into technical details of algorithms.

It basically boils down to this:

But we can cut out the operation logs in OT by just restricting it to a limited number and deleting all of them if there is only one active user editing the document.

I would love to discuss it further. Thank You.

kothariji commented 3 years ago

@Aryaman1706 I went through both of these algorithms and they are pretty amazing. So, talking about OT, we currently don't have a central server to transfer data from 1 peer to another. We have implemented socket programming, keeping web-RTC in mind. So if we use OT in our express(backend), do you think it will increase latency, and socket communication speed will decrease eventually? Also here is my discord username - kothariji#7469, we can connect there for further discussions.

Happy Contributing :raised_hands:

subhangi2731 commented 3 years ago

please assign me this

subhangi2731 commented 3 years ago

@kothariji ??

kothariji commented 3 years ago

Hey @subhangi2731, before assigning this issue to you, can you please tell me, which algorithm are you going to use for conflict resolution, also what workflow are you going to follow, and implementation details about frontend / backend.

subhangi2731 commented 3 years ago

@kothariji The algorithm which I will use is Operational Transformation which will allow systems to collaboratively perform a common task and then the technique will allow users to keep track of operations performed on shared data as a means of keeping track of changes in the data.

subhangi2731 commented 3 years ago

I need to read the code more of the project then I will share u implementation details of frontend/backend