Thanks Joseph,

Really helpful.

On 11/06/13 18:44, Joseph Gentle wrote:
The biggest benefit to a P2P-capable system is federation.
Although federation can be achieved (aka wave & wiab's current impl) without p2p capable OT. So is the contention more that federation is simpler with P2P OT?
the wave federation algorithms create a distributed tree of servers,
and they're vulnerable to netsplits if one of the root servers goes
offline.
I've not seen reference to this tree before. Could you clarify for me? My understanding was that each Wave is hosted at a single server, and any updates to that wave come to that single server from the contributing server.

I was under the impression that actual netsplits were impossible in the wave algorithms and implementation, because no changes are acknowledged while that host is offline. I.e. if that host is offline, that wave is marooned until the host returns. Is this issue more that the current implementations don't distinguish whether the HOST server is online/offline? Or did you mean some thing different by netsplit?

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.

All of this would be really cool - but (and apologies for being dumb here) can you not achieve all of this with Wave's original OT algorithm?

Sorry - I'm trying to understand if there's a single issue here, or two unrelated goals.

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.

"All just work" sounds a bit "trust in the magic" to me ;-) I mean the latency is down to the physical links, rather than the OT algorithm used. So the above problems are more associated with where the compiler lives rather than whether we use P2P OT? I.e. The host server being in the cloud wouldn't dictate that compiler / syntax checking must also be in the cloud.

I think you're suggesting that the compiler, syntax highlighting etc. are all independent and all speak OT & federate directly? But they could equally plug into an OT capable client or server in a live-update aware manner? I guess this isn't how you envisage these components talking to each other - but it seems valid and perhaps even simpler?


Thanks again - I'm finding this really helpful to understand the different perspectives across our communities. Hopefully this can help draw us all closer!

Dave


Reply via email to