2 comments

  • dtkav 5 hours ago

    This is really cool. I'm excited to dive into the code later today.

    Im building something similar but have been working from the opposite direction.

    I started by making Obsidian real time collaborative (relay.md), and have been slowly heading in the direction of yjs backed filesystem (that supports the obsidian graph "protocol").

    IMO the obsidian editor is best-in-class, and the important thing is owning sync. I also wish it was open source, but I'm also impressed with their business model (100% user funded) so I'm happy to support them.

    I've found that many devs starting with the infrastructure tend to hand wave conflict UX with yjs. It can be useful to support LWW in certain scenarios like updating links across many files, or frontmatter updates.

    Automated find-and-replace is particularly bad in yjs/ytext because deletes are idempotent but inserts are not. race conditions trigger broken links. (I call this the "machine edits" problem, not sure if there is a better name).

    I think the other underexplored discussion for local first apps is how to build a business so that you can afford to work on it full time.

    • dtkav 4 hours ago

      It seems like you're using stable IDs for the links. Did you run into issues using the name like Obsidian does?