Changeset a5515b4 in Klonkt for FEDERATION.md
- Timestamp:
- 08/14/2026 06:38:03 AM (4 weeks ago)
- Branches:
- main
- Children:
- 749605a, eac3229
- Parents:
- bfadc15
- git-author:
- Robin <roboburr@…> (08/14/2026 06:36:41 AM)
- git-committer:
- roboburr <roboburr@…> (08/14/2026 06:38:03 AM)
- File:
-
- 1 edited
-
FEDERATION.md (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
FEDERATION.md
rbfadc15 ra5515b4 22 22 - [FEP-67ff: FEDERATION.md](https://codeberg.org/fediverse/fep/src/branch/main/fep/67ff/fep-67ff.md) (FINAL): this file. 23 23 - [FEP-f1d5: NodeInfo in Fediverse Software](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md) (FINAL): `/.well-known/nodeinfo` links to a NodeInfo 2.1 document advertising software, version and the `activitypub` protocol. 24 - [FEP-e232: Object Links](https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md) (FINAL): `Link` tags with `mediaType` `application/ld+json; profile="https://www.w3.org/ns/activitystreams"` for object references inside content. 25 - [FEP-044f: Consent-respecting quote posts](https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md) (DRAFT): a quoted fediverse object carries real quote semantics — the `quote` property plus an FEP-e232 `Link` tag — and renders as a quote card rather than a bare link. 26 - [FEP-9098: Custom emojis](https://codeberg.org/fediverse/fep/src/branch/main/fep/9098/fep-9098.md) (DRAFT): `:shortcode:` emoji tags on content and display names, preserved on the wire so connected apps can render them. 27 - [FEP-c648: Blocked Collection](https://codeberg.org/fediverse/fep/src/branch/main/fep/c648/fep-c648.md) (DRAFT): inbound `Block` and `Undo(Block)` are honoured. 28 - [FEP-7628: Move actor](https://codeberg.org/fediverse/fep/src/branch/main/fep/7628/fep-7628.md) (DRAFT): account migration — `alsoKnownAs`, `movedTo` and the `Move` activity, sent and received. See "Account migration". 29 - [FEP-1580: Move Actor Objects with a `migration` Collection](https://codeberg.org/fediverse/fep/src/branch/main/fep/1580/fep-1580.md) (DRAFT): the objects a `Move` leaves behind, exposed as a `migration` collection alongside `moves`. 30 - [FEP-888d: Using `https://w3id.org/fep` as a base for FEP-specific namespaces](https://codeberg.org/fediverse/fep/src/branch/main/fep/888d/fep-888d.md) (DRAFT): the FEP-1580 terms are declared under `https://w3id.org/fep/1580/`, as that FEP registers them. 31 32 Two further proposals are our own and are not (yet) part of the FEP index: 33 34 - **FEP-633c: Guardians** — guardian-gated actors: wards, gated follows and 35 replies, the call-in flow, and a multi-party handshake. Implemented here and 36 submitted upstream as pull request 37 [#889](https://codeberg.org/fediverse/fep/pulls/889); the vocabulary is served 38 at [`https://ns.klonkt.com/shaer`](https://ns.klonkt.com/shaer). 39 - **FEP-9876: enriched actor references** — collection members are bare URIs by 40 default and embedded objects on request, opt-in through 41 `Prefer: return=representation` ([RFC 7240](https://www.rfc-editor.org/rfc/rfc7240)). 42 Implemented; not yet submitted. 24 43 25 44 Beyond these, Klonkt aims for de-facto Mastodon compatibility (the … … 45 64 `Create`, `Update`, `Delete` (as `Tombstone`), `Follow`, `Accept`, `Like`, 46 65 `Announce`, `Undo` (of `Follow` / `Like` / `Announce`), `Add` / `Remove` 47 (featured-pin sync), and `Flag` (moderation reports). Posts, replies, boosts, 66 (featured-pin sync), `Flag` (moderation reports), `Move` (account migration), 67 and `Offer` (the FEP-633c guardianship handshake). Posts, replies, boosts, 48 68 likes and follows are delivered to remote inboxes with a signed HTTP request and 49 69 a retrying delivery queue. … … 52 72 53 73 `Create`, `Update`, `Delete`, `Follow`, `Accept`, `Reject`, `Like`, `Announce`, 54 `Undo` and `Flag`. Inbound follows are answered with `Accept` and backfilled with55 recent posts. Every inbound activity must carry a valid HTTP signature; unsigned 56 or unverifiable requests are rejected.74 `Undo`, `Flag`, `Block`, `Move` and `Offer`. Inbound follows are answered with 75 `Accept` and backfilled with recent posts. Every inbound activity must carry a 76 valid HTTP signature; unsigned or unverifiable requests are rejected. 57 77 58 78 ### Object types … … 91 111 - A note's `replies` collection is served, and inbound threads are crawled one 92 112 level at a time (stale-while-revalidate, SSRF-guarded, budget-limited). 113 114 ## Account migration 115 116 Klonkt implements account moves in both directions, following 117 [FEP-7628](https://codeberg.org/fediverse/fep/src/branch/main/fep/7628/fep-7628.md) 118 for the actor and 119 [FEP-1580](https://codeberg.org/fediverse/fep/src/branch/main/fep/1580/fep-1580.md) 120 for the objects the actor leaves behind. 121 122 - **Actor terms.** `alsoKnownAs` and `movedTo` are declared with the same term 123 definitions Mastodon ships, so an existing implementation reads them without 124 special-casing. `alsoKnownAs` is reserved for former identities of the same 125 actor; a reference to an external register (a MusicBrainz artist, say) uses 126 `schema:sameAs` instead, precisely so that a move cannot be confused by it. 127 - **The `Move` activity** is both sent and received. FEP-7628 moves *followers* 128 and says so explicitly; the objects are a separate problem, which is what 129 FEP-1580 addresses. 130 - **Object migration.** A migrated site exposes a `migration` collection and a 131 `moves` collection, plus `migrationComplete`, `migratedFrom` and `migratedAt`. 132 The terms live under `https://w3id.org/fep/1580/`, the namespace that FEP 133 registers by way of FEP-888d. The FEP's own CURIE for the collection is 134 `migration:migration`; Klonkt emits the JSON key `migration`, because that is 135 what a consumer reads on. 136 - **Importing.** An import from an export is not treated as a separate case: the 137 same path ingests from a source actor. 138 139 One gap is worth stating plainly: the `moves` collection carries **no integrity 140 proof**. Without [FEP-8b32](https://codeberg.org/fediverse/fep/src/branch/main/fep/8b32/fep-8b32.md) 141 there is no signature under it, so a consumer has to trust the serving host 142 rather than the claim itself. This is tracked and not yet resolved. 93 143 94 144 ## Client-to-Server (C2S) … … 144 194 - Actor public keys as Multikey: FEP-521a (FINAL). Klonkt still uses the legacy 145 195 `publicKey` representation. 146 - Object Integrity Proofs: FEP-8b32 (DRAFT). Not used. 196 - Object Integrity Proofs: FEP-8b32 (DRAFT). Not used. This is also what leaves 197 the `moves` collection unsigned; see "Account migration". 147 198 - Followers collection synchronization: FEP-8fcf (FINAL). Not implemented. 148 - Quote posts: FEP-044f (DRAFT). Quotes appear as replies with an inline link.149 150 A guardian-gated actor model (guardianship for wards, gated follows and replies)151 is being drafted separately as a candidate FEP.152 199 153 200 ## Additional documentation
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)