1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
<!doctype html>
<html class="default">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>ForgeFed</title>
<link rel="stylesheet" type="text/css" href="light.css" />
</head>
<body class="body">
<header class="header">
<h1 class="header-title">
<a class="header-title__link" href="/">ForgeFed</a>
</h1>
<nav class="nav">
<a class="nav__link"
href="forgefed.html">🗲 behavior</a>
<a class="nav__link"
href="forgefed-vocabulary.html">📓 vocabulary</a>
<a class="nav__link"
href="https://notabug.org/peers/forgefed/issues">🐞 issues</a>
<a class="nav__link"
href="https://talk.feneas.org/c/forgefed">🗪 forum</a>
</nav>
</header>
<main class="main">
<h1 class="main-title">
ForgeFed - draft - 2019-07-24 master
<a href="https://notabug.org/peers/forgefed/commit/0c9efdedf6b8f959c5d303b288493c43cb2ea52a">
0c9efde
</a>
[dirty]
</h1>
<nav class="toc">
<header class="toc-title">Table of Contents</header>
<ul>
<li><a href="#abstract"><span class="toc-section-number">1</span> Abstract</a></li>
<li><a href="#status-of-this-document"><span class="toc-section-number">2</span> Status of This Document</a></li>
<li><a href="#overview"><span class="toc-section-number">3</span> Overview</a></li>
<li><a href="#conformance"><span class="toc-section-number">4</span> Conformance</a></li>
<li><a href="#objects"><span class="toc-section-number">5</span> Objects</a></li>
<li><a href="#actors"><span class="toc-section-number">6</span> Actors</a></li>
<li><a href="#client-to-server-interactions"><span class="toc-section-number">7</span> Client to Server Interactions</a><ul>
<li><a href="#follow-activity"><span class="toc-section-number">7.1</span> Follow Activity</a></li>
<li><a href="#push-activity"><span class="toc-section-number">7.2</span> Push Activity</a></li>
</ul></li>
<li><a href="#server-to-server-interactions"><span class="toc-section-number">8</span> Server to Server Interactions</a><ul>
<li><a href="#follow-activity-1"><span class="toc-section-number">8.1</span> Follow Activity</a></li>
</ul></li>
<li><a href="#acknowledgements"><span class="toc-section-number">9</span> Acknowledgements</a></li>
</ul>
</nav>
<p><strong>Editors:</strong></p>
<ul>
<li>deesix</li>
<li>fr33domlover</li>
<li>zPlus</li>
<li>… add other editors</li>
</ul>
<p><strong>Repository:</strong></p>
<ul>
<li><a href="https://notabug.org/peers/forgefed">NotABug</a></li>
</ul>
<p><strong>Copyright:</strong></p>
<p>2019 …</p>
<h1 id="abstract"><span class="header-section-number">1</span> Abstract</h1>
<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>
<h1 id="status-of-this-document"><span class="header-section-number">2</span> Status of This Document</h1>
<h1 id="overview"><span class="header-section-number">3</span> Overview</h1>
<p>ForgeFed is an extension of <a href="https://www.w3.org/TR/activitypub/">ActivityPub</a> and follows the same “actors” model, with a client-to-server protocol and a server-to-server protocol.</p>
<h1 id="conformance"><span class="header-section-number">4</span> Conformance</h1>
<p>The key words MAY, MUST, MUST NOT, SHOULD, and SHOULD NOT are to be interpreted as described in [RFC2119].</p>
<h1 id="objects"><span class="header-section-number">5</span> Objects</h1>
<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>
<h1 id="actors"><span class="header-section-number">6</span> Actors</h1>
<p>A ForgeFed implementation MUST provide an Actor of type <code>Repository</code> for every repository that should support federation.</p>
<p>A ForgeFed implementation SHOULD provide an Actor of type <code>Person</code> for every user of the platform.</p>
<h1 id="client-to-server-interactions"><span class="header-section-number">7</span> Client to Server Interactions</h1>
<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>
<h2 id="follow-activity"><span class="header-section-number">7.1</span> Follow Activity</h2>
<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>
<h2 id="push-activity"><span class="header-section-number">7.2</span> Push Activity</h2>
<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>
<h1 id="server-to-server-interactions"><span class="header-section-number">8</span> Server to Server Interactions</h1>
<h2 id="follow-activity-1"><span class="header-section-number">8.1</span> Follow Activity</h2>
<p>The server receiving a Follow activity in a Repository’s inbox SHOULD add the sender actor to the Repository’s followers collection.</p>
<h1 id="acknowledgements"><span class="header-section-number">9</span> Acknowledgements</h1>
</main>
<footer class="footer">
<p xmlns:dct="http://purl.org/dc/terms/">
<a rel="license"
href="http://creativecommons.org/publicdomain/zero/1.0/">
<img src="https://licensebuttons.net/p/zero/1.0/88x31.png"
style="border-style: none;"
alt="CC0" />
</a>
<br />
<a rel="dct:publisher" href="https://peers.community">
<span property="dct:title">The ForgeFed team</span>
</a>
has dedicated all copyright and related and neighboring
rights to
<span property="dct:title">ForgeFed</span> to the public domain
worldwide.
</p>
<p>❤ Copying is an act of love. Please copy, reuse and share!</p>
<p>
Site generated by
<a class="footer__link" href="https://pandoc.org">pandoc</a>.
</p>
</footer>
</body>
</html>
|