forgefed.html 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <!doctype html>
  2. <html class="default light">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>ForgeFed</title>
  7. <link rel="stylesheet" type="text/css" href="/theme.css" />
  8. </head>
  9. <body class="body">
  10. <header class="header">
  11. <h1 class="header-title">
  12. <a class="header-title__link" href="/">
  13. <img src="/logo-with-name.svg" alt="ForgeFed" title="ForgeFed" />
  14. </a>
  15. </h1>
  16. <nav class="nav">
  17. <a class="nav__link"
  18. href="/forgefed.html">🗲 behavior</a>
  19. <a class="nav__link"
  20. href="/forgefed-vocabulary.html">📓 vocabulary</a>
  21. <a class="nav__link"
  22. href="https://notabug.org/peers/forgefed/issues">🐞 issues</a>
  23. <a class="nav__link"
  24. href="https://talk.feneas.org/c/forgefed">🗪 forum</a>
  25. <a class="nav__link"
  26. href="/index/dark.html">🌑</a>
  27. </nav>
  28. </header>
  29. <main class="main">
  30. <h1 class="main-title">
  31. ForgeFed - draft - 2019-10-05 master
  32. <a href="https://notabug.org/peers/forgefed/commit/743855aa55c134dcafa391d84f31024b5e3921b3">
  33. 743855a
  34. </a>
  35. </h1>
  36. <nav class="toc">
  37. <header class="toc-title">Table of Contents</header>
  38. <ul>
  39. <li><a href="#abstract"><span class="toc-section-number">1</span> Abstract</a></li>
  40. <li><a href="#status-of-this-document"><span class="toc-section-number">2</span> Status of This Document</a></li>
  41. <li><a href="#overview"><span class="toc-section-number">3</span> Overview</a></li>
  42. <li><a href="#conformance"><span class="toc-section-number">4</span> Conformance</a></li>
  43. <li><a href="#objects"><span class="toc-section-number">5</span> Objects</a></li>
  44. <li><a href="#actors"><span class="toc-section-number">6</span> Actors</a></li>
  45. <li><a href="#client-to-server-interactions"><span class="toc-section-number">7</span> Client to Server Interactions</a><ul>
  46. <li><a href="#follow-activity"><span class="toc-section-number">7.1</span> Follow Activity</a></li>
  47. <li><a href="#push-activity"><span class="toc-section-number">7.2</span> Push Activity</a></li>
  48. </ul></li>
  49. <li><a href="#server-to-server-interactions"><span class="toc-section-number">8</span> Server to Server Interactions</a><ul>
  50. <li><a href="#follow-activity-1"><span class="toc-section-number">8.1</span> Follow Activity</a></li>
  51. </ul></li>
  52. <li><a href="#acknowledgements"><span class="toc-section-number">9</span> Acknowledgements</a></li>
  53. </ul>
  54. </nav>
  55. <p><strong>Editors:</strong></p>
  56. <ul>
  57. <li>fr33domlover</li>
  58. <li>zPlus</li>
  59. <li>... add other editors</li>
  60. </ul>
  61. <p><strong>Repository:</strong></p>
  62. <ul>
  63. <li><a href="https://notabug.org/peers/forgefed">NotABug</a></li>
  64. </ul>
  65. <p><strong>Copyright:</strong></p>
  66. <p>2019 ...</p>
  67. <h1 id="abstract"><span class="header-section-number">1</span> Abstract</h1>
  68. <p>This document describes the ForgeFed protocol. ForgeFed is an extension of the <a href="https://www.w3.org/TR/activitypub/">ActivityPub</a> protocol for delivering notifications and content for federation of version control systems. The purpose of this specification is to describe a protocol that can be integrated into source code management for enabling collaboration across different platforms.</p>
  69. <h1 id="status-of-this-document"><span class="header-section-number">2</span> Status of This Document</h1>
  70. <h1 id="overview"><span class="header-section-number">3</span> Overview</h1>
  71. <p>ForgeFed is an extension of <a href="https://www.w3.org/TR/activitypub/">ActivityPub</a> and follows the same &quot;actors&quot; model, with a client-to-server protocol and a server-to-server protocol.</p>
  72. <h1 id="conformance"><span class="header-section-number">4</span> Conformance</h1>
  73. <p>The key words MAY, MUST, MUST NOT, SHOULD, and SHOULD NOT are to be interpreted as described in [RFC2119].</p>
  74. <h1 id="objects"><span class="header-section-number">5</span> Objects</h1>
  75. <p>Objects are the core concept around which both ActivityPub and ForgeFed are built. Examples of Objects are Note, Ticket, or Image. Objects are wrapped in Activities, a subtype of Object that describes some form of action that may happen, is currently happening, or has already happened. Examples of Activities are Create, Delete, or Follow.</p>
  76. <h1 id="actors"><span class="header-section-number">6</span> Actors</h1>
  77. <p>A ForgeFed implementation MUST provide an Actor of type <code>Repository</code> for every repository that should support federation.</p>
  78. <p>A ForgeFed implementation SHOULD provide an Actor of type <code>Person</code> for every user of the platform.</p>
  79. <h1 id="client-to-server-interactions"><span class="header-section-number">7</span> Client to Server Interactions</h1>
  80. <p>ForgeFed uses Activities for client to server interactions, as described by ActivityPub. A client will send objects (eg. a Ticket) wrapped in a Activity (eg. Create) to an actor's outbox, and in turn the server will take care of delivery.</p>
  81. <h2 id="follow-activity"><span class="header-section-number">7.1</span> Follow Activity</h2>
  82. <p>The Follow activity is used to subscribe to the activities of a Repository. The client MUST send a Follow activity the a Person's outbox. The server in turn delivers the message to the destination inbox.</p>
  83. <h2 id="push-activity"><span class="header-section-number">7.2</span> Push Activity</h2>
  84. <p>The Push activity is used to notify followers when somebody has pushed changes to a Repository. The client MUST send a Push activity the a Repository's outbox. The server in turn delivers the message to the Repository followers.</p>
  85. <h1 id="server-to-server-interactions"><span class="header-section-number">8</span> Server to Server Interactions</h1>
  86. <h2 id="follow-activity-1"><span class="header-section-number">8.1</span> Follow Activity</h2>
  87. <p>The server receiving a Follow activity in a Repository's inbox SHOULD add the sender actor to the Repository's followers collection.</p>
  88. <h1 id="acknowledgements"><span class="header-section-number">9</span> Acknowledgements</h1>
  89. </main>
  90. <footer class="footer">
  91. <p xmlns:dct="http://purl.org/dc/terms/">
  92. <a rel="license"
  93. href="http://creativecommons.org/publicdomain/zero/1.0/">
  94. <img src="https://licensebuttons.net/p/zero/1.0/88x31.png"
  95. style="border-style: none;"
  96. alt="CC0" />
  97. </a>
  98. <br />
  99. <a rel="dct:publisher" href="https://peers.community">
  100. <span property="dct:title">The ForgeFed team</span>
  101. </a>
  102. has dedicated all copyright and related and neighboring
  103. rights to
  104. <span property="dct:title">ForgeFed</span> to the public domain
  105. worldwide.
  106. </p>
  107. <p>❤ Copying is an act of love. Please copy, reuse and share!</p>
  108. <p>
  109. Site generated by
  110. <a class="footer__link" href="https://pandoc.org">pandoc</a>.
  111. </p>
  112. </footer>
  113. </body>
  114. </html>