8000 Fully clean the implementation report draft · w3c/activitypub@13a546a · GitHub
[go: up one dir, main page]

Skip to content

Commit 13a546a

Browse files
committed
Fully clean the implementation report draft
1 parent c4b14f5 commit 13a546a

File tree

1 file changed

+63
-49
lines changed

1 file changed

+63
-49
lines changed

implementation-reports/TEMPLATE-WIP.md

Lines changed: 63 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,45 @@ If your implementation is only a Client or only a Server, and not both (a Federa
66

77
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).
88

9-
# Implementation Name (Replace this header)
9+
# Your Implementation's Name
1010

1111
Summary of the project.
12+
1213
Summary of the role ActivityPub plays in enabling the project's goals and the goals of its end-users.
1314

1415
Implementation Home Page URL:
1516

16-
Implementation Classes (Sender and/or Receiver):
17+
Implementation Classes (Sender and/or Receiver):
18+
1719
* [ ] Client
1820
* [ ] Server
1921
* [ ] Federated Server (all of the above)
2022

2123
Developer(s): [Name](http://you.example.com)
2224

2325
Interface to other applications: library | network service | other
26+
2427
Publicly Accessible: [ ]
2528

2629
Source Code repo URL(s):
30+
2731
* [ ] 100% open source implementation
32+
2833
License:
34+
2935
Programming Language(s):
3036

3137
## Client
3238

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.
3440

3541
### Features
3642

3743
#### Outbox Submission
3844

3945
> A client receiving authorization and subsequently submitting an activity to the authenticated actor's outbox.
4046
41-
- Section 7, Client to Server Interaction
47+
According to [Section 7](https://w3c.github.io/activitypub/#client-to-server-interactions)...
4248

4349
MUST
4450

@@ -55,27 +61,31 @@ SHOULD
5561
* [ ] 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.
5662
* [ ] Client limits depth of this recursion.
5763

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
6465

6566
MUST
6667

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))
6869

6970
## Server
7071

7172
Description of software component that acts as an ActivityPub Server, and how an end-user makes use of it.
7273

7374
### Features
7475

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
7684

7785
> A server handling an activity submitted by an authenticated actor to their outbox and handling client to server interaction side effects appropriately.
7886
87+
When a Client submits Activities to a Server's outbox, the Server...
88+
7989
MUST
8090

8191
* [ ] Accepts Activity Objects
@@ -94,6 +104,8 @@ MUST
94104

95105
SHOULD
96106

107+
* [ ] Server dodes not trust client submitted content
108+
* [ ] Validate the content they receive to avoid content spoofing attacks.
97109
* [ ] After receiving submission with uploaded media, the server should include the upload's new URL in the submitted object's url property
98110
* [ ] Take care not to overload other servers with delivery submissions
99111
* Create
@@ -110,11 +122,11 @@ SHOULD
110122
* Block
111123
* Prevent the blocked object from interacting with any object posted by the actor.
112124

113-
#### Deliver to inbox and receive at inbox
125+
#### Deliver to inboxes
114126

115127
> 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.
116128
117-
##### Delivery
129+
After receiving submitted Activities in an Outbox, a Server...
118130

119131
MUST
120132

@@ -133,7 +145,11 @@ SHOULD
133145

134146
* [ ] NOT deliver Block Activities to their object.
135147

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...
137153

138154
MUST
139155

@@ -144,30 +160,27 @@ MUST
144160

145161
SHOULD
146162

163+
* [ ] Don't trust content received from a server other than the content's origin without some form of verification.
147164
* [ ] Recurse through to, bto, cc, bcc, audience object values to determine whether/where to forward according to criteria in 8.1.2
148165
* [ ] Limit recursion in this process
149-
150166
* Update
151167
* [ ] Completely replace its copy of the activity with the newly received value
152-
153168
* Follow
154169
* [ ] Add the actor to the object user's Followers Collection.
155-
156170
* Add
157171
* [ ] Add the object to the Collection specified in the target property, unless not allowed to per requirements in 8.6
158-
159172
* Remove
160173
* [ ] Remove the object from the Collection specified in the target property, unless not allowed per requirements in 8.6
161-
162174
* Like
163175
* [ ] Perform appropriate indication of the like being performed (See 8.8 for examples)
164-
165176
* [ ] 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.
168177

169178
##### Inbox Retrieval
170179

180+
non-normative
181+
182+
* [ ] Server responds to GET request at inbox URL
183+
171184
MUST
172185

173186
* [ ] inbox is an OrderedCollection
@@ -176,44 +189,45 @@ SHOULD
176189

177190
* [ ] Server filters inbox content according to the requester's permission
178191

179-
Implied
192+
#### Allow Object Retrieval
180193

181-
* [ ] Server responds to GET request at inbox URL
194+
According to [section 3.2](https://w3c.github.io/activitypub/#retrieving-objects), the Server...
182195

183-
#### Accept notifications from other servers
196+
MAY
184197

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
186199

187-
#### Object Retrieval
200+
If the above, is true, the Server...
188201

189-
## Security Considerations (B)
202+
MUST
190203

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#"`
192205

193-
## Other Features
206+
SHOULD
194207

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.
196216

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
199218

200-
### Non-Exit-Criteria Features implied by the spec
219+
non-normative
201220

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))
203226

227+
## Other Features
204228

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
208230

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
210233

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

Comments
 (0)
0