Page MenuHomePhabricator

Investigation: Determine options to create a Collaboration List module on the Newcomer Homepage [1 day for preliminary investigation]
Closed, ResolvedPublic

Description

User story

Newcomer Homepage: As a newcomer, I want a calendar of newcomer-friendly events and WikiProjects to be displayed on the Newcomer Homepage or in other interfaces, so that I can find events that are welcoming to me and fellow newcomers.

Background

The Collaboration List is currently viewable via Special:AllEvents on any wiki that has the CampaignEvents extension enabled. This means that is viewable on a maximum of one page per wiki. This page is not easily discoverable or stumbled upon in many wiki workflows. While we can encourage more people to check it out (and we have some done some work in this area - see T377861), we would also like the Collaboration List to be discoverable within common wiki workflows. This is for a few reasons:

  • The Collaboration List is generally useful to many different types of people, since it is focused on finding many different types of collaboration, such as: meetups, campaigns, edit-a-thons, office hours, and WikiProjects.
  • The Collaboration List can be filtered for different types of users and needs
  • We have repeatedly learned through research and discussion that it is hard for many people to find meaningful opportunities to collaborate on the tasks and topics that they care about, and one of the challenges is discoverability

If we allow a Collaboration List module on the Newcomer Homepage, then newcomers can find events and/or WikiProjects that interest them.

Resources:
Acceptance Criteria:
  • Learn what you can in a day about the following:
    • Investigate how we could allow a Collaboration List module on the Newcomer Homepage
      • There are two options that we can explore, which are:
        • Option 1: Creating a new module for the Newcomer Homepage
            • The module placement is TBD, but it should be near/next to the Community Update module (if the wiki has enabled the module)
          • Maybe the default state is only to show events that apply to that local wiki
            • For example: On the Newcomer Homepage on French Wikipedia, we would show as default only the events that are for French Wikipedia or 'all wikis,' but perhaps we could allow people to filter to see for other wikis (depending on the complexity)
        • Option 2: Expanding the existing Community Update module to feature the Collaboration List in some way
          • For example: Community Update can display at the top with the Collaboration List below, so that people can find the "featured" event via the Community Update module and the list of full events via the Collaboration List. Note that we also want the events for that local wiki as default for this option.
    • Connect with the Growth team to ensure that findings are valid
    • Document findings and proposed next steps

Event Timeline

ifried updated the task description. (Show Details)
ifried updated the task description. (Show Details)
ifried updated the task description. (Show Details)
ifried renamed this task from Investigation: Determine options to create a Collaboration List module on the Newcomer Homepage to Investigation: Determine options to create a Collaboration List module on the Newcomer Homepage [1 day for preliminary investigation].Feb 20 2025, 5:56 PM
ifried updated the task description. (Show Details)
ifried updated the task description. (Show Details)
ifried updated the task description. (Show Details)
ifried updated the task description. (Show Details)
ifried updated the task description. (Show Details)

Change #1123494 had a related patch set uploaded (by Cmelo; author: Cmelo):

[mediawiki/extensions/GrowthExperiments@master] POC for Collaboration List module on the Newcomer Homepage

https://gerrit.wikimedia.org/r/1123494

Test wiki created on Patch demo by CMelo (WMF) using patch(es) linked to this task:
http://patchdemo.wmcloud.org/wikis/b67ea86a3c/w/

Test wiki on Patch demo by CMelo (WMF) using patch(es) linked to this task was deleted:

http://patchdemo.wmcloud.org/wikis/b67ea86a3c/w/

Test wiki created on Patch demo by CMelo (WMF) using patch(es) linked to this task:
http://patchdemo.wmcloud.org/wikis/67f47043b9/w/

Test wiki on Patch demo by CMelo (WMF) using patch(es) linked to this task was deleted:

http://patchdemo.wmcloud.org/wikis/67f47043b9/w/

Hi there @ifried, @VPuffetMichel , @Daimona, @MHorsey-WMF, here is the result of my one-day investigation on this.

I was able to create a POC and demo it today to the team on the demo/retro but here is an image of the "final result" of what I tried, it is a list of events that users could filter by.
All the events data are fake and the filter don't do anything it is just to show what I had in mind and what I understood from the AC of this task.

Screenshot 2025-02-27 at 22.29.42.png (1×3 px, 376 KB)

Testing Instructions

In order to test this you need to use this patch:
https://gerrit.wikimedia.org/r/c/mediawiki/extensions/GrowthExperiments/+/1123494

Installation

Install the GrowthExperiments extension and add it to your LocalSettings.php:

php
wfLoadExtension( 'GrowthExperiments' );
$wgGEHomepageEnabled = true;
$wgGENewcomerTasksEnabled = true;
$wgGEHelpPanelEnabled = true;

It uses VisualEditor, so add it too:

wfLoadExtension( 'VisualEditor' );
$wgDefaultUserOptions['visualeditor-enable'] = 1;
$wgHiddenPrefs[] = 'visualeditor-enable';
$wgVirtualRestConfig['modules']['parsoid'] = [
    'url' => 'http://localhost:8142',  // Ensure Parsoid runs at this port
    'domain' => 'localhost',
    'prefix' => 'localhost'
];

Configuration

Go to Special:Preferences
Check Display newcomer homepage under Newcomer editor features
Then check the page on Special:Homepage

Next Steps

It sounds doable to implement something like this demo.
To do this, we will need an API to get the list of events and filter it.

One last thing: I just did a PoC of what I understood from the task. We may need other things depending on the final scope of this new feature.

BTW I tried to create a patch demo but it fails, with the error below:

[c32ef30ae65ba2673fb307e4] /wikis/67f47043b9/wiki/Special:Homepage Error: Class "CirrusSearch\CirrusSearchServices" not found

Backtrace:

from /var/www/html/wikis/67f47043b9/w/extensions/GrowthExperiments/ServiceWiring.php(125)
#0 /var/www/html/wikis/67f47043b9/w/vendor/wikimedia/services/src/ServiceContainer.php(440): Wikimedia\Services\ServiceContainer::{closure}()

Screenshot 2025-02-27 at 22.21.49.png (1×2 px, 479 KB)

Last note: I will be OOO until Wednesday it is Brazilian Carnival holidays, I will be back on Wednesday Afternoon Brazilian Time.

Hi there @ifried, @VPuffetMichel , @Daimona, @MHorsey-WMF, here is the result of my one-day investigation on this.

Thank you for exploring this.

It sounds doable to implement something like this demo.
To do this, we will need an API to get the list of events and filter it.

I'm curious about where this code will leave eventually. Does GrowthExperiments provide a hook to let other extensions add more modules? I think I would prefer this code to be in CampaignEvents, because we'd be maintaining it, and we could use the existing abstractions, including any of our internals, to list the events.

BTW I tried to create a patch demo but it fails, with the error below:

[c32ef30ae65ba2673fb307e4] /wikis/67f47043b9/wiki/Special:Homepage Error: Class "CirrusSearch\CirrusSearchServices" not found

Sadly, the master version of GrowthExperiments has an unexpected hard dependency on CirrusSearch. It's not only patch demo, it also breaks all load.php requests locally if you don't have CirrusSearch installed. This is tracked in T386690. The easy workaround is to just enable CirrusSearch (you don't really need to configure it or make it work, as long as it's there). I also just found an unexpected hard dependency on EventLogging, filed as T387544.

ifried changed the task status from In Progress to Stalled.Mar 10 2025, 6:30 PM

Moving back to Ready since Claudio is OOO and there will be more to investigate once we finalize design choices.

ifried removed cmelo as the assignee of this task.Mar 10 2025, 6:30 PM
ifried added a subscriber: cmelo.
ifried claimed this task.

I'm marking this work as complete. We have decided to proceed with a different project to focus on first (collaborative contributions), so this project is currently not prioritized in our roadmap. We may take up this project again in the future, but we will have potentially a different perspective at that time, so a new ticket will be created. In the meantime, I will add all relevant notes to the main epic ticket (T387792) about the work done so far, and we will potentially revisit the work later. Thank you to everyone who has worked on it so far!