othello-ocaml
collabs
othello-ocaml | collabs | |
---|---|---|
1 | 2 | |
1 | 237 | |
- | 1.7% | |
10.0 | 5.9 | |
over 6 years ago | 12 days ago | |
OCaml | TypeScript | |
- | Apache License 2.0 |
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.
othello-ocaml
collabs
-
You don't need a CRDT to build a collaborative experience
> Opaque State: [...] You can’t inspect your model represented by the CRDT without using the CRDT library to decode the blob, and you can’t just store the underlying model state because the CRDT needs its change history also. You’re left with an opaque blob of data in your database.
As someone who works on a CRDT library with opaque state [1], I agree that this is a big barrier to adoption. Features like partial loading, per-paragraph permissions, and accept/reject suggestions seem pretty easy to implement if each text char is just a row in your server's DB, but I would have trouble implementing them on top of e.g. Yjs.
For text editing, one idea is to separate the CRDT "positions" from the text itself, which you can then store as a map (position -> char) in your own data structures. I've made a simple (but inefficient) library along these lines [2] and would be interested in ideas for further development.
[1] Collabs - https://collabs.readthedocs.io
[2] position-strings - https://www.npmjs.com/package/position-strings
- Collabs, a collections library for collaborative data structures
What are some alternatives?
othello - Operational transform library for Clojure + Clojurescript
rich-text - Format for representing rich text documents and changes
ot.js