Open brollb opened 3 years ago
Here is a relevant resource:
I think the simpler CRDTs would work well as NetsBlox implementations rather than a separate service since they're so simple.
A service (probably with a library/extension for the client) using something like https://github.com/automerge/automerge would probably be useful as well for demonstrating the use of CRDTs for lists/strings in more complex use cases.
Here's an example I made of the G-Counter: https://editor.netsblox.org/?action=present&Username=gstein&ProjectName=G-Counter&
It requires messaging while collaborating, but that's changeable.
Both approaches could be useful. Implemented as a service would make it easy to import and share (beginners could use them w/ minimal overhead. CRDTs could send update/set-state messages when their value changes.). However, it would be a black box which limits how much the students can "probe" into the concept/implementation. Implementing it in blocks would likely be a little more complicated but would be great for opening up and exploring the implementation.
I also like that they seem like they would be a natural addition to the cloud variables service and could facilitate a conversation on locks vs CRDTs, etc.
What if we had a service for synchronizing various data structures? We could support types like registers, counters, CRDTS, etc.
Maybe these should be added to CloudVariables? We could add categories to make sure these aren't overwhelming for beginners