Skip to content

Implémentation d'ActivityPub #1058

@azmeuk

Description

@azmeuk

Bonjour à tous,
Nous travaillons sur l'implémentation d'ActivityPub dans le but de pouvoir fédérer des pods avec des pods, ou des pods avec des instances peertube. J'ouvre ce ticket pour pouvoir discuter des choix d'implémentation.

Pour rappel l'idée est d'implémenter un sous-ensemble d'ActivityPub dans le but de pouvoir partager les catalogues de vidéos entre les services. On ignorera les fonctionnalités autour des utilisateurs, des chaînes etc. Les fonctionnalités supportées seront:

  • Les activités Follow (et les réponses Accept ou Reject), pour permettre la fédération.
  • Les activités Create, Update et Delete sur les objets Video pour notifier / être notifié des ajouts/éditions/suppressions de vidéos.
  • Le point d'accès standards : Webfinger, qui est utilisé par peertube comme point d'entrée de découverte.
  • Un point d'accès Actor décrivant les métadonnées de l'instance, et notamment les points d'accès Inbox (pour notifier/être notifié des activités sur les vidéos, et fédérer les instances) et Outbox (pour récupérer/transmettre la liste exhaustive des vidéos d'une instance).

Pour info, peertube nécessite que les messages POST soient signés en suivant le draft de l'IETF Signing HTTP messages (ce n'est pas le seul logiciel à faire ça, mastodon aussi par exemple). Ce brouillon a été remplacé par la RFC9421 il y a quelques jours, et elle apporte beaucoup de modifications par rapport au brouillon. Peertube fera probablement évoluer son implémentation à l'avenir, donc il faudra surveiller ces évolutions pour garantir la compatibilité entre les services.

Pour que peertube puisse récupérer la liste des vidéos d'une instance pod, il faut un Actor d'instance, qui liste toutes les vidéos publiques dans sa outbox. Inversement, au moment où l'on fédérera une instance, il faudra aller consulter la outbox du compte d'instance peertube pour obtenir la liste de toutes les vidéos publiques.

Concernant les modèles de données, nous allons enregistrer en base les infos sur les instances fédérées (les instances suivies et suiveuses). Nous allons créer un modèle ExternalVideo qui référencera les métadonnées des vidéos externes.

Nous n'avons pas identifié pour le moment de bibliothèque pertinente à utiliser.

/cc @LoanR

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions