-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discussion: Adding OT to Pair Programming Extension #3080
Comments
@sunix What other backbones were you thinking of adding besides flux? @TylerJewell Open source OT implementation I was going to use as a reference: https://github.com/Operational-Transformation/ot.js |
I am thinking that we only need to implement the inclusion side of OT.
void T_inc(ins(p1, c1, sid1), ins(p2,c2,sid2)){
if (p1 < p2) { return ins(p1,c1,sid1);}
else if (p1 == p2 && sid1 < sid2) { return ins(p1,c1,sid1)}
else { return ins(p1 + 1, c1, sid1) }
} we can do the exclusion side too, but doubles everything. But would allow us to support undo and locking. void T_exc(ins(p1, c1, sid1), ins(p2,c2,sid2)){
if (p1 < p2) { return ins(p1,c1,sid1);}
else if (p1 == p2 && sid1 < sid2) { return ins(p1,c1,sid1)}
else { return ins(p1 - 1, c1, sid1) }
} |
@sunix if we create a che only backbone we could use rethinkdb to hold the operations. We could set this up as a che_sync agent to be included on workspace composer options. |
ShareDB is a database integration layer dedicated to Operational Transformation: https://github.com/share/sharedb |
@shadowcodex do you want this issue to be opened? |
I am ok to leave this issue open as long lived issue to track discussion around pair programming. |
@eivantsov and @TylerJewell . I would leave this up for tracking this discussion as well. However I have become overloaded with system conversions and such at work. So I am unable to work on this going forward. I had high hopes for this, but I just don't have the extra time atm. |
Perhaps an existing collaborative editing spec or project might work well for Che. Some candidates:
(repasting from #2131 (comment) which is a similar, closed issue) |
Oh! redhat-developer/rh-che#438 has a spike experimenting with either Ot.js or teletype (again very limited protocol atm). Yay! |
@rektide the protocol is one thing but then how you use it afterwards is another. IMO what you thing is limited in atom in atom/teletype#211 can be solved in Che using the existing piece (teletype-client). |
Closing this one. Please follow #8286 |
Pair Programming extension is great, but needs a collision algorithm and I think OT (Operational Transformation) is up for the job.
I'm going to start working on adding the functionality to https://github.com/eclipse/flux. But wanted to drop an issue here for discussion and tracking. I'll reference the issue over at the flux repo when I get over there.
eclipse-archived/flux#24
The text was updated successfully, but these errors were encountered: