Xi editor seems so cool. I keep thinking I should try it sometime. And I didn’t even know it made use of CRDT. But every time I think to myself I should install it I just keep the tab open but don’t actually do it. Even though I use Vim and I write some Rust code myself, so you’d think I should check out Xi, and I think I should too but I just still haven’t. I’ve watched a lengthy talk from its author even, and I think that talk was nice too. Does what I am describing have a name?
I’m a heavy vim user myself, and while Xi intrigues me, I think the knowledge that I would lose my very personal vim configuration which is years in the making dissuades me.
This is probably an indication that I’ve gone a bit too far with my vimrc....
> Seriously, though, how do the two browsers find each other without a STUN server?
SDP offers and answers include local IPs, so if you relay them manually they can connect to each other if they're on the same local network.
Unfortunately, last time I checked, Firefox's answers time out before you have a chance to relay them through a second channel (about 5 secs after offer has been accepted IIRC) so you still need a relay server for real scenarios :/
You're talking about two quite different layers. CRDT deals with "how could we replicate complex data with multiple writers and achieve eventual consistency in a distributed system?" (Problem #1)
Forwarding ports and so in is dealing with "how can we get people's devices and computers to use the Internet like it was intended to be used, where nodes can make arbitrary connections to each other, even though that Internet was long ago broken by NAT and firewalling?" (Problem #2)
The two only appear together because if you were interested in solving Problem #2 then you probably also have Problem #1.
I don't really recognize the name. The only thing I remember related to something similar was some windows program which somehow made peer-to-peer connections possible, supposedly through starting out using an external server first, and then somehow continuing in peer-to-peer mode.
Never did find out how it worked. But since with any connection involving a public server and a PC behind a NAT the packets reach the PC from the NAT because the NAT kept state, so I theorized that this program set this state up in a way that two machines behind NATs could continue this conversation.
The whole idea that commutativity gives you a better-behaved transition to consistency reminds me of how the theory of patches gives DARCS/Pijul better handling of branches than Git. Cf. Mimram & Giusto (2013) https://arxiv.org/pdf/1311.3903.pdf
Congratulations on providing a serverless solution. How do you think CRDT would fare in a tree-structured data model? We went with OT and server architecture because it seemed more reliable. You can read more about our solution here https://ckeditor.com/blog/Lessons-learned-from-creating-a-ri....
Atom: https://blog.atom.io/2017/11/15/code-together-in-real-time-w...
Xi: https://github.com/xi-editor/xi-editor/blob/master/docs/docs...