JADE/Content schemas

This page records a set of complete proposals for content schemas for use in JADE. Content schemas are JSON blobs that represent a set of judgments about an entity (E.g. a revision, a diff, a page, a user, etc.).

Multi-judgement with endorsements
This represents an iteration of the original schema that Halfak put together in summer of 2017. The general rational is that propositions (judgments) are supported or not though !votes (endorsements) and that this pattern is captured in the data structure itself and thus is open to machine analysis. Users may provide a comment explaining their endorsement. Judgments can be further described with a set of notes (that may contain hashtags or links for the construction of a folksonomy and use in grounded theory).

judgments: "editquality": judgments: (list) - data: damaging: true/false goodfaith: true/false preference: true/false notes: (Free text rendered like a wikitext comment) endorsements: (list) - user_id: (user ID) / ip: (IP address) comment: (Free text rendered like a wikitext comment) origin: (Free text, like a User-Agent, E.g. Special:Diff, Huggle-3, or Wikilabels)

Single-judgment
This represents a highly simplified version of Multi-judgement with endorsements that collapsed everything down to a single judgment. The idea is that straw polls and filing disagreement would happen via BRD and thus not be machine readable. This also removes the ability to explore who/where a judgement was provided from. By focusing on the consensus judgment directly, the system and interaction patterns can be kept much more simple and straightforward.

judgments: "editquality": data: damaging: true/false goodfaith: true/false notes: (Free text rendered like a wikitext comment)

Bucket of judgments
This represents an effort to directly support the pipeline between systems like Wikilabels and JADE—to allow "append-only" workflows. The general rationale is to drop the constraints of consensus patterns at a schema level so that any workflow can "just dump judgment" into JADE.


 * Note: It's not clear whether or not user_id and origin were part of this initial proposal. They were later added by Halfak when trying to reconstruct history.

judgments: "editquality": judgments: (list) - data: damaging: true/false goodfaith: true/false preference: true/false notes: (Free text rendered like a wikitext comment) user_id: (user ID) / ip: (IP address) origin: (Free text, like a User-Agent, represents where the user was when endorsing/submitting a judgement. E.g. Special:Diff, Huggle-3, or Wikilabels)

Freeform wikitext
This is schema-free, using Judgment pages as the platform, with the primary goal of facilitating open-ended editor collaboration. Templates and hashtags could be used to improve machine readability. Database indexes would be provided, making it easier to match Judgment pages with their target wiki entities.

The Scoring Platform team has consensus to include some amount of formally structured content, so this is a poor alternative.

Content page and JSON slot
In this schema, pages in the judgment namespace are written in wikitext, and carry a Multi-Content Revision slot with additional, structured judgment data. The wikitext Judgment and Judgment_talk namespaces can be used to produce a consensus opinion and discussion respectively, while the JSON is filled in with a machine-readable conclusion.

Editors can read and write to the content page and the JSON slot directly, or via components embedded in a structured-data edit UI.

(narrative form of judgments justifications, notes, non-ephemeral observations and material incorporated from the talk page.)
 * Main Slot (wikitext)

judgments: "editquality": (list) - data: damaging: true/false goodfaith true/false endorsements (single or list) - rank: preferred/normal/deprecated user: proposition_rev (Edit of the proposition being endorsed.) endorsement_rev Revision where the author declares their endorsement. (Might point to a Judgment_talk edit or a Judgment edit.               This revision identifies the user and other metadata about the tooling and context.                Updating the endorsement content can result in a new endorsement if the                proposition is updated as well.)
 * Content slot (JSON)

Content page as JSON field
This is the "endorsements" schema combined with a "content page" of top-level notes, emulated using a JSON field. The purpose of this top-level field is to provide a wide margin of rich, collaborative practices. We use a JSON field rather than a wikitext main slot as a compromise, to avoid the risks of MCR's technological bleeding-edge unknowns.

During experimentation we can present the field's contents as if it were a page, or as its own input field, as needed.

notes: (narrative form of judgments justifications, notes, non-ephemeral observations) judgments: "editquality": (list) - data: damaging: true/false goodfaith true/false endorsements (single or list) - rank: preferred/normal/deprecated user: proposition_rev (Edit of the proposition being endorsed.) endorsement_rev Revision where the author declares their endorsement. (Might point to a Judgment_talk edit or a Judgment edit.           This revision identifies the user and other metadata about the tooling and context.            Updating the endorsement content can result in a new endorsement if the            proposition is updated as well.)
 * Main Slot (wikitext)