ot.js
rich-text
ot.js | rich-text | |
---|---|---|
2 | 1 | |
2,019 | 307 | |
0.0% | 0.0% | |
0.0 | 10.0 | |
almost 2 years ago | over 2 years ago | |
JavaScript | JavaScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ot.js
-
You don't need a CRDT to build a collaborative experience
This single file shows the entire set of OT transformations (retain, insert, delete):
https://github.com/Operational-Transformation/ot.js/blob/mas...
and this is a good post outlining the basics of OT, from the creator of CodeMirror:
https://marijnhaverbeke.nl/blog/collaborative-editing-cm.htm...
-
Show HN: Rustpad, a self-hosted online collaborative text editor in Rust
Thanks! Operational transformation is the same technology that powers Google Docs. It's been studied in academia for real-time collaboration since the 1990s and has eventual consistency guarantees. See the Wikipedia article: https://en.wikipedia.org/wiki/Operational_transformation
The Rust operational-transform library was not written by me, but it's listed on crates.io by spebern, and it's worked wonderfully so far. It seems to be a very close port of ot.js (https://github.com/Operational-Transformation/ot.js). The text transformation algorithm isn't very complicated (<700 SLOC including tests), but there's probably room for optimization!
rich-text
-
You don't need a CRDT to build a collaborative experience
nah, that’s not true at all. have a look at ‘rich-text’[1] which allows for transforms on metadata in a separate stream from the main content. it’s the same basic algo used for OT on plain text.
(i was the cto at a startup which used this to create a multi-user text editor with rich text support in 2015ish)
1: https://github.com/ottypes/rich-text
What are some alternatives?
rustpad - Efficient and minimal collaborative code editor, self-hosted, no database required
othello - Operational transform library for Clojure + Clojurescript
collabs - Collabs library monorepo
othello-ocaml - Reimplementation of https://github.com/jahfer/othello in OCaml programming language