Skip to content

y-crdt/y-octo

This branch is up to date with main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1e705e4 Β· Dec 25, 2024
Jan 27, 2024
Dec 25, 2024
Dec 25, 2024
Dec 25, 2024
Aug 30, 2023
Dec 25, 2024
Dec 25, 2024
Dec 25, 2024
Aug 20, 2023
Aug 18, 2023
Aug 20, 2023
Aug 20, 2023
Aug 21, 2023
Sep 19, 2023
Aug 20, 2023
Dec 25, 2024
Dec 25, 2024
Aug 18, 2023
Jul 26, 2024
Dec 25, 2024
Dec 25, 2024
Aug 20, 2023
Aug 21, 2023
Dec 25, 2024

Repository files navigation

Y-Octo

test docs crates codecov

Y-Octo is a high-performance CRDT implementation compatible with yjs.

Introduction

Y-Octo is a tiny, ultra-fast CRDT collaboration library built for all major platforms. Developers can use Y-Octo as the Single source of truth for their application state, naturally turning the application into a local-first collaborative app.

Y-Octo also has interoperability and binary compatibility with yjs. Developers can use yjs to develop local-first web applications and collaborate with Y-Octo in native apps alongside web apps.

Who are using

AFFiNE is using y-octo in production. There are Electron app and Node.js server using y-octo in production.

Mysc is using y-octo in the Rust server, and the iOS/Android client via the Swift/Kotlin bindings (Official bindings coming soon).

Features

  • βœ… Collaborative Text
    • βœ… Read and write styled Unicode compatible data.
    • 🚧 Add, modify and delete text styles.
    • 🚧 Embedded JS data types and collaborative types.
    • βœ… Collaborative types of thread-safe.
  • Collaborative Array
    • βœ… Add, modify, and delete basic JS data types.
    • βœ… Recursively add, modify, and delete collaborative types.
    • βœ… Collaborative types of thread-safe.
    • 🚧 Recursive event subscription
  • Collaborative Map
    • βœ… Add, modify, and delete basic JS data types.
    • βœ… Recursively add, modify, and delete collaborative types.
    • βœ… Collaborative types of thread-safe.
    • 🚧 Recursive event subscription
  • 🚧 Collaborative Xml (Fragment / Element)
  • βœ… Collaborative Doc Container
    • βœ… YATA CRDT state apply/diff compatible with yjs
    • βœ… State sync of thread-safe.
    • βœ… Store all collaborative types and JS data types
    • βœ… Update event subscription.
    • 🚧 Sub Document.
  • βœ… Yjs binary encoding
    • βœ… Awareness encoding.
    • βœ… Primitive type encoding.
    • βœ… Sync Protocol encoding.
    • βœ… Yjs update v1 encoding.
    • 🚧 Yjs update v2 encoding.

Testing & Linting

Put everything to the test! We've established various test suites, but we're continually striving to enhance our coverage:

  • Rust Tests
  • Node Tests
  • Smoke Tests
  • Eslint, Clippy

Related projects

  • OctoBase: The open-source embedded database based on Y-Octo.
  • yjs: Shared data types for building collaborative software in web.

Maintainers

Why not yrs

See Why we're not using yrs

License

Y-Octo are MIT licensed.