Promoting events and WikiProjects

The Campaigns team at WMF has released two features that allow organizers to promote events and WikiProjects on the wikis: Invitation Lists and Collaboration List. These two tools are a part of the CampaignEvents extension, which is available on many wikis.
Invitation Lists
Product overview
Invitation Lists allows organizers to generate a list of people to invite to their WikiProjects, events, or other collaborative activities. It can be accessed by going to Special:GenerateInvitationList, if a wiki has the CampaignEvents extension enabled. You can watch this video demo to see how it works.
It works by looking at a list of articles that an organizer plans to focus on during an activity and then finding users to invite based on the following criteria: the bytes they contributed to the articles, the number of edits they made to the articles, their overall edit count on the wikis, and how recently they have edited the wikis. This makes it easier for organizers to invite people who are already interested in the activity’s topics, hence increasing the likelihood of participation.
With this work, we hope to empower organizers to seek out new audiences. We also hope to highlight the important work done by editors, who may be inspired or touched to receive an invitation to an activity based on their work. However, if someone does not want to receive invitations, they can opt out of being included in Invitation Lists via Preferences.
Technical overview
The “Invitation Lists” feature is part of the CampaignEvents extension for MediaWiki, designed to assist event organizers in identifying and reaching out to potential participants based on their editing activity.
Access and Permissions
- Special Pages: The feature introduces two special pages:
- Special:GenerateInvitationList: Allows organizers to create new invitation lists.
- Special:InvitationList: Displays the generated list of recommended invitees.
- User Rights: Access to these pages is restricted to users with the event-organizer right, ensuring that only authorized individuals can generate and view invitation lists.
Invitation List Generation Process
- Input Parameters:
- List Name: Organizers provide a name for the invitation list.
- Target Articles: A list of up to 300 articles relevant to the event’s theme.
- The articles will need to be on the wiki of the Invitation List.
- Event Page Link: Optionally, a link to the event’s registration page can be included.
- Data Collection:
- The system analyzes the specified articles to identify contributors.
- For each contributor, it gathers metrics such as:
- Bytes Added: The total number of bytes the user has added to the articles.
- Edit Count: The number of edits made by the user on the specified articles.
- Overall Edit Count: The user’s total edit count across the wiki.
- Recent Activity: The recency of the user’s edits on the wiki.
- Scoring and Ranking:
- Contributors are scored based on the collected metrics.
- The scoring algorithm assigns weights to each metric to calculate a composite score for each user.
- Users are then ranked and categorized into:
- Highly Recommended to Invite: Top contributors with high relevance and recent activity.
- Recommended to Invite: Contributors with moderate relevance and activity.
- Output:
- The generated invitation list is displayed on the Special:InvitationList page.
- Each listed user includes a link to their contributions page, facilitating further review by the organizer.
Technical Implementation Details
- Backend Processing:
- The extension utilizes MediaWiki’s job queue system to handle the processing of invitation lists asynchronously, ensuring that the generation process does not impact the performance of the wiki.
- Jobs are queued upon submission of the article list and processed in the background.
- The articles will need to be on the wiki of the Invitation List, and they can add a maximum of 300 articles.
- Data Retrieval:
- The extension interfaces with MediaWiki’s revision and user tables to extract the necessary contribution data.
- Efficient querying and indexing strategies are employed to handle large datasets and ensure timely processing.
- User Preferences and Privacy:
- Users have the option to opt out of being included in invitation lists via their preferences.
- The extension respects these preferences by excluding opted-out users from the generated lists.
- Integration with Event Registration:
- If an event page link is provided, the invitation list can be associated with the event’s registration data. This way, we can link their invitation data to their event registration data.
Collaboration List
Product overview
The Collaboration List is a list of events and WikiProjects. It can be accessed by going to SpecialːAllEvents, if a wiki has the CampaignEvents extension enabled.
The Collaboration List has two tabs: “Events” and “Communities.” The Events tab is a global, automated list of all events that use Event Registration. It also has search filters, so you can find events by start and end dates, meeting type (i.e., online, in person, or hybrid), event topic, event wikis, and by keyword searches. You can also find events that are both ongoing (i.e., started before but continue within the selected date range) and upcoming (i.e., events that start within the selected date range).
The Communities tab provides a list of WikiProjects on the local wiki. The WikiProject list is generated by using Wikidata, and it includes: WikiProject name, description, a link to the WikiProject page, and a link to the Wikidata item for the WikiProject. We aim to produce a symbiotic relationship with WikiProjects, in which people can find WikiProjects that interest them, and they can also enhance the Wikidata items for those projects, which in turn improves our project.
Additionally, you can embed the Collaboration List on any wiki page, if the CampaignEvents extension is enabled on that wiki. To do this, you transclude the Collaboration List on a wiki page. You can also choose to customize the Collaboration List through URL parameters, if you want. For example, you can choose to only display a certain number of events or to add formatting. You can read more about this on Help:Extension:CampaignEvents/Collaboration list/Transclusion.
With the Collaboration List, we hope to make it easier for people to find events and WikiProjects that interest them, so more people can find community and make impactful contributions on the wikis together.

Technical Overview: Events Tab of Collaboration List
- Purpose: Displays a global list of events across all participating wikis.
- Data Source: Event data stored centrally in Wikimedia’s X1 database cluster.
- Displayed Information:
- Event name and description
- Event dates (start and end)
- Event type (online, in-person, hybrid)
- Associated wikis and event topics
- Search and Filters:
- Date range (start/end)
- Meeting type (online, in-person, hybrid)
- Event topics and wikis
- Keyword search
- Ongoing and upcoming event filtering
- Technical Implementation:
- The CampaignEvents extension retrieves event data directly from centralized tables within the X1 cluster.
- Efficient SQL queries and indexing optimize performance for cross-wiki data retrieval.
This implementation ensures quick access and easy discoverability of events from across Wikimedia projects.
Technical Overview: Communities Tab of Collaboration List
- Purpose: Displays a list of local WikiProjects on the wiki.
- Data Source: Dynamically retrieved from Wikidata via the Wikidata Query Service (WDQS).
- Displayed Information:
- WikiProject name
- Description from Wikidata
- Link to the local WikiProject page
- Link to the Wikidata item
- Performance Optimization:
- Query results from WDQS are cached locally using MediaWiki’s caching mechanisms (WANObjectCache).
- Cache reduces repeated queries and ensures quick loading times.
- Technical Implementation:
- The WikimediaCampaignEvents extension retrieves data via SPARQL from WDQS.
- The CampaignEvents extension renders the data on Special:AllEvents under the Communities tab.
- Extension Communication:
- The extensions communicate using MediaWiki’s hook system. The WikimediaCampaignEvents extension provides WikiProject data to the CampaignEvents extension through hook implementations.
This structure enables efficient collaboration between extensions, ensuring clear responsibilities, optimized performance, and simplified discoverability of WikiProjects.