[IPython-dev] Live sync as a service

William Stein wstein at gmail.com
Wed Apr 30 14:17:31 EDT 2014

On Wed, Apr 30, 2014 at 10:45 AM, Brian Granger <ellisonbg at gmail.com> wrote:
> Great find. I do think we will have to use OT for live sync and I am
> not looking forward to implementing it....

Why do you have to, given that I didn't implement OT for IPython sync
for SageMathCloud?

The requirement for the differential transforms approach is that you
have a way to compute diffs and apply patches, subject to some axioms.
 That's pretty much it.

Anyway, using differential transforms is more or less like using git
(with commits every second of activity), so conceptually it feels
familiar.  The difference is that instead of getting merge conflicts,
the patch application algorithm is by definition "best effort" -- you
apply as much of the patch as you can, and that's it. Things then
converge quickly.

When I looked at


earlier today I noticed it makes the possibly dubious claim that "OT
is the technology behind awesome products like Google Docs and
Etherpad".   When I was researching sync approaches last year, I came
to the conclusion that Etherpad (which is open source now, I think)
uses OT, but that Google Docs does not.  More precisely, Google Docs
and Google Wave *did* use the OT approach, but then Docs was switched
to differential sync (Docs was some non-Google product that Google
bought and rewrote over many years...).     That said, I wasn't able
to be 100% sure, since I didn't confirm this with anybody working on
Docs at Google, except that the main person (Neil Fraser) behind
Differential Sync works at Google.

I'm planning to do more work on simplifying/rewriting/streamlining my
sync code in the next few days, which will make fixing some bugs
easier, and also make it easier to make an open source single-project
version of SMC (which will still have IPython in it, of course).

 -- William

> Brian
> On Wed, Apr 30, 2014 at 10:32 AM, Thomas Kluyver <takowl at gmail.com> wrote:
>> I just saw that this company is offering live sync as part of their
>> platform, using operational transforms, which from what William Stein told
>> us is the harder but more powerful approach to the problem:
>> https://goinstant.com/blog/build-your-own-google-docs-with-goinstants-new-ot-api
>> I doubt that we want our live sync to rely on a third party service, but it
>> might be worth looking at their APIs for ideas.
>> Thomas
>> _______________________________________________
>> IPython-dev mailing list
>> IPython-dev at scipy.org
>> http://mail.scipy.org/mailman/listinfo/ipython-dev
> --
> Brian E. Granger
> Cal Poly State University, San Luis Obispo
> bgranger at calpoly.edu and ellisonbg at gmail.com
> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev

William Stein
Professor of Mathematics
University of Washington

More information about the IPython-dev mailing list