webring++ is a logical extension of 1990s webring.
This spec provides a language-agnostic explanation of how to join a webring++.
In a traditional webring, websites in the collection form a linked list. Inserting into a linked list requires:
- Creating a new node
nwith back pointer ton - 1and forward pointer ton + 1 - Adjusting
n - 1's forward pointer to ben - Adjusting
n + 1's back pointer to ben
In a webring++, there is no ring at all - we instead abstract the idea to a digraph.
Each site in the webring++ points to zero or more other sites.
As such, to join an existing webring++, you just need one of the other nodes to add your site to its forward set.
webring++ only specifies forward links.
webring++ clients can choose how to read, render, walk, or otherwise ignore members of the digraph.
To host forward links in webring++, you must host an endpoint that serves JSON matching the schema indicated below.
webring++ endpoints are scoped by hostport, which means that the following are all the same:
a.com:8080/webring++.jsonhttps://a.com/webring++.json
The following are not valid, and are ignored:
a.com/blog/webring++.jsongeocities.blog/blakeh/webring++.json
The following are all valid, but fall into different hostports and so do not collide (they exist in parallel):
blog.coolwebshit.com/webring++.jsonforums.coolwebshit.com/webring++.jsonanything.else.really.coolwebshit.com/webring++.json
The top-level /webring++.json endpoint should serve JSON with the following schema:
| Key | Description |
|---|---|
version |
Number. Valid value is 0 or 1. |
links |
List of Strings. Each string should be a URI which represents a forward link. Anything after port should be ignored by the client. |
Clients must permit deserialisation of unknown object keys for forward-compatibility.