JADE/Implementations

This page describes a set of thoughts about implementations of JADE that correspond to a set of use-cases. See T166053 for the tracking task.

System overview

 * REST HTTP API
 * Accessible from the public Internet
 * Allows all relevant operations (save/update judgement, suppress comment, etc.)
 * Integrates with MediaWiki authentication (OAuth2)
 * Queryable in some basic ways (e.g. give me all judgements for an artifact)
 * Note that the API will only be able to access artifacts by their primary ID, we cannot join e.g. on page_id to get all judged revisions of that page.
 * ORES integration
 * Provides fast access to judgements to integrate with ORES predictions (ORES response time for cached scores is ~50ms. We shouldn't be slower than 100ms)
 * Some concept of overlap between ORES models/scores and JADE artifacts. Judgments if they are available should be returned along with regular score requests.
 * Public query-ability
 * Users are able to run SQL (or similarly easy query language) that joins judgements with production database tables.
 * Queries can be run from the public Quarry interface.
 * Curation activities
 * A feed/stream of recent judgments for curation work
 * Users will be able to suppress comments and usernames that are offensive or violate privacy.

Auditing

 * Reporting problems with ORES
 * Grounded theory
 * Effective refutation of ORES predictions
 * Showing improvements in ORES

Label storage

 * Judgments can be used as our label store
 * Improve labels by directing attention to borderline cases

Replicated data
We want a data store which can be efficiently queried by the ORES backend. This does't have to be the only store, or even the authoritative master. Using a messaging system like EventBus would allow us to mirror the data to everywhere that we might need it.

ContentHandler
We could get a lot of MediaWiki UI for free, by implementing the frontend as a ContentHandler. This would also come with additional complications, however. For example, we would have to translate the "page" history into a series of new judgments when the score changes, in