Federated repositories

git://pixelhero.dev/allowchain

Allowchain

“A production, rapid-access, federated blockchain metadata Web application”

Allowchain is a set of rc scripts implementing a very simple federation of git repositories. See below for the protocol format, and here for the official pixelhero.dev list.

Git is, technically, a blockchain: its core is a linked list in which each node contains the hash of its parent. Allowchain produces static web content containing federated git metadata. As such, “production, rapid-access, federated blockchain metadata web application” is technically correct; the point is to show how meaningless every part of that tagline is.

Allowchain also refers to the protocol these scripts implement; any tool implementing the protocol is free to use the name.

Protocol

Allowchain is a simple protocol for aggregation / federation of arbitrary content using plain text.

The first line in a listing file MUST contain the seven-byte string ‘LISTFED’ exactly. Every succeeding line in a listing file MUST either be blank or contain one entry.

The requirement for an exact first line is to make it easy to ignore bad lists / dead links found during federation.

An entry is a type followed by a URL.

A type is any series of UTF-8 that does not contain a plain space(‘ ’) or a newline, though other whitespace is allowed.

A single space separates the type and the URL.

The URL ends at the line end.

Clients MUST ignore unrecognized types and URLs they cannot handle.

Two types are predefined: ‘list’ and ‘git’. A URL of type list specifies that path to another listing file which should also be handled. Clients MUST not handle the same list multiple times even if a list is found recursively. A URL of type ‘git’ specifies a git repository.

Clients MUST deduplicate exact git repositories. They MAY deduplicate mirrors as well.

That is, if git://foo.bar/baz.git is found in two listing files, it must be treated as if it was only seen once. If, however, git://foo.bar/baz.git and git://baz.foo/bar.git are both found, and they happen to be identical repositories, clients are NOT required to deduplicate them, though they are permitted to do so.

Other potential uses for federation include federated user profiles, blogs, contact lists, and so on.