Hacker News new | past | comments | ask | show | jobs | submit login
Serverless collaborative editor using CRDT (thegeez.net)
146 points by yogthos on March 3, 2019 | hide | past | favorite | 24 comments




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 feel similarly.

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....



Another really cool project that makes use of CRDTs for collaborative editing is xray from the folks who worked on Atom:

https://github.com/atom/xray#text-is-stored-in-a-copy-on-wri...


“Wait, did you just connect a couple WebRTC browsers without a STUN server?”

“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?


> 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 :/



>Seriously, though, how do the two browsers find each other without a STUN server?

In the general case+ they can't.

+Defined as: not on the same LAN, not on the typical carrier/corporate network.


What if you're behind a firewall BTW? Would CRDT require forwarding ports?


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.


My question too.


Anyone remember OPENPEER?


Are there any good resources to read up on this?

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.


Here's another one using WOOT (Without operational transform), which I read is a predecessor of CRDT - https://hal.inria.fr/inria-00071240/document . It was fun implementing it. https://github.com/hmgeorge/woot


Anyone wondering why this is cool or what CRDTs are, I'm maintaining a list of Awesome CRDT (tm) resources:

https://github.com/alangibson/awesome-crdt


Awesome stuff! thanks :D


https://conclave-team.github.io/conclave-site/

Back in 2017, a couple fellow students and I created something very similar as our final project in the coding school we attended.


This article has led me to Shapiro & Preguiça (2007) https://arxiv.org/pdf/0710.1784.pdf

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....


I'm assuming there is no source for this?


If nothing else, you can "view source" on the page.


This is amazing


what is amazing about it?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: