Page MenuHomePhabricator

Design investigation: Expand Event Registration to Support Project + Program Structure
Closed, ResolvedPublic

Assigned To
Authored By
ifried
Feb 19 2025, 6:11 PM
Referenced Files
F58598626: image.png
Mar 4 2025, 7:41 PM
F58598592: image.png
Mar 4 2025, 7:41 PM
F58598622: image.png
Mar 4 2025, 7:41 PM
F58598595: image.png
Mar 4 2025, 7:41 PM
F58598619: image.png
Mar 4 2025, 7:41 PM
F58598463: Screenshot 2025-03-04 at 8.22.35β€―PM.png
Mar 4 2025, 7:41 PM
F58521967: image.png
Feb 28 2025, 9:44 PM
F58521809: Screenshot 2025-02-28 at 10.11.18β€―PM.png
Feb 28 2025, 9:44 PM
Subscribers

Description

Background:

We would like potentially create a new architectural structure for Event Registration, so that we can have a Project -> Program/Campaign -> Event, so that various forms of collaborations can use the tool and so that we can include events under a larger banner such as a campaign or WikiProject.

For example, a WikiProject could collect event registration (and in the future, tracking contribution data) on the WikiProject overall, as well as the separate initiatives within the WikiProject (such as collaboration of the month), and then the separate events within the initiative (such as collaboration of February 2025). In this way, the whole structure of the project as well as its underlying initiatives and events can be structured, tracked, and discoverable under the common infrastructure of the CampaignEvents extension and its tooling.

Note that probably want to allow WikiProjects the option to augment their pages with things like an event registration header, but they can also have the option to NOT augment their pages and to just associate an event or program with the larger WikiProject for tracking purposes.

Also, different WikiProjects, campaigns, and programs will want different things. For example, maybe one WikiProject wants to use Event Registration to track all of the participants in the project, while another WikiProject may only want to use Event Registration for specific events. The idea is to provide flexibility so that organizers can choose the configuration and setup that works for them.

The main goal of this work is that, in the future, various types of projects/programs can have a way of tracking participation, contributions, and other data points tracked by the extension. This means that, in the course of the investigation, we're not trying to reimagine every aspect of the creation of WikiProjects. This is particularly true because many WikiProjects already exist -- and we want to be able to allow them to augment and improve their WikiProjects, rather than forcing them to rebuild everything from scratch. However if, in the course of the exploration, some compelling opportunities are also found to improve other elements of the WikiProject structure in a way that is aligned with this work, it can also be shared in the design work.

Stakeholders:
  • People who tend to be especially active in WikiProjects (who we can think of as potential "organizers")
  • People who join WikiProjects as members
  • People who join campaigns or larger programs/initiatives
  • People who join WikiProject events/initiatives
  • WMF teams and analysts who want to better understand participation and contributions of collaborative activities, such as WikiProjects, projects, campaigns, and programs
Resources:
  • See T371744 for related design concepts
  • See slide for research on various types of campaign/event structured
  • See Miro board for example configurations of WikiProjects, campaigns, etc

Notes on how this could work:

  • You can have events that are tied to a campaign or project OR an event that is not tied to a campaign or project
  • Can be useful for WikiProjects - maybe a bigger project than idea 2, so could be done after idea 2 after we have some wikiproject users
  • The organizer can create a community (or group or whatever name we want)
  • When enabling event registration, the user can indicate if this event belongs to a community by selecting it from the list of communities/program/campaigns they are allowed to manage.
  • Then we can have a CampaignEvents Special:CampaignEventsCommunitiesList:
    • This would list all the communities/program/campaigns, and the user could filter them by:
      • communities/program/campaigns topics
      • communities/program/campaigns areas
      • communities/program/campaigns region
  • Each communities/program/campaigns could have a "how to join" section:
    • It could include the names of the organizers for users to contact to request to join.
  • Alternatively, it could have a button to join or request to join.
    • If it is a request to join, organizers would be able to see who is requesting and approve or decline the request.
  • We could also have a CampaignEvents Special:CampaignEventsCommunityPage: (I named it community but it is the same concept of project)
  • This page could be directly accessed via the browser by adding the full URL.
    • It would also have a link to it on the list of communities/project' special page mentioned above.
  • Organizers and/or admins could create communities.
  • Community/project:
    • A community/project CAN HAVE topics.
    • A community/project CAN HAVE WikiProjects.
    • List of WikiProjects for this community/project.
  • A community/program CAN HAVE many campaigns.
    • Campaigns CAN HAVE MANY events (which may or may not have a date frame).
  • Events have a start and end date.
  • Alternatively:
    • Use WikiProjects as "communities."
    • List WikiProjects and allow people to join.
  • Apply all the features mentioned above to WikiProjects instead of communities.
  • Invite people to WikiProject campaigns/projects.

Design
Design explorations

Open questions:

  • Do we want to allow people other than the page creators to enable event registration on an event page? For example, there may be a WikiProject page that was created 15 years ago and the original creator is no longer active on the wikis. If they want to use Event Registration, they would be unable to do so in the current system. Maybe we could have a new user right that allows someone to create event registration on any page. Or it could be something that we grant to admins.

Event Timeline

@gonyeahialam and I talked about some of his work on this ticket today. There are a lot of great concepts that he worked on, which really helped us think through some potential next steps - so thank you for this work! A few things to consider/add to the next designs:

  • We will probably want granular data on the structure of the collaboration (such as if it is a campaign, task force, etc) since a) one of the problems on the wikis today is that this data is unstructured so hard to find, and b) more granular data helps us learn more - both internally at WMF and in the movement overall - about what is working and what needs to be improved. So I would recommend that we do not go for a WikiProject vs. everything else approach, but rather get to what is really being organized.
  • One more collaboration type to add is affiliates - note that they are not always topical - maybe they are under a general group category or their own category
  • For dropdown of campaigns, we need to assume that there will be eventually a very long list of campaigns. So maybe there is a campaign id that organizers can add, like how they add grant id. But then they need a way to find the campaign and the associated id. So, would there be a central list of all campaigns that can be accessed somewhere?
  • For WikiProjects, maybe organizers can add the Wikidata item for the WikiProject and specify the wiki
  • For the data we collect on WikiProjects: It could be useful to ask for topic, since we could then potentially display that data on the Collaboration List. What other info do we think would be useful to learn more about WikiProjects?
  • Some things are nested in other things. For example, events are often nested under WikiProjects, campaigns, affiliates, or programs. Task forces are nested under WikiProjects. I think some oft the confusion people could have when initially setting stuff up is knowing how to properly nest things and indicate the associations. So I think it would be useful to think through how to make this clear to users.
  • If a WikiProject/program/affiliate/campaign has many events that are associated with it, how do we display this data on the main page of the larger activity? We could potentially do it via the Collaboration List on the page, but perhaps the WikiProject/program/affiliate/campaign wants to show more than just their events. For example, they may want a larger calendar of all related/topical events. They could maybe have 2 views - one for their events and one for whatever they choose for a more broad calendar. This is something to think through and explore.

When organizers are enabling registration for a collaborative activity, they can be asked at the beginning of the form to select the collaboration type as shown in the image below:
We have the collaboration types and their descriptions for organizers to select from.
Some of the questions below would hidden depending on what initiative is selected.

Screenshot 2025-02-28 at 6.46.16β€―PM.png (2,282Γ—1,404 px, 256 KB)

I explored some ideas on how organizers can link events or whatever collaborations they are organising to the broader collaborations it is part of. As illustrated by Ilana here https://miro.com/app/board/uXjVIaRxbb8=/, these could take many forms:

  • Standalone events
  • Wikiproject
  • WikiProject β†’ Task Force β†’ Events
  • WikiProject β†’ Initiative β†’ Events
  • WikiProject β†’ Events
  • Affiliate β†’ Events
  • Affiliate β†’ Initiative β†’ Events
  • WikiProject β†’ Initiatives/Programs/Campaigns β†’ Events
  • Initiatives/Programs/Campaigns - Sub Initiatives/Programs/Campaigns - Events
  • ...
Idea 1Idea 2Idea 3Idea 4
This design is too rigid and doesn't give room for the different configurations that could happen as shown aboveThis is more flexible since organizers can select the type of collaborative activity and its corresponding page.If we are only going to allow pages that have enabled registration then we would already the collaboration type so there would be no need to ask of it againWe can better visualise the relationship between the different collaborations as shown below. The organiser can add more top-level collaborations or remove them
Screenshot 2025-02-28 at 9.19.47β€―PM.png (2,448Γ—252 px, 44 KB)
Screenshot 2025-02-28 at 9.23.26β€―PM.png (1,588Γ—738 px, 78 KB)
Screenshot 2025-02-28 at 9.34.02β€―PM.png (1,588Γ—1,002 px, 98 KB)
Screenshot 2025-02-28 at 10.11.18β€―PM.png (2,548Γ—540 px, 89 KB)

Idea 4 appears better than the others. But we can simplifying things further by only asking for one broader initiative (if the event has such). The whole hierarchy doesn't need to be added at this point. The next level collaboration should already have been added when registration was being enabled for that page. For example, when I am enabling registration for a campaign that is part of a WikiProject, I would specified it in the form. So, when I am enabling registration for an event under this campaign I only need to indicate that it is part of the campaign, there is no need to indicate again that the campaign is part of a WikiProject since I had already done that on the campaign page. Given this we can have a simple field as shown below:

image.png (1,282Γ—366 px, 43 KB)

Thank you for adding these concepts, @gonyeahialam!

I agree that we want to allow organizers to choose a wide range of configurations, so we should aim for flexibility. We should also allow organizers to nest one collaboration within another, so I like what you showed in concept 4. I think this sets us up very well for when we do take on this project in the future. In that case, I think we can go ahead and focus on you to adding all final design concepts and ideas to the ticket, so it can be shared in the Wednesday design + engineering meeting and any follow-up notes/ideas can be added by the team (including the engineers) async.

What We Want to Do

We want to:

  • Expand event registration to work for different types of collaborations on Wikipedia
  • Reflect the hierarchical structure of collaborations for tracking contributions across collaborations
  • Let organizers choose which features they need for their specific collaboration. Organizers/Collaborations want different things and we want to give them the ability to choose what they want. For example, one WikiProject may want to use Event Registration to track all of the participants in the project, another WikiProject may only want to use Event Registration for specific events, a WikiProject may want to augment their pages with the registration header and another may not, a collaboration may just want to associate with the larger WikiProject for tracking purposes.

Types of Collaborations on Wikimedia

Wikimedia has several types of collaborations:

  • Events: Time-bound activities with specific objectives (e.g. edit-a-thons, writing contests, monthly collaborations)
  • Initiatives/Programs/Campaigns: Organized, long-term efforts to achieve specific goals, which may or may not have a defined timeframe
  • Task Forces: Smaller working groups within WikiProjects/Communities focused on specific subtopics or tasks (e.g. Anatomy Task Force within WikiProject Medicine)
  • WikiProject: Permanent, ongoing groups of contributors working together to improve content around a specific broad topic area (e.g. Medicine, Military History), without specific end dates
  • Affiliates: Formally, recognized organizations that support and promote Wikimedia projects in specific regions or thematic areas (e.g. Wikimedia chapters, thematic organizations, and user groups)

How We'll Improve the Form

I suggest adding a new section to the event registration form where organizers can select what type of collaboration they're creating. The form will then show only questions that matter for that type. We'll include simple definitions for each of the collaboration types to help people who aren't familiar with these terms.

Screenshot 2025-03-04 at 8.22.35β€―PM.png (2,374Γ—1,062 px, 221 KB)

Giving Organizers Choices

We want organizers to pick settings that work for them. I added a question where they can select their goals.

If they are interested in Enabling registration of participants for their collaboration or tracking contributions they can select it and see only fields related to these. Not all collaborations would be interested in enabling registration. For example, WikiProjects already exists and have members, an organizer may only want to track the overall contributions of events under the project, so they can select this option and link all the sub-events. They don't get to see other unnecessary form fields.

Registering participantsTrack sub-collaboration contributionsTrack own contributionsLink to organizing collaboration
image.png (1,440Γ—3,168 px, 374 KB)
image.png (1,440Γ—1,479 px, 173 KB)
image.png (1,440Γ—3,168 px, 374 KB)
image.png (1,440Γ—1,479 px, 176 KB)

Better Name for the Form

Since the enable registration form can be used for other things apart form enabling event registration and since we plan to grant access to other namespaces apart from Event namespace perhaps we can change the name to be more generic. My suggestion is Collaboration configuration (Set up your collaboration).

Showing Relationships Between Collaborations

These collaborations can have different structures like:

  • A standalone event
  • An event under a Campaign
  • Multiple events under campaign under a WIkiProject (WikiProject β†’ Campaign β†’ Events)
  • WikiProject β†’ Task Force β†’ Events
  • WikiProject β†’ Initiative β†’ Events
  • WikiProject β†’ Events
  • Affiliate β†’ Events
  • Affiliate β†’ Initiative β†’ Events
  • WikiProject β†’ Initiatives/Programs/Campaigns β†’ Events
  • Initiatives/Programs/Campaigns - Sub Initiatives/Programs/Campaigns - Events
  • ...

To show these relationships, I added a field where organizers can link their collaboration to higher-level ones. They pick the collaboration type and enter the page name using a lookup tool. They can add multiple layers depending on how their collaboration is structured. The lookup tool would list only collaborations or pages that have been created or organized by the organizer. Where this may not be feasible like for most WikiProjects, they can add the url of the project page.

image.png (1,030Γ—384 px, 41 KB)

Open Question

We currently have specific places where Events and Communities are listed. Where should other types of collaborations be shown?

Conclusion

This design expands event registration to support all types of Wikipedia collaborations while keeping things simple for organizers. By letting people choose what type of collaboration they're creating and what features they need, we make the system useful for many different situations.

@gonyeahialam and I have discussed this, and some topics that came up are:

  • Inclusion of how a collaborative activity is connected to another collaborative activity could be added to EventDetails, but that was out of scope for this exploration
  • "Link to organizing collaboration": What is meant in this case is that the user is linking an activity (such as an event) to a larger campaign/program/WikiProject. The Organizers field in this case is meant to be for the larger campaign/program/WikiProject infrastructure, so that users can be defined as organizers of those structures and can therefore view related organizer data.
gonyeahialam changed the task status from Open to In Progress.Mar 12 2025, 12:22 PM
gonyeahialam updated the task description. (Show Details)

Feedback from Engineers at the Eng/Design meeting on March 5, 2025

Michelle (MH):The form is already long, so we should try to separate them.
It is possible to split the form into two pages. Where on the first page you set the collaboration type and goal and the next form.
Emanuele (EL): It is also doable in a single page but for no JS the full form will still show.
EL: Alternatively, each Collaboration type form is on its own page, and the general or first page is where users select their collaboration type and goal and then they are directed to the selected collaboration type form page
EL: Clear definitions and relationships between Collaboration types.
Affiliates don’t fit in with the others
What can be a child of what? E.g can an event be a child of another event?
EL: Maybe when we work on this we introduce our own definition of WikiProjects that does not depend on Wikidata, where we can add our own information such as member list.

I am now marking this work as done. I have added a note about this work to the main epic (T385342), so that the design work can be revisited if/when we take on the project. We do not have any immediate plans to do this work in our roadmap, but I think it is highly likely we may take on a project that is related to this work in the future, so we will most likely revisit this design work in the future too. Thank you to everyone who worked on this!