loom icon indicating copy to clipboard operation
loom copied to clipboard

Would it make sense to define a "wire protocol" to make it possible to interface with non-elixir datasets?

Open jeregrine opened this issue 9 years ago • 3 comments

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?

jeregrine avatar Jun 17 '15 20:06 jeregrine

+1 that

edescourtis avatar Jun 17 '15 20:06 edescourtis

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.

asonge avatar Jun 17 '15 22:06 asonge

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

jeregrine avatar Jun 17 '15 22:06 jeregrine