Comment Plume fédère

Un résumé des standards que Plume utilise pour fédérer, comment ils sont implémentés, et quelles parts de ses standards sont disponible, ou pas, dans Plume.

Pour se fédérer avec d'autres logiciels du Fediverse (et lui-même), Plume utilise divers protocoles :

Actuellement, les aspects suivants sont fédérés :

Et ces parties ne sont pas fédérées, mais le seront peut être dans le futur:

WebFinger

WebFinger est utilisé pour découvrir les profils distants. Quand vous ouvrez la page d'un utilisateur inconnu (/@/utilisateur@instance.tld), Plume va envoyer une requête WebFinger à l'autre instance, sur le point de terminaison standard : /.well-known/webfinger. Plume ignore le point de terminaison /.well-known/host-meta (qui peut normalement être utilisé pour définir un autre point de terminaison WebFinger), et utilise toujours l'URL standard.

Plume utilise le conteneur webfinger pour donner et récupérer les informations WebFinger.

Signatures HTTP

Plume vérifie que chaque Activité entrante a été signée avec la paire de clés de l'acteur.

Pour faire ceci, il utilise l'entête HTTP : Signature. Pour plus de détails sur la façon dont cet en-tête est généré, veuillez vous référer à la HTTP Signatures Specification.

L'en-tête Digest doit également être présent et utilisé pour générer la signature, ainsi nous pouvons vérifier le corps de la requête aussi.

NodeInfo

Plume expose les métadonnées de l'instance avec NodeInfo sur l'URL : /nodeinfo.

Exemple de sortie

{
  "version": "2.0",
  "software": {
    "name": "Plume",
    "version": "0.2.0"
  },
  "protocols": ["activitypub"],
  "services": {
    "inbound": [],
    "outbound": []
  },
  "openRegistrations": true,
  "usage": {
    "users": {
      "total": 42
    },
    "localPosts": 7878,
    "localComments": 1312
  },
  "metadata": {}
}

ActivityPub

Chaque utilisateur a une boîte de réception personnelle dans /@/username/inbox, et chaque instance a une boîte de réception partagée dans /inbox.

Si possible, Plume utilisera la boîte de réception partagée pour envoyer les activités.

Représentation des objets

Activités supportées

Plume 0.2.0 supporte les types d'activités suivants.

Accept

Accepte une demande de suivi.

Il sera ignoré lorsque reçu, car Plume considère que les demandes de suivi sont immediatement approuvées dans tous les cas (cependant, cela changera dans le futur).

Quand une activité Follow est reçue, Plume répondra avec cette activité.

Announce

Repartage d'un article (non disponible pour d'autres objets).

Crée un repartage d'un objet (object) par un utilisateur (actor).

Create

Crée un nouvel article ou un commentaire.

Si object est un Article:

Si object est une Note:

Supprimer

Supprime un objet qui a été créé avec une activité Create .

object est un Tombstone, et object.id l'ID de l'objet à supprimer (soit un ID d'article, soit un ID de Note).

Follow

Quand cette activité est reçue, l'auteur est ajouté à la liste des personnes suivants le destinataire.

Ces activités sont immédiatement acceptées (voir Accept) par Plume.

Pour les blogs, il y'a juste un renvoi d'une activité Accept : suivre un blog n'est pas encore implémenté.

Like

Peut être utilisé pour ajouter un j'aime à un article.

Mettre à jour

Met à jour d'un article.

Undo

Annule une action précédente (comme, repartager ou suivre).