- PR: #692 - WIP: FEP-1580: Move Actor Objects with a `migration` Collection - fediverse/fep - Codeberg.org
- Fedi thread: jonny (good kind): "Alright it's late and i need to go to bed, but he…" - neurospace.live
Hey everyone, i see there is a FEP category, but i’m not allowed to make a new post there.
Actual draft needs some work, editing and a few open topics have already been raised, but opening this now since the shape of it is there.
let’s make full-on migration a reality, posts and all baby
Prior FEPs (FEP-7628, FEP-E965) describe an ability for an Actor to move to a new
id, often hosted on a different server instance,
however they do not describe a mechanism for moving objects that belong[^belong] to that actor.This FEP describes a mechanism of migrating objects belonging to a moved Actor to the target instance using two
OrderedCollections created by the target instance:
- a
migrationcollection that contains a mapping from source object URIs to new URIs on the target instance, and- a
movescollection that contains the actorMoveactivities that prove a migration has taken place and allows verification of object signatures in the case the source Actor is no longer available.This FEP attempts to balance effectiveness, performance, security, and ease of implementation by allowing 3rd-party instances to gradually update their local copies of the affected Objects. “Push”-style migration where the source instance is still active and cooperative, “Pull”-style migration where the source instance is uncooperative or unavailable, and given appropriate proofs, migration from an exported collection of objects and activities are all described. The migration operation is agnostic to the type of the
Objects being migrated, supporting protocol evolution to unanticipatedObjecttypes across instances with varying support for them. Collection-based object migration is orthogonal to, and compatible with content-addressed or other portable object schemes (e.g. FEP-ef61).tl;dr: to migrate objects, create a mapping from the old to new objects on the target instance, and let 3rd-party instances gradually migrate their local representations using that map.
edit: shoutout to that moves collection design and how i’ve been totally bittorrent-brained for like 9 months and now think everything needs to have an infohash and be self-validating