yjs
realtime
Our great sponsors
yjs | realtime | |
---|---|---|
53 | 54 | |
14,747 | 6,418 | |
3.7% | 1.6% | |
8.4 | 9.0 | |
5 days ago | 2 days ago | |
JavaScript | Elixir | |
MIT | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
yjs
-
Making CRDTs 98% More Efficient
One idea is just to use fewer random bits in peerIDs. Yjs (https://docs.yjs.dev/) gets away with just 32 random bits. If you compromise and use 64 random bits, then even a very popular doc with 1 million lifetime peerIDs will have a < 10^-7 lifetime probability of collision.
-
An Interactive Intro to CRDTs
I've seen it come up often in collaborative text editors.
Also see: https://github.com/yjs/yjs
-
JSON Schema Store
You are absolutely right that XML is better for document structures.
My current theory is that Yjs [0] is the new JSON+XML. It gives you both JSON and XML types in one nested structure, all with conflict free merging via incremental updates.
Also, you note the issue with XML and overlapping inline markup. Yjs has an answer for that with its text type, you can apply attributes (for styling or anything else) via arbatary ranges. They can overlap.
Obviously I'm being a little hypabolic suggesting it will replace JSON, the beauty of JSON is is simplicity, but for many systems building on Yjs or similar CRDT based serialisation systems is the future.
-
Launch HN: Tiptap (YC S23) – Toolkit for developing collaborative editors
Note: https://github.com/yjs/yjs for collaborative "document edition, and user cursors"; has WebRTC, web socket, matrix.org backend
-
How to use Yjs with Ruby on Rails?
Yjs framework: Because it is a CRDT implementation which provides collaborative editing and offline-first capability.
-
🐑🐑🐑 EweserDB, the user-owned database 🐑🐑🐑
No problem. The database CRUD features are just helpers as an abstraction on top of yjs: https://docs.yjs.dev/. Eweser adds schemas in the form of typescript types to make using it simpler, more structured, and interoperability easier.
- Ask HN: What is new in Algorithms / Data Structures these days?
-
Show HN: Nostr-CRDT – real-time collaborative apps over Nostr
Hi HN!
Nostr-CRDT is an experimental project that connects Yjs [1] (a proven, high performance CRDT) with Nostr [2].
I wanted to learn about the Nostr protocol and see if it'd be possible to send updates to state (e.g.: edits of a rich text document, updates to a todo list) over Nostr.
Nostr describes itself as "The simplest open protocol that is able to create a censorship-resistant global "social" network once and for all.".
I like the idea of a decentralized social network, but what if we can decentralize more kinds of apps and create decentralized, local-first collaborative applications? I've been exploring this area for a while and earlier shared a Show HN post that does this over Matrix [3].
There's still lots to figure out, but imo it's a very exciting and rapidly developing space - looking fwd to your thoughts already!
[1] https://github.com/yjs/yjs
[2] https://github.com/nostr-protocol/
[3] https://news.ycombinator.com/item?id=29978659
PS: for an instant demo you can open this link and click the green button to load the doc and connect over Nostr (using a new anonymous account): https://nostr-crdt-yousefed.vercel.app/#room=6d749539e1dd9ef...
-
Hindsight is a free and open-source retrospective board
No back-end. Data is shared via WebRTC directly between connected browsers. I'm using Yjs to help me with that.
- Show HN: Hindsight is a free and open-source retrospective board
realtime
-
A Technical Dive into PostgreSQL's replication mechanisms
You can LISTEN/NOTIFY. Or you can use logical replication and a custom subscriber.[1] Supabase uses the latter.[2]
[1]: https://www.postgresql.org/docs/current/logical-replication....
-
Unpacking Elixir: Observability
We use :telemetry to collect usage data per tenant for Supabase Realtime.
We do this for rate limiting but it also makes it very easy for us to attach a listener (https://github.com/supabase/realtime/blob/main/lib/realtime/...) which ships these (per second) aggregates to BigQuery (via Logflare), which then the billing team can aggregate further to display and actually bill people with.
-
All the ways to capture changes in Postgres
Yo :D This is what Supabase Realtime does!
https://github.com/supabase/realtime
Spin up a Supabase database and then subscribe to changes with WebSockets.
You can play with it here once you have a db: https://realtime.supabase.com/inspector/new
-
Supabase Local Dev: migrations, branching, and observability
Every project is a Postgres database, wrapped in a suite of tools like Auth, Storage, Edge Functions, Realtime and Vectors, and encompassed by API middleware and logs.
-
Writing a chat application in Django 4.2 using async StreamingHttpResponse
Where can I learn more about this? I've been thinking of trying to integrate Supabase Realtime (https://github.com/supabase/realtime) into my Django app (without the rest of Supabase), but I'd also like to keep things even simpler if possible.
Also, what was the reason not to go with Gevent?
-
How to Listen to Database Changes Using Postgres Triggers in Elixir
I believe #2 was the main driver for the supabase team to build their real-time component: https://github.com/supabase/realtime
Background/announcement: https://supabase.com/blog/supabase-realtime-multiplayer-gene...
-
From Plex to Jellyfin Media Server
How does supabase not qualify as open source?
Their stack is primarily comprised of other independent open source projects. The one component that isn't is their "realtime" server that serves updates from postgres' WAL over websockets, but that is open sourced[0] under Apache 2.0. From my understanding the primary part that has not been open sourced is their database browser / web UI. There are plenty of alternative management tools for postgres though. As you can export your database what else would you need to ensure your portability and independence?
Granted they make their docs fairly opaque for trying to self host. Presumably to encourage you to just use their hosted service. Hosting open sourced projects seems like a very ecosystem friendly way of monetizing.
-
Supabase Subscriptions Just Got Easier
There is a few second delay when starting the subscriptions.
-
Finding Relationships Between Ruby’s Top Packages and Their Dependencies
Yes, some portion of their backend is Elixir/Phoenix: https://github.com/supabase/realtime
but most of their stack, frontend and backend, is Next.js, and not the Rails-type fullstack way: https://github.com/supabase/supabase
-
Streaming data in Postgres to 1M clients with GraphQL
They're all similar flavors of producing realtime results - which take similar, but different, methods to their approach.
My understanding (please feel free to correct me if I'm wrong):
- Supabase Realtime uses WAL.
- Hasura Streaming Subscriptions uses an append-only query (could also use WAL).
- Hasura Live Queries uses interval polling, refetching, and multiplexing.
- Supabase uses Postgres RLS for authorization, while Hasura uses an internal RLS system which composes queries (which allows for features like the multiplexing above).
- All 3 use websockets for their client communication.
Supabase Realtime
https://github.com/supabase/realtime#introduction
https://supabase.com/docs/guides/realtime
Hasura Subscriptions
https://github.com/hasura/graphql-engine/blob/master/archite...
https://github.com/hasura/graphql-engine/blob/master/archite...
What are some alternatives?
automerge - A JSON-like data structure (a CRDT) that can be modified concurrently by different users, and merged again automatically.
supabase - The open source Firebase alternative.
liveblocks - Liveblocks is a real-time collaboration infrastructure for developers.
debezium - Change data capture for a variety of databases. Please log issues at https://issues.redhat.com/browse/DBZ.
automerge-rs - Rust implementation of automerge [Moved to: https://github.com/automerge/automerge]
blockscout - Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
Appwrite - Build like a team of hundreds_
litestream - Streaming replication for SQLite.
crdt-woot - Implementation of collaborative editing algorithm CRDT WOOT.
Hasura - Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.
yugabyte-db - YugabyteDB - the cloud native distributed SQL database for mission-critical applications.
absurd-sql - sqlite3 in ur indexeddb (hopefully a better backend soon)