Before building any modules for the homepage, we need the basic skeleton to put modules into.
This mockup is a general visual guide to this work, but is not meant to express the exact locations of modules: https://wikimedia.invisionapp.com/share/6TQEPEYEV5W#/screens/345875766
Here are the specifications for the first version of the homepage:
* Location
** {icon check-square color=green} The content should be located on a new "tab" that can be found when the user is viewing their User or User Talk page.
** {icon check-square color=green} That new tab should be the first tab in the row, to the left of the "User page" and "Talk" tabs that are already present.
** {icon check-square color=green} That new tab should be labeled "Homepage".
* Navigation
** {icon exclamation-triangle color=green} When a user navigates to their own User page by clicking on their username in their personal tools, they should be redirected to this new homepage, regardless of whether their User page has been created. Clicking on their username in their personal tools is the //only// link that goes directly to their homepage, apart from clicking on the "Homepage" tab once they are on their User or User Talk page.
** {icon check-square color=green} When a user navigates to another user's User page, they should go to that user's User page as usual, even if it has not been created.
** {icon check-square color=green} A newcomer's homepage content should be private to the user, and not visible to other users. It should not be possible to visit another user's homepage.
* Framework
** {icon exclamation-triangle color=green] Homepage should be titled like "[User]'s homepage", e.g. "Cloud atlas's homepage"
** Homepage should consist of modules that can be displayed and configured separately. We should be able to create and remove modules over time.
** All content will need to be able to be translated into any language.
** While the set and layout of modules will not vary from user to user (i.e. the layout of the homepage will not be personalized), the //content// inside the modules //will// be personalized. In other words, different users will have different mentors named in their mentorship modules, and their impact modules will show the impact of their own edits.
* Users affected
** We should be able to have the homepage on for a treatment group of newcomers, with it remaining off for a control group of newcomers.
** {icon check-square color=green} We should add two checkboxes to Special:Preferences in a new section of the "User profile" tab. This new section should be called "Newcomer homepage" and should be the last section on the page, under the current "Email options" section:
*** {icon check-square color=green} One checkbox that turns the homepage on and off, called "Enable newcomer homepage"
*** {icon check-square color=green} One that allows users to control whether or not the homepage is the destination when they click on their username in their personal tools, called "When newcomer homepage is enabled, open it from username link in personal tools". This second preference should not be changeable unless the former one is "on".
** For treatment group users, both preferences are set to "on".
** For control group users, both preferences are set to "off", and it should not be possible for these users to click their way to a homepage unless the first preference is "on".
This is a list of capabilities that we will need for future versions of the homepage, listed here to facilitate planning:
* We may make changes to the software that drive newcomers toward their homepages, such as links on Main Page. Those sorts of treatments should line up with the treatment/control groups from the homepage experiment. In other words, if we add a link from the Main Page, we only want that link to be displayed to people that have the homepage on, as set by their group assignment in the experiment.
* More complex logic around when the user is redirected to their homepage. For instance, we may want to redirect users to their homepage when thy click on a their username in //any// context, not just in the personal tools. Or we may want users to continue to be redirected to their homepage //until// they have some content on their User page.
* Personalization: different configurations of the homepage should be displayed for different users. This means that:
** Different modules should be shown and not shown for different users depending on their welcome survey responses and edit history.
** Modules could be shown in different orderings on the page for different users.
** Some modules may have a "larger" and "smaller" mode, which would depend on the user.
** We should be able to A/B test these different configurations.
* Homepage should be customizable or editable by the user, for instance to permanently dismiss a module, or to cause a module's filters to be sticky.