
Serverless collaborative editor using CRDT - yogthos
https://thegeez.net/2019/03/03/serverless_collab.html
======
cakoose
Projects doing similar things:

Atom: [https://blog.atom.io/2017/11/15/code-together-in-real-
time-w...](https://blog.atom.io/2017/11/15/code-together-in-real-time-with-
teletype-for-atom.html)

Xi: [https://github.com/xi-editor/xi-
editor/blob/master/docs/docs...](https://github.com/xi-editor/xi-
editor/blob/master/docs/docs/crdt-details.md)

~~~
codetrotter
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?

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

~~~
chalst
[https://github.com/xi-editor/xi-editor/issues/93](https://github.com/xi-
editor/xi-editor/issues/93)

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

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

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

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

------
alangibson
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](https://github.com/alangibson/awesome-crdt)

~~~
HugoDaniel
Awesome stuff! thanks :D

------
nsavant
[https://conclave-team.github.io/conclave-site/](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.

------
chalst
This article has led me to Shapiro & Preguiça (2007)
[https://arxiv.org/pdf/0710.1784.pdf](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](https://arxiv.org/pdf/1311.3903.pdf)

------
scofalik
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...](https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-
editor-with-real-time-collaboration/).

------
cetra3
I'm assuming there is no source for this?

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

------
bigmanwalter
This is amazing

~~~
appsonify
what is amazing about it?

