Giter Site home page Giter Site logo

operational-transformation-example's Introduction

Operational Transformation Example

This is an implementation of a real time collaborative document editor which uses my Operational Transformation library.

Works with Node 0.4.X.

Installing and Running

$ git clone https://github.com/fitzgen/operational-transformation-example.git
$ cd operational-transformation-example/
$ ./util/setup.sh
$ cd src/
$ node r.js server.js
25 Apr 21:56:13 - Your node instance does not have root privileges. This means that the flash XML policy file will be served inline instead of on port 843. This will slow down initial connections slightly.
25 Apr 21:56:13 - socket.io ready - accepting connections
Listening on port 8080

Now just open a couple tabs in your browser and point them to http://127.0.0.1:8080/ and you can create and collaboratively edit a plain text document between the tabs. (At the time of this writing, April 25th 2011, you have to use firebug or some other web inspector to find out what the document ID is so that your second tab can join the first's session).

Utility Scripts

  • ./util/setup.sh

    Run this to set up a fresh dev environment after you have cloned this repository. Pulls down dependencies, runs the RequireJS converter script on third party modules, etc.

  • ./util/clean.sh

    Reset the environment as if it were a fresh clone of the repo. Will need to call ./util/setup.sh once more to start developing again.

  • ./util/build.sh

    Will eventually create optimized builds of the client javascript. I haven't gotten around to this yet though; it has been a low priority.

operational-transformation-example's People

Contributors

csnover avatar fitzgen avatar rapoell avatar rmurphey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

operational-transformation-example's Issues

The server doesnot respond anything

Hi,
I have followed all the steps to up the server and the server is up at port :1234. But I tried to point to port 1234, it returns no data. The browser tab keeps on loading.

Undo algorithm

@fitzgen
Undo should support IP2(operation transform an do-undo pair should be the same) and IP3(a and b are concurrent operation, a- is inverse operation of a, then a-' should be equal to a'-).
Suppose two users deletes the same character b from 'abc', then undo their operations. If IP3 is not satisfied, the result should be 'abbc'. In pure text system, it's tolerable. But in some complicate system like spreadsheet collaborative editing system, it may cause serious problem.
I search for ot control algorithm to support IP2 and IP3. They ether need ET function(hard to implement), or is too hard to implement, Context based control algorithm is the only algorithm only need IT function to satisfy IP2 and IP3 I know, and it saves all original operation and their context vector, and rerun all transformations if needed(I think this replaced ET function).
Does someone know good control algorithm too resolve IP2 and IP3 problem?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.