# Y-CRDTs ## [y-protocols](https://github.com/yjs/y-protocols) Documentation repository with some information about the protocols ## [Yjs](https://github.com/yjs/yjs) https://docs.yjs.dev/ Yjs is a CRDT implementation that exposes its internal data structure as shared types. Shared types are common data types like Map or Array with superpowers: changes are automatically distributed to other peers and merged without merge conflicts. Yjs is network agnostic (p2p!), supports many existing rich text editors, offline editing, version snapshots, undo/redo and shared cursors. It scales well with an unlimited number of users and is well suited for even large documents. #### Providers * [y-webrtc](https://github.com/yjs/y-webrtc) * Uses the WebRTC technology to sync peers * [y-websocket](https://github.com/yjs/y-websocket) * Uses WebSockets to sync peers ## [y-sync](https://github.com/y-crdt/y-sync) Rust implementation of the yjs sync protocols. ## [Yrs](https://github.com/y-crdt/y-crdt) Rust implementation of Yjs. This repository also contains a wasm implementation and C headers. #### Providers * [yrs-warp](https://github.com/y-crdt/yrs-warp) * Web socket provider using Rust tokio's warp web server * I beliebe its a server provider not a client ## [Ypy](https://github.com/y-crdt/ypy) Python bindings for Yrs. This is the implementation we use in JupyterLab's backend. #### Providers * [ypy-websocket](https://github.com/y-crdt/ypy-websocket) * Uses WebSockets to sync peers ## Experiments that could be useful https://github.com/hbcarlos/rtc-exp ## Posible tasks 1- Update ypy to use yrs v0.15 2- Error when moving an element from yjs https://github.com/y-crdt/ypy/issues/93 Issue in ypy you should be aware of https://github.com/y-crdt/ypy/pull/104