Wikimedia Apps/Team/MEP dev process

'''MEP schema creation and modification process for apps '''

Repositories involved:

Use schemas/event/secondary repo to create new schemas or to alter existing ones. Repo settings: https://gerrit.wikimedia.org/r/admin/repos/schemas/event/secondary

Each time you create a new schema, remember to add it to the mediawiki config: Repo settings: https://gerrit.wikimedia.org/r/admin/repos/operations/mediawiki-config

Steps to create a new schema:

https://wikitech.wikimedia.org/wiki/Event_Platform/Schemas/Guidelines#Conventions https://wikitech.wikimedia.org/wiki/Event_Platform/Schemas/Guidelines npm run build-new jsonschema/analytics/mobile_apps/android_article_link_preview_interaction/current.yaml and make sure you use the current package name, and verify that the commit hook kicked-in and generated the other files on the schema folder https://wikitech.wikimedia.org/wiki/Event_Platform/Instrumentation_How_To#Stream_Configuration If you’ve made these changes in InitialiseSettings.php, you’ll need to schedule a Backport window deployment to sync out your config change to the production cluster. See Deployments and Backport windows for instructions. Note: There will be no +2 or merge on this patch, it will be done during deployment Make sure you use the stream name you just created. If the schema is not deployed correctly, you will see an empty response, or else you will see a full response like above link.
 * 1) Clone the schemas/event/secondary  repo with the msg-commit hook so that the Change-Id is added to the commit message automatically
 * 2) Create a new folder under jsonschema/analytics/mobile_apps for the schema you are about to create. Name it with care. This will be the name of the schema. Android app uses the android_ prefix to the name, IOS uses ios_ prefix.
 * 3) You only need to create the current.yaml file, the rest of them get created during your commit. For the pre-commit and commit hooks to be installed use npm install before making any commits.
 * 4) Things to remember while creating the field of the schema
 * Indentation is very important
 * Field name conventions
 * Acclimatize yourself with the general guidelines for schemas:
 * 1) Commit your changes with `npm run`
 * 1) Push it for review : git review -R
 * 2) To create a stream config for the schema that you newly created, Add this to the mediawiki-config by making a config change PR like this: https://gerrit.wikimedia.org/r/c/operations/mediawiki-config/+/639284
 * 3) The secondary schema changes are immediately deployed when they get merged, but the config changes will have to be deployed. Quoting from the instructions I received:
 * 1) When you are incharge of your deployment window, you need to be available on irc on Libera.Chat[make sure of this, and don’t be on freenode], in #wikimedia-operations channel. For eg: if your deployment window is 11amPST, just log into the channel and announce that you are available for your patch to be deployed.
 * 2) You will need to test if the changes took. We can use this to check the schema we just created: https://meta.wikimedia.org/w/api.php?action=streamconfigs&streams=android.daily_stats&all_settings=1
 * 1) For more guidance, the Event_Platform schemas page is very helpful: https://wikitech.wikimedia.org/wiki/Event_Platform/Schemas

'''Updating an existing schema: ''' For any schema changes, you will need to update its minor/major version number depending on how big the change is. You can see an example patch where a new field was added to an existing schema here: https://gerrit.wikimedia.org/r/c/schemas/event/secondary/+/766897 Use npm run build-modified for modifying existing schemas instead of npm run build-new Also refer to this if you need further guidance: https://wikitech.wikimedia.org/wiki/Event_Platform/Schemas#Modifying_schemas