You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: implementation-reports/TEMPLATE-WIP.md
+63-49Lines changed: 63 additions & 49 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,39 +6,45 @@ If your implementation is only a Client or only a Server, and not both (a Federa
6
6
7
7
When you are complete, send a pull request with the addition of your report file. Please remove this entire top section before submitting. If you haven't already, also consider filing an [ActivityStreams implemention report](https://github.com/w3c/acti
8000
vitystreams/blob/master/implementation-reports/template.md).
8
8
9
-
# Implementation Name (Replace this header)
9
+
# Your Implementation's Name
10
10
11
11
Summary of the project.
12
+
12
13
Summary of the role ActivityPub plays in enabling the project's goals and the goals of its end-users.
13
14
14
15
Implementation Home Page URL:
15
16
16
-
Implementation Classes (Sender and/or Receiver):
17
+
Implementation Classes (Sender and/or Receiver):
18
+
17
19
*[ ] Client
18
20
*[ ] Server
19
21
*[ ] Federated Server (all of the above)
20
22
21
23
Developer(s): [Name](http://you.example.com)
22
24
23
25
Interface to other applications: library | network service | other
26
+
24
27
Publicly Accessible: []
25
28
26
29
Source Code repo URL(s):
30
+
27
31
*[ ] 100% open source implementation
32
+
28
33
License:
34
+
29
35
Programming Language(s):
30
36
31
37
## Client
32
38
33
-
Description of software component that acts as an ActivityPub Client, and how an end-user makes use of it.
39
+
Describe the software component that acts as an ActivityPub Client, and how an end-user makes use of it.
34
40
35
41
### Features
36
42
37
43
#### Outbox Submission
38
44
39
45
> A client receiving authorization and subsequently submitting an activity to the authenticated actor's outbox.
40
46
41
-
-Section 7, Client to Server Interaction
47
+
According to [Section 7](https://w3c.github.io/activitypub/#client-to-server-interactions)...
42
48
43
49
MUST
44
50
@@ -55,27 +61,31 @@ SHOULD
55
61
*[ ] Before submitting a new activity or object, Client infers appropriate target audience by recursively looking at certain properties (e.g. `
8000
inReplyTo`, See Section 7), and adds these targets to the new submission's audience.
56
62
*[ ] Client limits depth of this recursion.
57
63
58
-
*[ ] Validate the content they receive to avoid content spoofing attacks.
59
-
*[ ] Don't trust client submitted content
60
-
*[ ] Don't trust content received from a server other than the content's origin without some form of verification.
61
-
62
-
63
-
#### Retrieval
64
+
#### Retrieving Objects
64
65
65
66
MUST
66
67
67
-
*[ ] When retrieving objects, Client specifies an Accept header with the application/ld+json; profile="https://www.w3.org/ns/activitystreams#" media type
68
+
*[ ] When retrieving objects, Client specifies an Accept header with the `application/ld+json; profile="https://www.w3.org/ns/activitystreams#"` media type ([3.2](https://w3c.github.io/activitypub/#retrieving-objects))
68
69
69
70
## Server
70
71
71
72
Description of software component that acts as an ActivityPub Server, and how an end-user makes use of it.
72
73
73
74
### Features
74
75
75
-
#### Accept activity submissions and produces side effects
76
+
A Server:
77
+
78
+
* Accepts activity submissions in an outbox, and updates the server's Objects per rules described below
79
+
* Delivers these submissions to the inboxes of other Servers
80
+
* Receives Activity from other servers in an inbox, and updates the server's Objects per rules described below
81
+
* Makes Objects available for retrieval by Clients
82
+
83
+
#### Accept activity submissions and produce correct side effects
76
84
77
85
> A server handling an activity submitted by an authenticated actor to their outbox and handling client to server interaction side effects appropriately.
78
86
87
+
When a Client submits Activities to a Server's outbox, the Server...
88
+
79
89
MUST
80
90
81
91
*[ ] Accepts Activity Objects
@@ -94,6 +104,8 @@ MUST
94
104
95
105
SHOULD
96
106
107
+
*[ ] Server dodes not trust client submitted content
108
+
*[ ] Validate the content they receive to avoid content spoofing attacks.
97
109
*[ ] After receiving submission with uploaded media, the server should include the upload's new URL in the submitted object's url property
98
110
*[ ] Take care not to overload other servers with delivery submissions
99
111
* Create
@@ -110,11 +122,11 @@ SHOULD
110
122
* Block
111
123
* Prevent the blocked object from interacting with any object posted by the actor.
112
124
113
-
#### Deliver to inbox and receive at inbox
125
+
#### Deliver to inboxes
114
126
115
127
> A federated server delivering an activity posted by a local actor to the inbox endpoints of all recipients specified in the activity, including those on other remote federated servers.
116
128
117
-
##### Delivery
129
+
After receiving submitted Activities in an Outbox, a Server...
118
130
119
131
MUST
120
132
@@ -133,7 +145,11 @@ SHOULD
133
145
134
146
*[ ] NOT deliver Block Activities to their object.
135
147
136
-
##### Inbox Receiving
148
+
#### Accept inbox notifications from other servers
149
+
150
+
> A federated server receiving an activity to its actor's inbox, validating that the activity and any nested objects were created by their respective actors, and handling server to server side effects appropriately.
151
+
152
+
When receiving notifications in an inbox, a Server...
137
153
138
154
MUST
139
155
@@ -144,30 +160,27 @@ MUST
144
160
145
161
SHOULD
146
162
163
+
*[ ] Don't trust content received from a server other than the content's origin without some form of verification.
147
164
*[ ] Recurse through to, bto, cc, bcc, audience object values to determine whether/where to forward according to criteria in 8.1.2
148
165
*[ ] Limit recursion in this process
149
-
150
166
* Update
151
167
*[ ] Completely replace its copy of the activity with the newly received value
152
-
153
168
* Follow
154
169
*[ ] Add the actor to the object user's Followers Collection.
155
-
156
170
* Add
157
171
*[ ] Add the object to the Collection specified in the target property, unless not allowed to per requirements in 8.6
158
-
159
172
* Remove
160
173
*[ ] Remove the object from the Collection specified in the target property, unless not allowed per requirements in 8.6
161
-
162
174
* Like
163
175
*[ ] Perform appropriate indication of the like being performed (See 8.8 for examples)
164
-
165
176
*[ ] Validate the content they receive to avoid content spoofing attacks.
166
-
*[ ] Don't trust client submitted content
167
-
*[ ] Don't trust content received from a server other than the content's origin without some form of verification.
168
177
169
178
##### Inbox Retrieval
170
179
180
+
non-normative
181
+
182
+
*[ ] Server responds to GET request at inbox URL
183
+
171
184
MUST
172
185
173
186
*[ ] inbox is an OrderedCollection
@@ -176,44 +189,45 @@ SHOULD
176
189
177
190
*[ ] Server filters inbox content according to the requester's permission
178
191
179
-
Implied
192
+
#### Allow Object Retrieval
180
193
181
-
*[ ] Server responds to GET request at inbox URL
194
+
According to [section 3.2](https://w3c.github.io/activitypub/#retrieving-objects), the Server...
182
195
183
-
#### Accept notifications from other servers
196
+
MAY
184
197
185
-
> A federated server receiving an activity to its actor's inbox, validating that the activity and any nested objects were created by their respective actors, and handling server to server side effects appropriately.
198
+
*[ ] Allow dereferencing Object `id`s by responding to HTTP GET requests with a representation of the Object
186
199
187
-
#### Object Retrieval
200
+
If the above, is true, the Server...
188
201
189
-
## Security Considerations (B)
202
+
MUST
190
203
191
-
*[ ]acceptance criteria (NORMATIVITY)
204
+
*[ ]Respond with the ActivityStreams object representation in response to requests that primarily Accept the media type `application/ld+json; profile="https://www.w3.org/ns/activitystreams#"`
192
205
193
-
## Other Features
206
+
SHOULD
194
207
195
-
### Exit Criteria Features
208
+
*[ ]- Respond with the ActivityStreams object representation in response to requests that primarily Accept the media type `application/activity+json`
209
+
* Deleted Object retrieval
210
+
*[ ] Respond with 410 Gone status code to requests for deleted objects
211
+
*[ ] Respond with response body that is an ActivityStreams Object of type `Tombstone`.
212
+
*[ ] Respond with 404 status code for Object URIs that have never existed
213
+
*[ ] Respond with a 403 Forbidden status code
6D38
to all requests that access Objects considered Private
214
+
*[ ] Respond to requests which do not pass authorization checks using "the appropriate HTTP error code"
215
+
*[ ] Respond with a 403 Forbidden error code to all requests to Object URIs where the existence of the object is considered private.
196
216
197
-
* Discovering an actor's profile based on their URI.
198
-
* TODO clarify acceptance criteria: https://github.com/w3c/activitypub/issues/173
217
+
## Security Considerations
199
218
200
-
### Non-Exit-Criteria Features implied by the spec
219
+
non-normative
201
220
202
-
#### Object Retrieval
221
+
*[ ] Server verifies that the new content is really posted by the author indicated in Objects received in inbox and outbox ([B.1](https://w3c.github.io/activitypub/#security-verification))
222
+
*[ ] By default, implementation does not make HTTP requests to localhost when delivering Activities ([B.2](https://w3c.github.io/activitypub/#security-localhost))
223
+
*[ ] Implementation applies a whitelist of allowed URI protocols before issuing requests, e.g. for inbox delivery ([B.3](https://w3c.github.io/activitypub/#security-uri-schemes))
224
+
*[ ] Server filters incoming content both by local untrusted users and any remote users through some sort of spam filter ([B.4](https://w3c.github.io/activitypub/#security-spam))
225
+
*[ ] Implementation takes care to santizie fields containing markup to prevent cross site scripting attacks ([B.5](https://w3c.github.io/activitypub/#security-sanitizing-content))
203
226
227
+
## Other Features
204
228
205
-
##### Server
206
-
207
-
> The HTTP GET method may be dereferenced against an object's id property to retrieve the activity.
229
+
### Requirements not yet specified
208
230
209
-
Spec uses lowercase 'may', but in the details there is a MUST.
231
+
* Discovering an actor's profile based on their URI.
232
+
* TODO clarify acceptance criteria: https://github.com/w3c/activitypub/issues/173
210
233
211
-
*[ ]- MAY? - "The HTTP GET method may be dereferenced against an object's id property to retrieve the activity."
212
-
*[ ]- MUST - presents the ActivityStreams object representation in response to application/ld+json; profile="https://www.w3.org/ns/activitystreams#"
213
-
*[ ]- SHOULD - presents the ActivityStreams representation in response to application/activity+json as wel
214
-
* Deleted Object retrieval
215
-
*[ ] SHOULD respond with 410 Gone to requests for deleted objects
216
-
*[ ] Response body SHOULD be Object of type Tombstone.
217
-
* Never existed objects
218
-
*[ ] SHOULD respond with 404 status code
219
-
*[ ] SHOULD fail requests which do not pass their authorization checks with the appropriate HTTP error code, or the 403 Forbidden error code where the existence of the object is considered private.
0 commit comments