Skip to content
A JS implementation of RGASS, a CRDT synchronization algorithm (real-time decentralized collaborative string editing)
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
src
test
.eslintrc Initial commit Apr 24, 2017
.gitignore Add battle test Apr 27, 2017
.gitlab-ci.yml
README.md Update README.md Nov 16, 2017
package.json

README.md

🚨⚠️ No longer in development, for similar use cases (and using the same basic approach) take a look at https://github.com/atom/teletype-crdt. It also passes the edge-case described in the TODO section. ⚠️🚨

Rgass.js

build status coverage report

A JS implementation of RGASS, a CRDT synchronization algorithm presented in research paper by Xiao Lv et al: http://dx.doi.org/10.1016/j.aei.2016.10.005.

Getting started

This module is still experimental, but it's easy to play with it already:

  1. Clone this repository and
  2. npm install, then
  3. npm start
  4. and open at least two browser windows pointing to localhost:3000.

Now you can test its collaborative text editing functionality. There is also a battletest (see below) that will automatically add and delete strings in two text areas concurrently and raise an error if there is a mismatch, as a way to fuzz test the algorithm.

To run tests

npm test

To run battletest

npm run battletest

TODO

  • Resolve issue with overlapping concurrent insertions and deletions, that the algorihtm described in the paper doesn't address (there is a currently failing test describing the above scenario).
  • Serialization of Model
  • Snapshotting (related to above)
  • More bulletproofing
You can’t perform that action at this time.