======= Ticket proliferation disambiguration!
- {T185233} is the overall Modern Event Platform parent ticket.
- {T201063} is the parent Event Schema Registry task, it describes high level requirements/user stories of this component.
- {T201643} is the RFC ticket, it will hopefully be closed once the RFC process finishes.
This ticket will be used to track and task implementation work for the Stream Intake Service.
== Description
Since we are moving forward with git as the canonical storage of schemas, we can base implementation to be done for Q2 2018-2019 on the existing [[ https://gerrit.wikimedia.org/r/#/admin/projects/mediawiki/event-schemas | event-schemas repository ]]. This repository currently contains Draft 4 JSON schemas with some minimal CI jobs to ensure schema consistency. Implementation work for this task will mostly be around git commit/merge hooks and CI improvements.
We also may want to build an HTTP service to serve schemas. If so, this service might be as simple as just an HTTP file server that exposes the git repository (or repositories) hierarchy and schemas.
In either case, schemas will always be addressable via URIs, whether those schemas are checked out on the local filesystem (`file://`) or via HTTP (`http://`).
== Technical Requirements
- Up to date JSONSchema support (Draft 7?)
- All schema versions maintained in HEAD commit (we won't be using git history to version schemas)
- CI for ensuring that schemas all have consistent `meta` field
- CI for ensuring schema backwards compatibility
- CI for schema linting, e.g. no camelCase, only snake_case, etc.
- 'latest' schema version is editable and changes to it are reviewable using usual git review tools
- Post commit or merge git hooks to create new versioned file copies of schemas
- Schemas can be in YAML or JSON format, but files should not have file extensions so relative schema_uris don't need to include (or append) a proper file extension