From the measurement specification draft:
# General
## What percent of users access the homepage?
### What percent of those users access the homepage multiple times?
### When users access the homepage multiple times, over what timeline does that happen?
### Are there differences between mobile and desktop users?
## How soon after creating their account does a user first visit the homepage?
## How do users get to the homepage?
### By clicking on their username in the top navigation?
### By clicking on the tab from their User or User talk page?
### Via another driver, such as a banner on wiki or link in an email?
### If the user clicked on a link to the Homepage from the top navigation or a tab, we want to capture the context they were in. Specifically, we want to know what namespace they were in when they clicked it, and whether they were reading or editing.
## How much time do users spend on the homepage per visit?
### During their first visit?
### During subsequent visits?
## What percent of users follow links from at least one module? (covered by T219435)
## Are users who have access to the homepage more or less likely to create a user page?
## Are users who have access to the homepage more or less likely to interact with other users through user talk pages?
## Are users who have access to the homepage more or less likely to interact with the community through article and project talk pages?
# Overall rules
#* We will record an impression event every time a user visits the home page.
#** For these events, we will also capture a list of the modules that are rendered.
#** We will also capture impression events for specific modules as listed below in order to gather metadata relevant to the analysis of those modules.
---
Proposed schema, to be logged-to from the `execute()` method in `Special:Homepage`.
``` lang=json
{
"description": "Log visits to Special:Homepage (provided by Extension:GrowthExperiments) from the server-side.",
"properties": {
"is_mobile": {
"type": "boolean",
"required": true,
"description": "If the event is associated with the mobile web frontend."
},
"http_response_code": {
"type": "number",
"required": true,
"description": "HTTP response code associated with the event."
},
"query": {
"type": "string",
"required": false,
"description": "The query string associated with the event."
},
"referer": {
"type": "string",
"required": false,
"description": "The MediaWiki Title (e.g. Main_Page) that is the referer to this page."
},
"referer_namespace": {
"type": "number",
"required":false,
"description": "The namespace associated with the MediaWiki Title (e.g. 0, for Main_Page) that is the referer to this page."
},
"referer_action": {
"type": "string",
"required": false,
"enum": [
"view",
"edit"
],
"description": "The action associated with the user activities on the MediaWiki Title that is the referer to this page."
},
"user_id": {
"type": "integer",
"required": true,
"description": "User ID, needed for tracking across login sessions."
}
}
}
```
Open questions:
1. Re: `How much time do users spend on the homepage per visit?` there are downsides to both the possible server-side and client-side implementations of this, with many caveats about what any data recorded would tell us. We should discuss this question further.
1. "For these events, we will also capture a list of the modules that are rendered." this is always going to be "all of them", is the intention here to catch when errors occur (in which case, we are logging when modules don't error) or is it to have an idea for the future where we A/B test showing some modules to some subset of users?