How Drawpile works(github.com)
github.com
How Drawpile works
https://github.com/drawpile/Drawpile/wiki/How-Drawpile-works
9 comments
> Drawpile solves the second problem in the most simple way possible: all edits go through a central server, which distributes them to all connected clients (including the originator) in the same order. So, when a client receives commands from the server, it knows all the other clients also received, or will receive, them in the same order.
You don't need CRDTs if you have a centralized server and require clients to be connected to make edits. CRDTs are useful when you want to enable collaboration in a decentralized way.
You don't need CRDTs if you have a centralized server and require clients to be connected to make edits. CRDTs are useful when you want to enable collaboration in a decentralized way.
So does this mean Figma is decentralized since they are also using CRDTs?
"You don't need X for centralised" does not imply "if you have X then you're decentralised".
Beyond that simple logic: https://www.figma.com/blog/how-figmas-multiplayer-technology...
> Figma isn't using true CRDTs though. CRDTs are designed for decentralized systems where there is no single central authority to decide what the final state should be. There is some unavoidable performance and memory overhead with doing this. Since Figma is centralized (our server is the central authority), we can simplify our system
Beyond that simple logic: https://www.figma.com/blog/how-figmas-multiplayer-technology...
> Figma isn't using true CRDTs though. CRDTs are designed for decentralized systems where there is no single central authority to decide what the final state should be. There is some unavoidable performance and memory overhead with doing this. Since Figma is centralized (our server is the central authority), we can simplify our system
Interesting, so this must mean that Figma must be using CRDTs wrong then, but it works for them anyway since they aren't using "true CRDTs".
Maybe CRDTs (or more precisely, their implementation of them) give them some other benefit beyond the disregarded ability to be decentralized. It doesn't necessarily mean they're using them incorrectly.
Would be really neat to put Drawpile on the Fluid Framework. You could easily map Drawpile's ordered operations into distributed data structures. I did a similar thing a few months ago with QuillJS's operations and it worked great!
The main advantage of that integration would be a ready made Azure service + future integration with Microsoft Office.
(I used to work on the Fluid Framework)
The main advantage of that integration would be a ready made Azure service + future integration with Microsoft Office.
(I used to work on the Fluid Framework)
Only one small past related thread:
Drawpile is a free software collaborative drawing program - https://news.ycombinator.com/item?id=17141368 - May 2018 (4 comments)
Drawpile is a free software collaborative drawing program - https://news.ycombinator.com/item?id=17141368 - May 2018 (4 comments)
[deleted]
Nevertheless, it is still refreshing to see a different way of doing things like collaborative drawing without them.
Curious to know of this design decision.