And a short summary how the federation works:
Main objects in terms of federation are the
Instance
andArticle
. Each article belongs to a single origin instance, the one where it was originally created. Articles have a collection ofEdit
s a custom ActivityPub type containing a diff. The text of any article can be built by starting from empty string and applying all associated edits in order. Instances can synchronize their articles with each other, and follow each other to receive updates about articles. Edits are done with diffs which are generated on the backend, and allow for conflict resolution similar to git. Editing also works over federation. In this case an activityUpdate/Edit
is sent to the origin instance. If the diff applies cleanly, the origin instance sends the new text in anUpdate/Article
activity to its followers. In case there is a conflict, aReject
activity is sent back, the editor needs to resolve and resubmit the edit.