Encyclopédie Wikimonde

ForgeFed

Aller à : navigation, rechercher

Erreur Lua dans Module:Wikidata à la ligne 121 : attempt to index field 'wikibase' (a nil value).

ForgeFed, initialement appelé GitPub[1] est un protocole d'échange pour forges logicielles ouvert, sous licence CC0 1.0 Universal[2], destiné à les décentraliser en les intégrant au sein du Fediverse. Le but étant de pouvoir échanger d'une instance à l'autre, les différents aspects d'une forge logicielle, tels que suivre un dépôt distant, y ouvrir des tickets (bugs etc), y proposer des patchs, et des requêtes de fusion[3]. Il permet ainsi aux développeurs d'utiliser leur environnement de gestion de projet favori, tout en interagissant avec ceux utilisés pour les projets d'autres développeurs[4]. Le projet a notamment été influencé par le rachat de Github par Microsoft (en juin 2018)[5].

Dans ce protocole, les objets sont échangés entre les instances du Fediverse sous forme d’extension du protocole ActivityPub du W3C[6].

Il est développé au sein de The Peer Community[7].

Awesome Open Source, le classe comme 9e projet le plus populaire autour d'ActivityPub[8].

Fonctionnement

Le protocole se base sur ActivityPub, il définit un vocabulaire dédié aux forges logicielles, dont une partie est héritée d'ActivityPub, une partie est définie par ForgeFed et d'autres termes viennent de sources externes. les objets échangés sont définis au format JSON-LD compressé. Parmi les objets, il y a par exemple : Note, Ticket, Image, Create (creer), Push (pousser). Ils sont classés en quatre types[9] :

  • Activities (activités), ils définissent des actions, qui se sont déroulées, ou qui sont demandés. Elles sont princapalement utilisées dans les échanges entre serveurs et envoyés alors dans une Actor inbox (dans le sens d'ActivityPub), ou bien, dans un contexte client à serveur, et elles sont alors placées dans la Actor’s outbox.
  • Actors (acteurs), des objets persistant possédant une inbox, et avec lesquelles on peut interagir via une activité via la méthode POST. Ils sont principalement conçu pour contenrir et représenter les informations et les sorties des actions des utilisateurs, ou bien les actions des programmes, et gérer leurs accès et modifications.
  • Child objects (objets enfants), également des objets persistants, représentant des informations et des sorties des actions, mais sans inbox propre. On interagit avec via l'acteur parent auquel il est rattaché.
  • Global helper objects (Objets d'aide globale), des objets qui ne sont pas liés à un acteur et ne nécéssite pas d'interaction au travers des activités. Ils peuvent être utilisés pour des détails d'implémentation.

Les Actors, children et gloabals sont des objets statiques et les activités, des objets dynamiques dans le vocabulaire de ForgeFed. Les objets statiques ont en outre, être de deux types distincts[9] :

  • Resource, qui contient ou représente les informations, et le contenu produit par l'utilisateur our le programme, ils sont généralement liés au modèle du VCS ou à la gestion de projet.
  • Helper (aide), utilisés pour ce qui n'est pas directement visible à l'utilisateur, liés aux détails de l'implémentation.

Implémentations

Vervis en est une implémentation de référence, utilisée pour le développement des spécifications, supportant les VCS Darcs et Git, le but étant à terme de l'intégrer dans les différentes forges libres, telles que Gitlab CE, Gitea, Gogs, Pagure (de Fedora)[10],[3].

mcfi, est une implémentation en ligne de commande de ce protocole[3].

Il existe une implémentation des échanges entre entités en Python et en Ruby[11]

Gitea à commencé à l'intégrer progressivement depuis novembre 2019[12].

Gitlab qui commençait à travailler sur la possibilité de fédérer les requêtes de fusion[13]travaille pour cela depuis fin 2019 à la façon d'implémenter la gestion fédérée des identités en s'adaptant aux spécifications de ForgeFed[14].

Références

  1. « ForgeFed », sur dokk.org
  2. (en) « CC0 1.0 Universal », sur notebug.org
  3. 3,0, 3,1 et 3,2 (en) « ForgeFed »
  4. (en) « ForgeFed », sur nlnet.net
  5. (en) « Federated code hosting », sur FENEAS.org,
  6. (en) « ForgeFed - Federation Protocol for Forge Services », sur compte ForgeFed de Noteabug.org
  7. (en) « The Peers Community - Projets », sur peers.community
  8. (en) « The Top 30 Activitypub Open Source Projects », sur Awesome Open Source
  9. 9,0 et 9,1 (en) « ForgeFed Behavior - draft - 2020-08-05 master 52bb666 », sur Forgefed.peers.community
  10. (en) « Vervis @ dev.angeley.es », sur dev.angeley.es
  11. « forge-fed / forge-fed-python », sur Fedora Pagure.io
  12. (en) « Preparing for Federation: "Remote" Users / Federated ID #9045 », sur compte Github de Gitea,
  13. (en) « Implement cross-server (federated) merge requests », sur Gitlab.com
  14. (en) « Federated Identity », sur Gitlab.com

Site officiel

Article publié sur Wikimonde Plus

Erreur Lua dans Module:Suivi_des_biographies à la ligne 197 : attempt to index field 'wikibase' (a nil value).