Joseph,

Very good commentary!  I have drafted up some ideas on a hybrid system.
Actually I have seen two approaches.  One uses a natively P2P protocol,
which then elects super nodes to act as "servers" in highly connected
clusters.  At the other end of the extreme I have seen client server OT
use a P2P OT between federating servers.  Both of these systems have pros
and cons.  I do think that this has some benefit over pure P2P and pure
client server architectures.

~Michael

On 6/11/13 6:44 PM, "Joseph Gentle" <jose...@gmail.com> wrote:

>The biggest benefit to a P2P-capable system is federation. Currently,
>the wave federation algorithms create a distributed tree of servers,
>and they're vulnerable to netsplits if one of the root servers goes
>offline. Maintaining that tree is complex and unnecessary - there are
>better algorithms we can use instead.
>
>I imagine most devices will (most of the time) still connect to a
>single server. But if our OT system can manage P2P anyway and our
>system supports OT over arbitrary JSON blobs, there's a few really
>neat things we can do with that.
>
>So, this is something I've been wanting for ages - Imagine you're
>working on a software project. You put all the source code inside a
>JSON wave object and you edit it there. Because its a shared OT
>document, your compiler can join in on the document and annotate your
>code (live) with syntax highlighting, errors and autocomplete
>suggestions. It would know at a very granular level which functions
>need to be recompiled as you edit. Your unit tests could rerun
>themselves automatically and mark in your source code which tests
>failed and where. Its like a lego set for IDEs - your editor doesn't
>have to understand your programming language, your compiler doesn't
>have to know what editor you're using and where, and all the pieces
>can be on whatever computers are most convenient for you. And of
>course, you can pair program for free.
>
>You could build stuff like that on top of ShareJS today, but it would
>require a centralized server - and you have to put that somewhere. If
>the server is on your local machine, you can't upload the edits you're
>making to another OT server (like your private wave server). If its a
>remote server, you'll get terrible latency between making a change in
>your editor and your compiler finding out about it. With a system that
>supports P2P OT, we can make servers connect any way we want and It'll
>all just work.
>
>-J
>
>On Mon, Jun 10, 2013 at 1:38 PM, Dave <w...@glark.co.uk> wrote:
>> [John B - I wasn't sure where else it would be appropriate to ask this
>> question, but please forward on anywhere you think it appropriate]
>>
>> There are many things about Wave and WIAB that I would like to see
>>improved
>> / changed, but based on my readings I've been content with the TP1 OT
>> approach chosen by google (not that I'm even close to an expert) - even
>>if
>> the WIAB implementation would benefit from some love.
>>
>> But one of the things mentioned in the recent wave-forward hangout was
>>the
>> weakness in Wave's OT implementation for a required canonical version
>>of a
>> given wave (providing absolute ordering of changesets). Specifically,
>>this
>> effectively prevents 3 party P2P messaging where there isn't guaranteed
>>to
>> be that one canonical ordering. My understanding is that Joseph is
>>playing
>> with some alternative OT algorithms that are TP2, and therefore don't
>> require arbitration of changeset order. This was specifically called
>>out as
>> an advantage to support P2P messaging and running the full stack on a
>>phone.
>>
>> That got me thinking - why would you want to do that?  What are the
>>benefits
>> of P2P messaging, and are there other reasons to need TP2?
>>
>> Most of the messaging and collaboration systems I could think of are
>> client-server (some with federated servers) and Wave/WIAB support this
>>with
>> TP1.  Most networked phone apps that I'm aware of are also
>>client/server,
>> and at first glance this seems a good thing - it makes addressing
>>easier and
>> avoids issues with intermittent connectivity. The ability to have a
>>simple
>> "wavelike" server (and detached clients)
>>
>> I suspect I'm missing something, and I wondered if I'm alone?
>>
>> My understanding is that technical interop between the various wave-like
>> communities will need us to use the same OT alogrithm (eventually), so
>> clarity on the pros/cons of keeping or changing the wave OT approach
>>would
>> be a good first step in that direction!
>>
>> Dave


Reply via email to