03 · Dynamic history

On Patchwork we’re exploring dynamic history: auto-saving every change to a document, and flexibly querying that granular history.

Our first prototype, here shown querying dynamic history views of this post.

We seek to combine the best aspects of two paradigms:

  1. Mobile and web apps typically autosave every change.
  2. Traditional desktop apps require the user to manually save and name files. Similarly, developer version control tools require explicit commits with a commit message.

Auto-saving requires less effort by users, supports live collaboration, and avoids accidentally losing work. But manual savepoints are useful for indicating milestones, which helps with collaboration and understanding history.

Dynamic history is thus:

Different groupings of the same underlying changes.

In using this first prototype to work on real documents, we’ve found that it’s useful to have multiple ways of querying history. For example, zooming out to see a big batch of edits from many authors over the course of a few days, or zooming in to see very small edits from a single author.

In practice, though, it seems most cases can be supported by a small set of groupings, such as by author and edit time. So we plan to build default user-facing views based on these groupings, while still preserving the ability to query more flexibly in rarer situations.

One more thing: in many tech stacks, supporting dynamic history might take a lot of engineering effort. But we’re building on top of Automerge, which already tracks the full change history. In an upcoming post, we’ll share more about why Automerge gives us a strong foundation for user-facing version control.

Next entry: 04 · Diff visualizations


Sign up to the Ink & Switch Dispatch

Occasional stories from Ink & Switch about our work, publications, talks, and the people at the lab. Browse the archive.