diff --git a/fep/7628/context.jsonld b/fep/7628/context.jsonld deleted file mode 100644 index 1e48706..0000000 --- a/fep/7628/context.jsonld +++ /dev/null @@ -1,12 +0,0 @@ -{ - "@context": { - "movedTo": { - "@id": "https://w3id.org/fep/7628#movedTo", - "@type": "@id" - }, - "copiedTo": { - "@id": "https://w3id.org/fep/7628#copiedTo", - "@type": "@id" - } - } -} diff --git a/fep/7628/fep-7628.md b/fep/7628/fep-7628.md index 71a0e81..a03c35f 100644 --- a/fep/7628/fep-7628.md +++ b/fep/7628/fep-7628.md @@ -17,7 +17,7 @@ Migration of followers from one [ActivityPub][ActivityPub] actor to another. `Move` activity is defined in [Activity Vocabulary](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-move). -Mastodon started using [`Move`](https://docs.joinmastodon.org/spec/activitypub/#Move) activity for migrating accounts [in 2019](https://github.com/mastodon/mastodon/pull/11846). The activity is sent by the old server to actor's followers and actors who receive this activity un-follow the old account and follow the new account. +Mastodon started using [`Move`](https://docs.joinmastodon.org/spec/activitypub/#Move) activity for migrating accounts [in 2019](https://github.com/mastodon/mastodon/pull/11846). The old account sends this activity to its followers. Actors who receive the activity un-follow the old account and follow the new one. ## Requirements @@ -25,7 +25,7 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S ## Linked actors -One persona can be represented by one or more actors. Different actors are considered associated with one persona if and only if they are **linked**. Possible ways to link actors: +One subject can be represented by one or more actors. Different actors are considered associated with one subject if and only if they are **linked**. Possible ways to link actors: - `alsoKnownAs` property of an actor object. This method is the most popular, it is used by [Mastodon](https://docs.joinmastodon.org/user/moving/#aliases) and many other ActivityPub servers. - [FEP-c390][FEP-c390] identity proofs. Actors are linked if they have identity proofs with the same `subject` property. @@ -33,12 +33,13 @@ One persona can be represented by one or more actors. Different actors are consi ## Migration -Among actors associated with a persona, there MUST be one **primary** actor. **Migration** of an account means the change of a primary actor. +Among actors associated with a subject, there MUST be one **primary** actor. **Migration** of an account means the change of a primary actor. ## Move activity `Move` activity is used to notify other actors about the migration. It MUST have the following properties: +- `id`: the unique identifier of an activity. - `type`: the type of activity MUST be `Move`. - `actor`: the actor performing the migration. - `object`: the old primary actor ID. @@ -50,8 +51,8 @@ Upon receiving valid `Move` activity, all actors following `object` MAY un-follo This activity comes in two sub-types: -1. `Move` sent by the old actor (**push mode**). In this case, the old server needs to be online. -2. `Move` sent by the new actor (**pull mode**). In this case, the old server doesn't need to be online, but the person using the actor needs to have a reserve copy of the follower list. +1. `Move` sent by the old actor (**push mode**). In this case, the old server needs to be online. The activity MUST be addressed to the followers of the old actor. +2. `Move` sent by the new actor (**pull mode**). In this case, the old server doesn't need to be online, but the person using the actor needs to have a reserve copy of the follower list. The activity MUST be addressed to the followers of the new actor. Example (activity subtype 1, push mode): @@ -85,9 +86,9 @@ Example (activity subtype 2, pull mode): ## `movedTo` and `copiedTo` properties -If previous primary actor was deactivated after migration, it MUST have `movedTo` property containing the ID of the new primary actor. Publishers SHOULD NOT deliver activities to actor's inbox if `movedTo` property is present. +If the old primary actor was deactivated after migration, it MUST have a `movedTo` property containing the ID of the new primary actor. Publishers SHOULD NOT deliver activities to actor's inbox if `movedTo` property is present. -If previous primary actor is not deactivated, `copiedTo` property MUST be used. +If the old primary actor is not deactivated, the `copiedTo` property MUST be used. After adding the `movedTo` or `copiedTo` property, the actor SHOULD notify its followers about the change by publishing an `Update` activity. @@ -108,6 +109,13 @@ After adding the `movedTo` or `copiedTo` property, the actor SHOULD notify its f +## Future work + +The `Move` activity described in this document migrates followers, but not other user data. To address this shortcoming, other mechanisms have been proposed: + +- [FEP-ef61: Portable Objects](https://codeberg.org/fediverse/fep/src/branch/main/fep/ef61/fep-ef61.md) +- [FEP-1580: Move Actor Objects with a migration Collection](https://codeberg.org/fediverse/fep/src/branch/main/fep/1580/fep-1580.md) + ## References - Christine Lemmer-Webber, Jessica Tallon, Erin Shepherd, Amy Guy, Evan Prodromou, [ActivityPub], 2018 @@ -118,7 +126,7 @@ After adding the `movedTo` or `copiedTo` property, the actor SHOULD notify its f [ActivityPub]: https://www.w3.org/TR/activitypub/ [ActivityVocabulary]: https://www.w3.org/TR/activitystreams-vocabulary/ -[RFC-2119]: https://tools.ietf.org/html/rfc2119.html +[RFC-2119]: https://datatracker.ietf.org/doc/html/rfc2119.html [FEP-c390]: https://codeberg.org/fediverse/fep/src/branch/main/fep/c390/fep-c390.md [rel-me]: https://indieweb.org/rel-me