Commit

Author:

Hash:

Timestamp:

+165 -71 +/-3 browse

Kevin Schoon [me@kevinschoon.com]

a859651aaafeb526379ae75bb1b25d6f619af3cd

Tue, 18 Nov 2025 15:18:33 +0000 (2 weeks ago)

clean up documentation
clean up documentation

Clean up the documentation adding more examples and making it easier to
copy-paste content into a text file for writing implementations.
1diff --git a/content/_index.md b/content/_index.md
2index 6d1a0dd..64029d0 100644
3--- a/content/_index.md
4+++ b/content/_index.md
5 @@ -15,6 +15,8 @@ NOTE that all specifications provided below MAY be implemented indepedenantly
6 at the descrescion of the developer however it is a recommended that a server
7 implement them all for maximum effect.
8
9+ # Specifications
10+
11 The following specifications are currently covered:
12
13 * [WebFinger Project Identification](/webfinger-project) - Identify Software Projects via WebFinger
14 diff --git a/content/webfinger-project.md b/content/webfinger-project.md
15index b419c0c..176c0e4 100644
16--- a/content/webfinger-project.md
17+++ b/content/webfinger-project.md
18 @@ -60,23 +60,23 @@ def to_string(slug, domain=None):
19 ```
20
21
22- ### Properties
23+ ### Relation Types
24
25- #### http://forge-feed.org/rel/repository
26+ The following [Relation Types](https://datatracker.ietf.org/doc/html/rfc7033#section-4.4.4.1) are
27+ available for use within a project resource.
28
29- Reference to a VCS managed code repository.
30-
31- #### http://feed-forge.org/ns/chatroom
32-
33- Hint describing the backing type of chatroom. See [uri-schemes](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml).
34-
35- matrix
36- irc
37- xmpp
38-
39- ### Link Extension Types
40+ ```text
41+ http://forge-feed.org/rel/avatar
42+ http://forge-feed.org/rel/chatroom
43+ http://forge-feed.org/rel/description
44+ http://forge-feed.org/rel/label
45+ http://forge-feed.org/rel/homepage
46+ http://forge-feed.org/rel/repository
47+ http://forge-feed.org/rel/mailing-list
48+ http://forge-feed.org/rel/ticketing-system
49+ ```
50
51- #### Avatar
52+ #### `http://forge-feed.org/rel/avatar`
53
54 Forges that allow users to configure a logo can expose this information as
55 an avatar for use in other applications.
56 @@ -88,20 +88,18 @@ an avatar for use in other applications.
57 }
58 ```
59
60- #### Homepage
61-
62- Link to an HTTP representation of the project homepage.
63+ #### `http://feed-forge.org/rel/chatroom`
64
65 ```json
66 {
67- "rel": "http://feed-forge.org/rel/homepage",
68- "href": "https://example.org/example/spartacus"
69+ "rel": "http://webfinger.net/rel/chatroom",
70+ "href": "xmpp://spartacus@chat.example.org"
71 }
72 ```
73
74- #### Description
75+ #### `http://forge-feed.org/rel/description`
76
77- A short text representation of the project.
78+ A brief textual description which tells you something about the project.
79
80 ```json
81 {
82 @@ -113,21 +111,31 @@ A short text representation of the project.
83 }
84 ```
85
86- #### Chat Links
87+ #### `http://forge-feed.org/rel/label`
88
89- Links to chatrooms: IRC, Matrix, XMPP, etc.
90+ A short text based category which can be used for searching.
91
92 ```json
93 {
94- "rel": "http://feed-forge.org/rel/chatroom",
95- "href": "ircs://irc.libera.chat/#spartacus-game",
96+ "rel": "http://forge-feed.org/rel/label",
97 "properties": {
98- "http://feed-forge.org/ns/chatroom": "irc"
99+ "http://feed-forge.org/ns/label": "text-adventure"
100 }
101 }
102 ```
103
104- #### Mailing Lists
105+ #### `http://forge-feed.org/rel/homepage`
106+
107+ Link to an HTTP representation of the project homepage.
108+
109+ ```json
110+ {
111+ "rel": "http://feed-forge.org/rel/homepage",
112+ "href": "https://example.org/example/spartacus"
113+ }
114+ ```
115+
116+ #### `http://forge-feed.org/rel/mailing-list`
117
118 Links to associated mailing lists, forms, etc.
119
120 @@ -141,8 +149,7 @@ Links to associated mailing lists, forms, etc.
121 }
122 }
123 ```
124-
125- #### Ticketing Systems
126+ #### `http://forge-feed.org/rel/ticketing-system`
127
128 Links to issue tracking systems.
129
130 @@ -153,20 +160,61 @@ Links to issue tracking systems.
131 }
132 ```
133
134- #### Repository Links
135+ #### `http://forge-feed.org/rel/repository`
136
137- Links of code repositories associated with this software project.
138+ Reference to a VCS managed code repository.
139
140 ```json
141 {
142- "rel": "http://example.org/rel/repository",
143- "href": "https://example.org/example/spartacus",
144+ "rel": "http://webfinger.net/rel/repository",
145+ "href": "https://code.example.org/spartacus/spartan-engine",
146 "properties": {
147- "http://forge-feed.org/rel/repository": "repository:example/spartacus"
148+ "http://forge-feed.org/ns/repository-uri": "repository:spartacus/spartan-engine",
149+ "http://forge-feed.org/ns/vcs-type": "git"
150 }
151 }
152 ```
153
154+ ### Property Identifiers
155+
156+ The following [property identifiers](https://datatracker.ietf.org/doc/html/rfc7033#section-4.4.3) are available
157+ for use within a project resource.
158+
159+ ```txt
160+ http://forge-feed.org/ns/label
161+ http://forge-feed.org/ns/repository-uri
162+ http://forge-feed.org/ns/vcs-type
163+ http://forge-feed.org/ns/mailing-list-subscribe
164+ http://forge-feed.org/ns/mailing-list-unsubscribe
165+ ```
166+
167+ #### `http://forge-feed.org/ns/label`
168+
169+ A short text based category which can be used for searching.
170+
171+ #### `http://forge-feed.org/ns/repository-uri`
172+
173+ A Repository URI as described by the [Repository URI](/webfinger-repository) specification.
174+
175+ #### `http://forge-feed.org/ns/vcs-type`
176+
177+ Identifies VCS types, valid strings are:
178+
179+ bzr (GNU Bazaar) bazaar.canonical.com
180+ darcs (Darcs) darcs.net
181+ fossil (Fossil) fossil-scm.org
182+ git (Git) git-scm.com
183+ hg (Mercurial) mercurial-scm.org
184+ pijul (Pijul) pijul.org
185+ svn (Apache Subversion) subversion.apache.org
186+
187+ #### `http://forge-feed.org/ns/mailing-list-subscribe`
188+ [Mailto](https://www.rfc-editor.org/rfc/rfc6068) link for subscribing from a mailing list.
189+
190+ #### `http://forge-feed.org/ns/mailing-list-unsubscribe`
191+
192+ [Mailto](https://www.rfc-editor.org/rfc/rfc6068) link for unsubscribing from a mailing list.
193+
194 ## Example Multi-Repository Query
195
196 A [WebFinger](https://webfinger.net/spec/) query may be used to identify
197 @@ -174,7 +222,7 @@ detailed information about a public repository at a particular forge. Here is
198 an example response about a fictitious project which has two code repositories
199 associated with it as well as chat links, and a bug tracking system.
200
201- `GET https://example.org/.well-known/webfinger?resource=project:spartacus`
202+ GET https://example.org/.well-known/webfinger?resource=project:spartacus
203
204 ```json
205 {
206 @@ -238,7 +286,8 @@ associated with it as well as chat links, and a bug tracking system.
207 "en-us": "Implementation of the Spartacus Text Adventure game"
208 },
209 "properties": {
210- "http://forge-feed.org/rel/repository-uri": "repository:spartacus/game"
211+ "http://forge-feed.org/ns/repository-uri": "repository:spartacus/game",
212+ "http://forge-feed.org/ns/vcs-type": "git"
213 }
214 },
215 {
216 @@ -248,7 +297,8 @@ associated with it as well as chat links, and a bug tracking system.
217 "en-us": "Promotional Website for the Spartacus Game"
218 },
219 "properties": {
220- "http://forge-feed.org/rel/repository-uri": "repository:spartacus/www"
221+ "http://forge-feed.org/ns/repository-uri": "repository:spartacus/www",
222+ "http://forge-feed.org/ns/vcs-type": "git"
223 }
224 }
225 ]
226 @@ -270,7 +320,8 @@ Here is an example of a project with only a single repository associated with it
227 "en-us": "Baz Qux"
228 },
229 "properties": {
230- "http://forge-feed.org/rel/repository-uri": "repository:fuu/bar"
231+ "http://forge-feed.org/rel/repository-uri": "repository:fuu/bar",
232+ "http://forge-feed.org/rel/vcs-type": "git"
233 }
234 }
235 ]
236 diff --git a/content/webfinger-repository.md b/content/webfinger-repository.md
237index 26c75e0..b751cc0 100644
238--- a/content/webfinger-repository.md
239+++ b/content/webfinger-repository.md
240 @@ -58,27 +58,22 @@ def to_string(slug, domain=None):
241 return quote_plus(f"repository:{slug}")
242 ```
243
244- ### Properties
245
246- #### http://feed-forge.org/ns/vcs-type
247+ ### Relation Types
248
249- Identifies VCS types, valid strings are:
250+ The following [Relation Types](https://datatracker.ietf.org/doc/html/rfc7033#section-4.4.4.1) are
251+ available for use within a repository resource.
252
253- bzr (GNU Bazaar) bazaar.canonical.com
254- darcs (Darcs) darcs.net
255- fossil (Fossil) fossil-scm.org
256- git (Git) git-scm.com
257- hg (Mercurial) mercurial-scm.org
258- pijul (Pijul) pijul.org
259- svn (Apache Subversion) subversion.apache.org
260-
261- #### http://feed-forge.org/ns/spdx-identifier
262-
263- Refers to a valid SPDX identifier, see [license-list](https://spdx.org/licenses/)
264-
265- ### Link Extension Types
266+ ```
267+ http://forge-feed.org/rel/avatar
268+ http://forge-feed.org/rel/clone
269+ http://forge-feed.org/rel/description
270+ http://forge-feed.org/rel/label
271+ http://forge-feed.org/rel/license
272+ http://forge-feed.org/rel/ticketing-system
273+ ```
274
275- #### Avatar
276+ #### `http://forge-feed.org/rel/avatar`
277
278 Forges that allow users to configure a logo can expose this information as
279 an avatar for use in other applications.
280 @@ -90,18 +85,22 @@ an avatar for use in other applications.
281 }
282 ```
283
284- #### Homepage
285+ #### `http://forge-feed.org/rel/clone`
286
287- Link to an HTTP representation of the repository.
288+ Clone links define how one can download a copy of the remote
289+ software onto their own server.
290
291 ```json
292 {
293- "rel": "http://feed-forge.org/rel/homepage",
294- "href": "https://example.org/spartacus/game"
295+ "rel": "http://feed-forge.org/rel/clone",
296+ "href": "https://example.org/example/spartacus",
297+ "properties": {
298+ "http://feed-forge.org/ns/vcs-type": "git"
299+ }
300 }
301 ```
302
303- #### Description
304+ #### `http://forge-feed.org/rel/description`
305
306 A short text representation of the repository.
307
308 @@ -115,9 +114,22 @@ A short text representation of the repository.
309 }
310 ```
311
312- #### License
313+ #### `http://forge-feed.org/rel/label`
314+
315+ A short text based category which can be used for searching.
316+
317+ ```json
318+ {
319+ "rel": "http://forge-feed.org/rel/label",
320+ "properties": {
321+ "http://feed-forge.org/ns/label": "text-adventure"
322+ }
323+ }
324+ ```
325+
326+ #### `http://forge-feed.org/rel/license`
327
328- A license SPDX identifier and link to the license's full text.
329+ A license [SPDX identifier](https://spdx.org/licenses/) and link to the license's full text.
330
331 ```json
332 {
333 @@ -129,28 +141,57 @@ A license SPDX identifier and link to the license's full text.
334 }
335 ```
336
337- #### Clone Links
338+ #### `http://forge-feed.org/rel/ticketing-system`
339
340- Clone links define how one can download a copy of the remote
341- software onto their own server.
342+ Links to issue tracking systems.
343
344 ```json
345 {
346- "rel": "http://feed-forge.org/rel/clone",
347- "href": "https://example.org/example/spartacus",
348- "properties": {
349- "http://feed-forge.org/ns/vcs-type": "git"
350- }
351+ "ref": "http://forge-feed.org/rel/ticketing-system",
352+ "href": "https://example.org/bugs",
353 }
354 ```
355
356+ ### Property Identifiers
357+
358+ The following [property identifiers](https://datatracker.ietf.org/doc/html/rfc7033#section-4.4.3) are available
359+ for use within a project resource.
360+
361+ ```
362+ http://forge-feed.org/ns/label
363+ http://forge-feed.org/ns/project-uri
364+ http://forge-feed.org/ns/spdx-identifier
365+ http://forge-feed.org/ns/vcs-type
366+ ```
367+
368+ #### `http://forge-feed.org/ns/label`
369+
370+ A short text based category which can be used for searching.
371+
372+ #### `http://feed-forge.org/ns/spdx-identifier`
373+
374+ Refers to a valid SPDX identifier, see [license-list](https://spdx.org/licenses/)
375+
376+ #### `http://feed-forge.org/ns/vcs-type`
377+
378+ Identifies VCS types, valid strings are:
379+
380+ bzr (GNU Bazaar) bazaar.canonical.com
381+ darcs (Darcs) darcs.net
382+ fossil (Fossil) fossil-scm.org
383+ git (Git) git-scm.com
384+ hg (Mercurial) mercurial-scm.org
385+ pijul (Pijul) pijul.org
386+ svn (Apache Subversion) subversion.apache.org
387+
388+
389 ## WebFinger Query
390
391 A [WebFinger](https://webfinger.net/spec/) query may be used to identify
392 detailed information about a public repository at a particular forge. Here is
393 an example response about a fictitious repository:
394
395- `GET https://example.org/.well-known/webfinger?resource=repository:spartacus/game`
396+ GET https://example.org/.well-known/webfinger?resource=repository:spartacus/game
397
398 ```json
399 {