Extension:GrowthExperiments/Technical documentation

Configuration
GrowthExperiments extension can be configured at different levels:


 * (Privileged users) Editing configuration settings in . For a complete list of GrowthExperiments configuration settings see TBD
 * (Privileged users) Changing configuration settings available through the Extension:GrowthExperiments/Technical_documentation/Special:EditGrowthConfig
 * (Users) Users can enable and disable some of the GrowthExperiments features using their on-wiki preferences.

Special:Homepage
General overview: Growth/Personalized first day/Newcomer homepage

is a special page that is the entry point for Growth features. Here are the available modules ("modules" is used more generically here as separate units of functionality, not to be confused with ResourceLoader modules).

Relevant files

ResourceLoader modules


 * On mobile, some homepage module has two modes: mobile details and mobile summary. The summary mode is shown on Special:Homepage and the details mode is shown in an overlay (when JS is used, otherwise it is shown as a separate page; see for more details). This module sets up the overlays.
 * JS files for modules that are always enabled (modules that are conditionally enabled are in separate ResourceLoader modules so that they can be conditionally included as well)
 * CSS for server-side rendered modules (CSS for JS-only components are bundled with the respective ResourceLoader modules)
 * JS files for modules that are always enabled (modules that are conditionally enabled are in separate ResourceLoader modules so that they can be conditionally included as well)
 * CSS for server-side rendered modules (CSS for JS-only components are bundled with the respective ResourceLoader modules)
 * CSS for server-side rendered modules (CSS for JS-only components are bundled with the respective ResourceLoader modules)
 * CSS for server-side rendered modules (CSS for JS-only components are bundled with the respective ResourceLoader modules)
 * CSS for server-side rendered modules (CSS for JS-only components are bundled with the respective ResourceLoader modules)

PHP


 * Construct HTML for each module
 * Handle dependency injection for each module
 * Construct HTML for each module
 * Handle dependency injection for each module
 * Handle dependency injection for each module
 * Handle dependency injection for each module

Suggested Edits
General overview: https://www.mediawiki.org/wiki/Growth/Personalized_first_day/Newcomer_tasks

"Suggested edits" is a module within Special:Homepage that provides users with editing tasks based on certain topics and difficulty levels. There are currently two types of tasks: unstructured and structured. Unstructured tasks are based on maintenance template(s) within an article (for example: " Tone " template for copyedit task). Structured tasks are based on machine suggestions (for example: images to be added to an article).

Relevant files

ResourceLoader modules


 * Enhance server-side rendered suggested edits module with the ability to select topics and task types via filters
 * Executed with each page load; used to keep track of whether the user is in the middle of a task or has just completed the task
 * Loaded via SuggestedEditSession; used to show a dialog after the user has completed a task
 * Set up suggested edits mobile summary module
 * Manage states for the task queue and the filters
 * Emit events when the state changes so that the UI can be updated (modeled after Vuex store)
 * Set up suggested edits mobile summary module
 * Manage states for the task queue and the filters
 * Emit events when the state changes so that the UI can be updated (modeled after Vuex store)
 * Manage states for the task queue and the filters
 * Emit events when the state changes so that the UI can be updated (modeled after Vuex store)

PHP


 * Generate the set of tasks for the user; handle task completion
 * Server-side rendering of the suggested edits module
 * Handle user preferences & opting users into Growth features
 * Output configuration variables needed by JavaScript code
 * Update navigation generated by skins to point to Special:Homepage
 * Generate virtual files needed by ResourceLoader modules
 * Output configuration variables needed by JavaScript code
 * Update navigation generated by skins to point to Special:Homepage
 * Generate virtual files needed by ResourceLoader modules

Features


 * Topic selection: The user can filter tasks by topics in which they are interested.
 * Topic selection is enabled via the configuration.
 * The topic of the article can be determined in two ways: "morelike" (based on search) and "ores". This can be configured via.
 * "morelike" can be configured via  and "ores" via.
 * When there are multiple topics selected, the results are matched to any of the selected topics (OR). To match all of the selected topics (AND), this feature can be enabled via.
 * Task type selection: The user can filter tasks by difficulty level (easy/medium/hard).
 * The difficulty level for each task type is specified in the MediaWiki page with title set via.

Structured Tasks

 * Overview of how structured tasks integrate with VisualEditor
 * Add a link
 * Add an image

Campaigns
The GrowthExperiments extension has a set of features to support Campaigns in the Wikimedia community.

Customized Special:CreateAccount page
The GrowthExperiments extension allows the creation of customized Special:CreateAccount pages.

List of configuration options
Each configuration option is shown without the  prefix for brevity; add it when using, ie:.