Multi-Content Revisions/Glossary

Some central terms used in the context of the Multi-Content Revisions proposal:
 * page: a named location on the wiki, with versioned content. A page has a sequence of revisions (the page's "history"), and may have multiple streams.
 * revision: one version of a page as created by an edit. A revision belongs to exactly one page, and has one (or none) parent revision. A revision has at least one main slot, and optionally one additional slot per each defined content role.
 * slot: the association of a content object with a revision for a given role.
 * stream: a sequence of slots that have the same role and are all associated with revisions of the same page. If revisions of some page have a "main" and a "foo" slot, that page is said to have a "main" and a "foo" stream.
 * role: the purpose a given content object has for a revision. Besides the "main" role which must alway be present, there may be roles for content that represents the categories or a page, or quality information, or a blame map, etc.
 * content: a self-contained document, representing the information associated with a slot.
 * primary content: content that is used-created and cannot be re-created from other slots (e.g. the article text).
 * derived content: content that was derived from content in other slots and is not user-editable (e.g. a blame map).
 * content object: the content as a logical unit, with the model known but the format undefined; in PHP, an object compatible with the Content interface.
 * content blob: the serialized form of a content object, without any meta-information. Cannot be read without knowing format and model. Cannot be used without knowing the role.
 * content model: the schema or interpretation used to construct a content object from a raw decoding of a content blob. E.g. geo-json or wikidata-item, both of which use text/json as their serialization format.
 * content format: the serialization format (as a MIME type). This is sufficient for decoding a content blob to some raw data structure, but is not sufficient to interpret that structure ("text/json" says nothing about how the data shall be interpreted).
 * blob: A potentially large binary string stored in an arbitrary location, accessible via an address (read: URL). Blobs are immutable.