The Last Mile of Local-First

  • Hi I'm Jess Martin
    • Future of computing - app interoperability
    • Local-first software can enable this
      • a few problems yet to solve...
  • A Local-first Scorecard → Just completed this landscape so I have a good sense of the progress
    • Six years the article... we have solved many tech challenges
    • Let's take a look at our progress on the Scorecard:
      • No spinners: ✓
        • Software has gotten faster!
      • Multi-device is common: ✓
        • Sync engines are amazing
      • Network optional: -
        • Still a lot of work to do to make P2P fully reliable and easy, but it's getting better
      • Seamless collaboration: ✓
        • Lots of hard work on CRDTs and other methods of reconciliation
      • Security and privacy by default: -
        • Some good talks on this!
      • You retain ownership & control: ?
      • The Long Now: ?
    • one solution to the User-owned data and Long Now: file formats
      • How might we solve these things with file formats?
  • The last five years of advances have largely been solved by frameworks and libraries and a few intrepid software companies
    • Pioneering, hard work!
    • Here's an architecture diagram of what this looks like today:
      • Pasted image 20250520064052.png
  • The "Last Mile" of local-first will have to be solved by application developers.
    • <show image of telephone lines, tell story of the internet>
    • We are getting the data all the way to the device, but not able to access it
    • But just because data is on the device doesn't mean users can access it
    • Especially if the data stays trapped in proprietary formats

Challenge for local-first app developers: levels of support

  • This talk will be a challenge to app developers. I'm going to provide a set of levels to grade yourself on the support you provide to your users.

LEVEL 1: Export to flat file formats

  • Just choose open formats
    • markdown, CSV, etc → your app domain
      • So many available - and you don't have to choose just one!
  • Sometimes, you have to invent one...
    • Obsidian is well known for file > app
      • Introduced a canvas feature - there's no file format
        • JSON Canvas
    • At the time, Orion Reed and I were doing canvas work
      • DXOS - TLDraw - Doing export to file work, interop, etc
    • Tried JSON Canvas - found it was too limiting to express the TLDraw, and other, infinite canvases
      • Local-first Conf last year we wrote the version of a new spec & minimal implementation to handle many canvases
      • Will come back to that story...

LEVEL 2: Continuous export

  • Think of this as a continuous projection of the app's data to an external source
    • Every write in the app causes a re-render of the projection
    • Doesn't handle reads - just overwrites
  • We already mentioned Obsidian
    • Kanban.md demo
      • Pasted image 20250520064502.png
  • Doesn't have to be files!
    • Linear → Google Sheets DEMO
      • Build charts, run calculations, etc

LEVEL 3: Bi-directional sync

  • Much harder!
  • Obsidian implements this via the file system
    • Kanban.md can write, too!
      • So satisfying to drag a card over!
        • Pasted image 20250520064408.png
  • But now we are back in the land of open research problems
    • Substrate matters...
      • File system? CLI agent? Desktop app?
    • Particularly challenging for real-time collaboration, as changes aren't automatically available as "diffs" or "patches"
      • And merging of offline edits
  • But amazing things are possible if you do the work...
    • Show a Obsidian Canvas ⟷ TLDraw demo powered by OCIF
      • Collaborate across applications!
  • What is powering this?
    Pasted image 20250520063538.png
  • So, resuming my story... we kept working on the infinite canvas file format...
  • The Open Canvas Working Group met 25 times over the past year
    • Git issues
    • Input from 15 canvases
    • Spec versions
    • 3 implementations
    • New collaborators
  • Happy to announce today the OCIF 1.0 Candidate Recommendation
    • We are following the W3C process
      • Candidate Recommendation means:
        • We feel the spec captures the majority of cases and is relatively complete and stable
        • And now it's ready to be implemented
          • Two app that have implemented already and we have a handful of demos
        • But the spec will still change as we seek to incorporate feedback from implementers
    • Feel really good about the spec
    • If you are working on a canvas, consider implementing import/export
      • You can implement in our "tools" package which will give users access
        • Through the CLI tool
        • And through the exporter website

LEVEL 4: An added benefit/perk (?) AI understands open formats

  • A few quick demos of AI working with OCIF
    • AI explaining a canvas
    • AI writing a canvas based on a prompt, etc...
    • Use the local TLDraw instance & the OCIF file watcher...

To wrap up...

  • App developers will have take us the last mile..
  • Reiterate Last mile story - show the phone lines again
  • Show score card again
  • Encourage us to give users control and solve for the Long Now!
The Last Mile of Local-first
Interactive graph
On this page
The Last Mile of Local-First
Challenge for local-first app developers: levels of support
LEVEL 1: Export to flat file formats
LEVEL 2: Continuous export
LEVEL 3: Bi-directional sync
LEVEL 4: An added benefit/perk (?) AI understands open formats
To wrap up...