Awesome
Y-Octo
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
<a href="https://affine.pro"><img src="./assets/affine.svg" /></a>
AFFiNE is using y-octo in production. There are Electron app and Node.js server using y-octo in production.
<a href="https://www.mysc.app/"><img src="https://www.mysc.app/images/logo_blk.webp" width="120px" /></a>
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
- Unit tests
- Loom multi-threading tests
- Miri undefined behavior tests
- Address Sanitizer memory error detections
- Fuzzing fuzzing 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
License
Y-Octo are MIT licensed.