Operational Transform Implementation (not javascript)

3.3k Views Asked by At

I'm looking to implement multi-user operational transform just for plain-text based changes on the server-side on a web-site.

Is there a non-javascript implementation that you can recommend?

5

There are 5 best solutions below

0
On BEST ANSWER

Consider Google-Diff-Match-Patch - Diff, Match and Patch libraries for Plain Text:

"The Diff Match and Patch libraries offer robust algorithms to perform the operations required for synchronizing plain text."

Diff: Compare two blocks of plain text and efficiently return a list of differences.

Diff Demo Match: Given a search string, find its best fuzzy match in a block of plain text. Weighted for both accuracy and location.

Match Demo Patch: Apply a list of patches onto plain text. Use best-effort to apply patch even when the underlying text doesn't match.

Patch Demo Currently available in Java, JavaScript, C++, C#, Objective C, Lua and Python. Regardless of language, each library features the same API and the same functionality. All versions also have comprehensive test harnesses.

You can find it here.

0
On

Consider Py-infinote.

py-infinote is a python port of JInfinote, offering a collaborative text-editing protocol(adOPTed) which can be used to write multi-user collaborative text editors. Py-infinote is used in the HWIOS project.

https://github.com/sveith/jinfinote

0
On

This is another quite interesting implementation integrating google wave's operational transform with jedit:

https://github.com/djspiewak/cccp

0
On

OpenCoweb is a popular OT implementation. There are several server implementations written in different languages.

0
On

Simple reference implementation which I will be improving next few months by adding more complex stuff;

Now it has:

  • simple text operations; retain, insert, delete and their transformations against each other
  • annotations over text and transformations
  • generation of changes and applying them to text

https://github.com/slevental/operational-transformation