Skip to content

Real-time collaboration #106

Description

@filipesmedeiros

Can we think about real-time collaboration? Maybe using yjs, automerge or Loro?

I can also work on this :)

Activity

  1. bpowers commented on Aug 24, 2025

    @bpowers
    Owner

    I'm probably several years out of date on this, but yjs seemed the most promising last I looked, or https://github.com/y-crdt/y-crdt (which is a rust implementation with binary compat/interop to yrs. I remember reading https://josephg.com/blog/crdts-go-brrr/ and not leaving impressed by automerge (again - possible things have changed in the past 3-4 years.

    the two big questions I have are:

    • does this live in JS/Typescript or the rust simulation engine -- it seems nice to have it live inside the engine, but probably easier and fine to have it by in Typescript
    • what does actually implementing this look/feel like? e.g. a bunch of the diagram and app use immutable data structures, which has been helpful in terms of avoiding problems mutating things by mistake. does yjs just replace all of these data structures? does this result in dozens of files changing, or is the complexity contained somewhere?
  2. filipesmedeiros commented on Aug 25, 2025

    @filipesmedeiros
    ContributorAuthor
    • I think it makes sense to have it on the JS side. It's the JS side that does the diagraming and that manages state, so I assume anywhere else would be more trouble than needed. But that's just my gut feeling, you never know!
    • I think that a lot might change, yes. Technically we only need to even worry about this for shared models, that you've shared with colleagues/friends. But of course that means that we probably need to right collab-ready code by default, which, like you said, I assume will replace the current data structures. Although https://github.com/joebobmiles/yjson tells me that it's non-trivial to share JSON-like state using yjs — it was meant mainly for natural language text, not arbitrary text, I believe. That's why Loro seems so nice (https://loro.dev/blog/loro-now-open-source): it was specifically meant to deal with JSON-like data, which means it's good for web apps. It's also written in Rust with WASM bindings :P
  3. bpowers commented on Aug 25, 2025

    @bpowers
    Owner

    I hadn't seen loro - it does seem to fit more closely with what we need (JSON-like structured data). I was also very interested in the "DeltaDB" talked about in https://zed.dev/blog/sequoia-backs-zed , but that doesn't exist yet AFAICT

  4. added
    backendInvolves the Google App Engine node app
    enhancementNew feature or request
    on Jun 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendInvolves the Google App Engine node appenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions