-# Status.git
+# x_status_git
-A minimal git‐based self‐hosted status publishing solution.
+A minimal git‐based microblog.
## What It Is
## Server Configuration
Your server should be configured to serve the following files from the
- provided `PUBLIC_DIRECTORY` in response to the following requests :—
+ provided `PUBLIC_DIRECTORY` in response to the following requests.
+For people using Caddy to serve their content, a sample `Caddyfile` is
+ included in this repository.
### H·T·M·L responses
+ **`GET /`**:
Serve the file at `/index.html`.
+ A `Link` header with the value
+ `</about.jsonld>;rel=meta;type="application/ld+json"` (or
+ equivalent) **must** be provided.
+
+ + **`GET /about`**:
+ Serve the file at `/.about.html`.
+ A `Link` header with the value
+ `</about.jsonld>;rel=meta;type="application/ld+json"` (or
+ equivalent) **must** be provided.
+ **`GET /statuses`**:
Serve the file at `/.statuses.html`.
`</statuses.jsonld>;rel=meta;type="application/ld+json"` (or
equivalent) **must** be provided.
- + **`GET /$YYYY-MM`** (where `$YYYY-MM` is an `xsd:gYearMonth`):
+ + **`GET /statuses/$YYYY-MM`** (where `$YYYY-MM` is an `xsd:gYearMonth`):
Serve the file at `/.topic.html`.
A `Link` header with the value
`</$YYYY-MM.jsonld>;rel=meta;type="application/ld+json"` (or
equivalent) **must** be provided.
- + **`GET /$YYYY-MM/*`** (where `$YYYY-MM` is an `xsd:gYearMonth`):
+ + **`GET /statuses/$YYYY-MM/*`** (where `$YYYY-MM` is an `xsd:gYearMonth`):
Serve the file at `/.status.html`.
A `Link` header with the value
`</$YYYY-MM.jsonld>;rel=meta;type="application/ld+json"` (or
`</$TOPIC.jsonld>;rel=meta;type="application/ld+json"` (or
equivalent) **must** be provided.
+### X·H·T·M·L responses
+
+These responses **must** be served with a `Content-Type` of
+ `application/xhtml+xml` (or equivalent).
+Note that these paths **do not** have a trailing slash.
+
+ + **`GET /$IRI`** (where `$IRI` contains a colon and no slash):
+ Serve the file at `/.lookup.xhtml`.
+ This can be used to look up statuses by their identifier.
+
### Json‐L·D responses
These responses **should** be served with a `Content-Type` of
In all cases, for `/$PATH.jsonld`, this just serves the file at
`/$PATH/index.jsonld`.
+ + **`GET /about.jsonld`**:
+ Serve the file at `/about/index.jsonld`.
+
+ **`GET /statuses.jsonld`**:
Serve the file at `/statuses/index.jsonld`.
- + **`GET /$YYYY-MM.jsonld`** (where `$YYYY-MM` is an
+ + **`GET /statuses/$YYYY-MM.jsonld`** (where `$YYYY-MM` is an
`xsd:gYearMonth`):
Serve the file at `/$YYYY-MM/index.jsonld`.
`[0-9A-Za-z_-]+`):
Serve the file at `/topics/$TOPIC/index.jsonld`.
+### Atom responses
+
+These responses **should** be served with a `Content-Type` of
+ `application/atom+xml`.
+In all cases, for `/$PATH.atom`, this just serves the file at
+ `/$PATH/index.atom`.
+
+ + **`GET /statuses.atom`**:
+ Serve the file at `/statuses/index.atom`.
+
+ + **`GET /statuses/$YYYY-MM.atom`** (where `$YYYY-MM` is an
+ `xsd:gYearMonth`):
+ Serve the file at `/$YYYY-MM/index.atom`.
+
+ + **`GET /topics/$TOPIC.atom`** (where `$TOPIC` matches
+ `[0-9A-Za-z_-]+`):
+ Serve the file at `/topics/$TOPIC/index.atom`.
+
### Other Headers
All responses **should** have a `Access-Control-Allow-Origin` header
The contents of this file **must** give the author’s URL,
optionally followed by a trailing newline.
+ + **`2=TITLE`** (where `TITLE` might be anything):
+ This file is **optional** and indicates the title of the status.
+ The value of `TITLE` **should** be a file·system‐friendly version
+ of the title, but is ignored.
+ The contents of this file **must** give the title of the status,
+ optionally followed by a trailing newline.
+
+ **`3=YYYY-MM-DD`** (where `YYYY-MM-DD` is a date):
This file is **required** and indicates the date of the status.
Only one date is currently supported.
Files with names that begin with the strings `2=` or `x_status_git_`
are reserved for backwards‐compatible extensions.
-Status.git has no opinion on how these files make their way into the
+x_status_git has no opinion on how these files make their way into the
Git repository, except that all the files for a single status should
be added in the same commit.
The intention is that the simple nature of these files will make them
## I Am Computer, How Do I Get Status?
Assume you are given a U·R·L `resource_url` which you think points to
- some kind of Status.git resource.
+ some kind of x_status_git resource.
Start by resolving it as follows :—
01. Make a `HEAD` request to `resource_url`.
+ If the `@type` is or contains `Thread`, the resource is a
collection of statuses.
-The items in the collection may be determined through one of the
- following methods :—
+ + If the `@type` is or contains `Microblog`, the resource describes
+ this site as a whole.
+ The `streams` property will contain a list of available `Forum`s
+ and `Thread`s, as objects with an `@id` and `@type`.
- + If the `@type` is or contains `OrderedCollectionPage`, then its
- `items` will be an array of resources.
+The items in the collection (`Forum` or `Thread`) may be determined
+ through one of the following methods :—
+
+ + If the `@type` is or contains `CollectionPage` or
+ `OrderedCollectionPage`, then its `items` will contain resources.
This is a partial collection, and the `prev` and `next` properties
can be used to access further items from the parent collection
(indicated by `partOf`).
+ `first` and `current`, in this scenario, point “horizontally” to
+ the first and latest pages of items, not to subpages.
- + If the `@type` is or contains `OrderedCollection`, and the resource
- has `first` and `current` properties, then the `items` property
- will not be present.
+ + If the `@type` is or contains `Collection` or `OrderedCollection`
+ and the resource has `first` and/or `current` properties, then
+ the `items` property will not be present.
`first` and `current` can be accessed to provide
- `OrderedCollectionPage`s listing the items of the collection as
- above.
+ `OrderedCollectionPage`s listing the items of the collection.
+ Otherwise, the `items` property will contain every item in the
collection.
+ **`subject`** [`dcterms:subject`] (optional):
The topic of the status, for topic statuses.
+ + **`title`** [`dcterms:title`] (optional):
+ The title of the status.
+
+ **`content`** [`sioc:content`]:
The content of the status, as an `rdf:XMLLiteral`.