Jess's Lab Notebook

Extensible Software Project

Ink and Switch 2022 Summit Report

The Ink & Switch Summit 2022 report has some invaluable nuggets for interoperability and local-first software.

J Ryan Stinnett recalls: All of the sessions were quite interesting overall, but the one on software customisation had the most overlap with my own interests. One of the discussion threads there was around extension mechanisms. There are roughly two known paths to extension support today:

  1. Define some extension API and extensions can only make use of that pre-defined interface
  2. Expose the entire application to extensions

App vendors typically prefer defining an API (path 1) so they can retain control and reduce maintenance impact. Extension authors eventually desire more and more features, and full access to the app (path 2) does make it possible, but then it effectively causes the entire application to become an “API” boundary, requiring careful consideration of every app change, since it could impact extensions. (Web browsers have tried both of these paths over the years.)

I have a vague hope of finding some “middle road” that offers greater than typical power to extension authors while avoiding the maintenance nightmare for app vendors, perhaps relying on things like capabilities for security, auto API evolution (similar to Cambria), and other bits, but it’s still quite hazy for now.

J Ryan Stinnet runs the Malleable Systems Collective, a catalog of end-user-modifiable software systems. This is close to, but not quite, what we want to enable.

While advanced comment structures would require to be part of the document it, a simple model is just a separate CRDT document for every comment and use a start & end referencing identifiers in the original model. This also allows for “only comment” permissions.

Peritext Progress

Peritext has no production implementation

Peritext is currently implemented as an extension of a CRDT called Hypermerge. They intend to build it into Automerge. The Peritext algorithm is fairly straightforward and could probably be implemented on top of another CRDT.

Saguaro and Matrix-native Collaborative Docs

J Ryan Stinnet implemented a Peritext-like CRDT on top of the Matrix protocol. Lots to learn from his Peritext implementation called Saguaro.

Socket is a new framework announced at Local-first Conf

Socket is a runtime for building cross-platform apps that has basic offline-first capabilities? Worth looking into.

Craft aims to interoperate with other tools

Craft has an offline-first mode that stores all files locally

Craft enables an offline-first mode, which they discuss on this Metamuse podcast episode. However, it comes with some drawbacks:

  • You lose collaborative features.
  • You lose sync across platforms (no cloud syncing).
  • You lose the ability to publish quickly to the web.
  • Files are saved locally as json files, not the most human-readable format.
Extensible Software Project
Interactive graph
On this page
Extensible Software Project
Ink and Switch 2022 Summit Report
Peritext Progress
Peritext has no production implementation
Saguaro and Matrix-native Collaborative Docs
Socket is a new framework announced at Local-first Conf
Craft aims to interoperate with other tools
Craft has an offline-first mode that stores all files locally