Where Pages Live

We describe where the json representing a wiki page can be stored and how pages move between these stores.

Representation

A wiki page is a json object with members for title, story and journal. All are optional so {} can be a page, but [] cannot.

A title is expected to be a string which can be converted into a slug. Titles of various capitalization will produce the same slug. Stores often index pages by their title's slug. The slug of a slug is the slug.

We think of a page as being json even when it has been parsed into some host system's object representation. Good practice does this parsing as soon as possible.

Residence

Servers managing a single site or a farm.

Servers on the internet, an intranet, or a private computer.

Local Storage in an html5 browser.

DOM elements of class 'page'.

Create actions within the journal of a later version.

Importer scripts and the files they read.

HTML text cached somewhere in the web from a server-side rendering.

Transport

A browser gets a page from a server in response to a GET request, often via ajax.

A browser puts updates to a page by sending actions that can be interpreted by the server, presumably via ajax.

A browser writes whole pages to its own local storage when it cannot save edits on a remote machine.

A browser puts a bundle of pages, usually changes, usually stored in new space on a farm.

A browser gets a page from a remote server via CORS request.

A browser gets a page from a remote server via the origin server acting as a proxy.

An administrator moves pages or whole sites by scp or related mechanisms.

An importer runs and writes, typically, to page space of a private computer.

An importer runs automatically and writes to page space of a public server.

An importer adds its constructed story to a create action in the journal.

An importer retrieves previously constructed pages so as to preserve previous creates that exist in those journals.

Fork

A fork involves retrieving a page from one store and saving it in another store where it can be updated independently from its source.

A fork should be recorded as a fork action in the journal. This satisfies the attribution requirement of the creative commons attribution, share-alike license.

Caching a page for more efficient access is not a form of forking.

Publishing a page from a private staging location is not a form of forking.

Saving a page in browser local storage hasn't been, but probably should be considered a fork.