Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suggest conducting research on Loro and the operating principles of Loro's DiffCalculator. #966

Open
JOOHOJANG opened this issue Aug 16, 2024 · 0 comments
Labels
enhancement 🌟 New feature or request hard 🧑‍🔬 Difficult to deal with or require research

Comments

@JOOHOJANG
Copy link
Contributor

Description: Suggest conducting research on Loro and the operating principles of Loro's DiffCalculator.

Why:
Loro is currently one of the leading CRDT libraries.

It is implemented using the REG idea. For more details, refer to the link below.
https://loro.dev/docs/advanced/replayable_event_graph
https://loro.dev/docs/advanced/version_deep_dive
https://loro.dev/blog/loro-richtext
https://codepair.yorkie.dev/jooho/6693b8536137c62378879e57/share?token=4h1ma (summarization of loro (in korean))

The benefits of applying REG include:

  1. Removing tombstones to free up memory
  2. Eliminating coordinate systems like CRDTXXXPos in Yorkie
  3. Fast time travel

Anyway, the point I want to make is:

Loro uses an Oplog to record changes and versions, and updates are done by calculating the difference between two versions and applying it to the state. DiffCalculator is responsible for calculating the difference between two versions. The logic is complex and difficult to understand, but if we can analyze it properly, it might help us determine whether we can apply the REG idea to Yorkie.

@JOOHOJANG JOOHOJANG added enhancement 🌟 New feature or request hard 🧑‍🔬 Difficult to deal with or require research labels Aug 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement 🌟 New feature or request hard 🧑‍🔬 Difficult to deal with or require research
Projects
Status: Backlog
Development

No branches or pull requests

1 participant