Serverless collaborative editor using CRDT
thegeez.net
thegeez.net
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...
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....
https://github.com/atom/xray#text-is-stored-in-a-copy-on-wri...
“Yeah, so?”
“That’s against the rules, isn’t it?”
“Screw the rules, I’ve got CRDT!”
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 :/
In the general case+ they can't.
+Defined as: not on the same LAN, not on the typical carrier/corporate network.
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.
Back in 2017, a couple fellow students and I created something very similar as our final project in the coding school we attended.
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