+1 for hybrid.
On Tue, Jun 11, 2013 at 11:43 PM, Pratik Paranjape < pratikparanj...@gmail.com> wrote: > Joseph. > May be I am not getting it fully, I don't see how latency problem will be > resolved in the P2P architecture you mentioned. The editor and the compiler > are still remotely connected. Even if compiler has access to it's own OT > system which builds the source files for it on every new delta, deitas will > have to travel from editor node to compiler node. Assuming compile lies on > server in a server-client system, and both editor and compiler have access > to OT, its effectively the same process, server acting as remote node. On > the other hand, editor, compiler, test-runners can still participate as > agents, irrespective of the node they are at, possibly acting as clients, > and do their respective jobs. P2P or not. > > At max, the P2P federation gives flexibility of having different blocks on > different nodes. But then, the more you distribute, the more you face the > overheads of OT processing for each block. Not saying it will be huge, but > a change from client-server for sure. > > Am I missing something? I have been working on a similar system, not > specifically OT, but given replication as a necessity, I had to conclude > client-server system has most practical advantages, including more control. > > > On Tue, Jun 11, 2013 at 11:18 PM, Michael MacFadden < > michael.macfad...@gmail.com> wrote: > >> 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 >> >> >> >