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 specific role in a given revision
 * Slots are considered either primary, derived, or virtual, depending on whether they refer to primary, derived, or virtual content (see below).
 * main slot: the slot with the "main" role. This is always defined for any revision, and is always a primary slot. It will be used per default in places where legacy code expects only one content object to be associated with a revision.
 * 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). The primary slots of a revision can be enumerated.
 * derived content: content that was derived from content in other slots and is not user-editable (e.g. a blame map). Derived content is generated/updated when primary content is edited. It's not required for the derived slots of a revision to be enumerable.
 * virtual content: content that can be derived from other slots on demand, and may not be stored in the database at all. It's not possible to enumerate virtual slots associated with a revision.
 * 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).
 * content meta-data: information about the content of a slot, such as content format, model, and hash.
 * blob: A potentially large binary string stored in an arbitrary location, accessible via an address (read: URL). Blobs are immutable.