loom
loom copied to clipboard
Would it make sense to define a "wire protocol" to make it possible to interface with non-elixir datasets?
This would be super handy to use with syncing clients and the server. Do you think it makes sense to define a protocol? I know swarmjs has one.
Or do you think it's best to just let users define it?
+1 that
I'm not sure what that would look like. I've been thinking about this and the common use cases for client-side CRDT's and how to evaluate the security implications of merging values from users with different permissions. The only thing I can come up with is that clients that aren't trusted need to use ops-based CRDT's. Doing this in a state-based way seems a lot more difficult and prone to bugs. I'd only use this state-based stuff for maintaining trusted/server state and syncing servers.
When it comes to a javascript companion library that covers most use-cases (and defines a set of json datastructures), it's definitely on my to-do list. My day job should start slowing down soon, so this repo is about to get active again. I think once you have that, it should be possible to write stuff in other languages that obeys the basic json contract.
As far as a protocol goes, this stuff can be made fairly rigorous because actions are idempotent. A complicated protocol doesn't seem to be needed.
Just like defining and sticking to a protocol even if its simple can go a long way.
On Wed, Jun 17, 2015 at 5:03 PM, Alexander Songe [email protected] wrote:
I'm not sure what that would look like. I've been thinking about this and the common use cases for client-side CRDT's and how to evaluate the security implications of merging values from users with different permissions. The only thing I can come up with is that clients that aren't trusted need to use ops-based CRDT's. Doing this in a state-based way seems a lot more difficult and prone to bugs. I'd only use this state-based stuff for maintaining trusted/server state and syncing servers. When it comes to a javascript companion library that covers most use-cases (and defines a set of json datastructures), it's definitely on my to-do list. My day job should start slowing down soon, so this repo is about to get active again. I think once you have that, it should be possible to write stuff in other languages that obeys the basic json contract.
As far as a protocol goes, this stuff can be made fairly rigorous because actions are idempotent. A complicated protocol doesn't seem to be needed.
Reply to this email directly or view it on GitHub: https://github.com/asonge/loom/issues/1#issuecomment-112963626