FEP-7628: Move actor
Summary
Migration of followers from one ActivityPub actor to another.
History
Move
activity is defined in Activity Vocabulary.
Mastodon started using Move
activity for migrating accounts in 2019. 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.
Streams implements Nomadic Identity mechanism, that makes identity independent from a server. Nomadic accounts are currently not supported by ActivityPub but are available via the Nomad protocol.
Requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119.
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:
alsoKnownAs
property of an actor object. This method is used by Mastodon.- FEP-c390 identity proofs. Actors are linked if they have identity proofs with the same
subject
property. - rel-me links. Actors are linked if their profile metadata contains verified rel-me links pointing to the same website.
Migration
Among actors associated with a persona, 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:
type
: the type of activity MUST beMove
.actor
: the actor performing the migration.object
: the old primary actor ID.target
: the new primary actor ID.
The activity is considered valid if object
and target
actors are linked.
Upon receiving valid Move
activity, all actors following object
MAY un-follow it by sending Undo(Follow)
activity and MUST either send Follow
activity to the target
or otherwise notify the user that their contact has moved.
This activity comes in two sub-types:
Move
sent by the old actor (push mode). In this case, the old server needs to be online.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 SHOULD have a reserve copy of the follower list.
Example (activity subtype 1, push mode):
{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "https://server1.example/activities/9b496346-fa69-40ac-bc4e-7ac06192abe1",
"type": "Move",
"actor": "https://server1.example/users/alice",
"object": "https://server1.example/users/alice",
"target": "https://server2.example/users/alice",
"to": "https://www.w3.org/ns/activitystreams#Public",
"cc": "https://server1.example/users/alice/followers"
}
Example (activity subtype 2, pull mode):
{
"@context": "https://www.w3.org/ns/activitystreams",
"id": "https://server2.example/activities/9b496346-fa69-40ac-bc4e-7ac06192abe1",
"type": "Move",
"actor": "https://server2.example/users/alice",
"object": "https://server1.example/users/alice",
"target": "https://server2.example/users/alice",
"to": "https://www.w3.org/ns/activitystreams#Public",
"cc": "https://server2.example/users/alice/followers"
}
movedTo
and copiedTo
properties
If previous primary actor is 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 previous primary actor is not deactivated, copiedTo
property MUST be used.
- movedTo
-
The location of the new primary actor. The actor containing this property should be considered inactive.
- URI:
https://w3id.org/fep/7628#movedTo
- URI:
- copiedTo
-
The location of the new primary actor.
- URI:
https://w3id.org/fep/7628#copiedTo
- URI:
参考文献
- Christine Lemmer Webber, Jessica Tallon, ActivityPub, 2018
- James M Snell, Evan Prodromou, Activity Vocabulary, 2017
- silverpill, FEP-c390: Identity Proofs, 2022
- indieweb.org editors, rel-me, 2013
著作権
CC0 1.0 ユニバーサル (CC0 1.0) パブリック ドメイン
法律で認められる範囲において、この Fediverse 拡張提案の著者は、この作品に対するすべての著作権および関連する権利または隣接する権利を放棄しています。