Community configuration 2.0/id

Summary
The Growth team developed Community Configuration to help communities customize and scale Growth features. With the success of this feature (that we consider as the 1.0), it has become apparent that other WMF teams, external developers, and other users of MediaWiki could benefit from this tool, so the Growth team is exploring the possibility of moving this feature from the GrowthExperiments extension to a separate extension.

This project will include a community consultation, discussion with technical stakeholders, scalable design improvements, and engineering work to move the Community Configuration feature from the GrowthExperiments extension to a separate extension. Short-term this project supports the Editing and Moderator Tools team projects (Edit check and Automoderator), and long-term this work will help evolve how WMF product and technology teams develop and deploy features.

Prioritizing work on Community Configuration 2.0 acknowledges that each community has unique needs, and invested community members should be empowered to configure features to meet those needs. This approach removes the barrier for non-technical moderators to customize project settings for their communities and fosters a more inclusive and collaborative product development process, thus enabling WMF to better serve the Wikimedia movement.

Current status

 * : Work started on Growth's Community Configuration
 * : Growth's Community Configuration is available on all Growth wikis
 * : Hackathon session: Community Configuration – letting communities take control by JSON configuration (Hackathon session slides, Google Slides)
 * : Present initial plans at Wikimania (Moderator support slides)
 *  Next : Community consultation and collaboratively setting key performance indicators

Hypothesis
''' If editors with extended rights can transparently and easily configure important on-wiki functionality for all users, communities will have control over how features function on their wikis, and WMF teams will be able to ship new functionality quickly. '''

The Growth team is guided by the Annual Plan of the Wikimedia Foundation and the Product & Technology department's Objectives and Key Results. This hypothesis and associated project is one of several WMF team projects under the WikiExperiences 1.2 Key Result, which focuses on enhancing the user experience for editors with extended rights. The Growth team and four other Wikimedia Foundation teams are focusing on projects related to this to the WikiExperiences 1.2 Key Result.

Use cases
There are many use cases that highlight the need for a standard way to make features community configurable. The 2.0 version of Community Configuration will be more extensible and scalable, and usable outside of the GrowthExperiments extension, thereby positioning it to be a valuable asset for other WMF teams and their respective features. Community Configuration has been identified as a need by several WMF team’s and their associated Annual Plan priorities:


 * 1) Editing Team: Edit Check
 * 2) * Potential use case: Communities will configure when a reference Edit Check is triggered, and the resulting message and outcome.
 * 3) Moderator Tool Team: Automoderator
 * 4) * Potential use case: Communities will configure the Automoderator to only take action on edits from certain user groups.
 * 5) Trust and Safety Product Team: Incident Reporting System
 * 6) * Potential use case: Communities will configure pathways for different types of incident reports, as well as configure rules on who can use the system in which situations.
 * 7) Campaign Team: CampaignEvents extension
 * 8) * Potential use case: Communities will want to configure which namespaces are permitted for event pages and who is eligible for Organizer rights to set up event registration.
 * 9) Mobile App team: Anti-vandalism tools for the Android App.
 * 10) * Potential use case: Communities can create warning templates that can be displayed across official WMF mobile apps and third party patrolling apps.
 * 11) Web team: Accessibility for reading
 * 12) * Potential use case: Communities may need to configure default font sizes, as certain language scripts need to be larger to be readable and meet accessibility needs.

Many other possible use cases have been brainstormed by community members and are listed in the associated epic: T323811.

We want to

 * Create a tool that is easily understood by any experienced editor.
 * Empower communities to customize wiki features to best suit the local needs of their wiki.
 * Create a tool that helps increase the speed in which WMF Product and Technology teams can scale features to all wikis.
 * Create a tool that helps volunteer developers, gadget creators, and any software developer interested in creating community configurable tools for MediaWiki.

We don't want to

 * Create a tool that creates bias or only benefits a certain user group.
 * Create a tool that works only with certain features.
 * Create a tool that is difficult to find or understand.

Key Results
The goals and key results for this project will be established collaboratively with editors with extended rights. A few potential key results could be:
 * By the end of March 2024, configurable Growth features will utilize Community Configuration 2.0.
 * By the end of June 2024, at least one other WMF team in Product and Technology has either launched or is in the active development stage for a project that is using Community Configuration 2.0.
 * By the end of the fiscal year, Community Configuration 2.0 has been used to customize at least 20 wikis. In other words, editors with extended rights are aware and utilize Community Configuration 2.0.
 * By the end of the fiscal year, initial guidelines for the types of functionality that should and should not be in Community Configuration, and types of user rights, will be agreed in consultation and collaboration with volunteers and interested product teams.

Technical lessons from Community configuration 1.0
Community configuration 1.0 made the following things challenging:


 * Changes: Once a configuration value has been first configured on-wiki, it is challenging to change its format (one has to edit the configuration files and update their format). CC 1.0 is problematic at backwards and forwards compatibility.
 * External access: Configuration values cannot be easily accessed from external clients (such as the Android app), ie. without loading the underlying JSON page, the structure of which can be changed without notice by the Growth team.
 * Extensibility: Adding new fields to the configuration form is not terribly difficult, but it is often forgotten about. The backing JSON files give admins access to more than what Special:EditGrowthConfig offers. Unfortunately, most “hidden capabilities” are only known by Growth engineers.
 * Deletability: Configuration stored as on-wiki JSON files has its disadvantages. The biggest disadvantage Growth team ran into is that they can be deleted (example: T344013). Once that happens, the Growth features revert to extension.json-provided defaults, which disrupts the experience to newcomers (although nothing broke from a technical perspective, the user experience is nearly-unusable).
 * Suddenness: It is worth knowing about certain configuration changes when they happen, so they can be properly reacted to. For example, if a wiki decides to turn off Add link, the Growth team would want to learn why and if possible, resolve issue(s) identified by the community. This is not (easily) possible with CC1.0.

High-level technical requirements
Community configuration 2.0 should be:


 * Auditable: Any change made to the configuration should be auditable, including the reasons for “who made the change”, “why the change was made” and “what the change consisted of”. The experience should be comparable to the history of MediaWiki pages, as that is what the users are used to.
 * Extensible: Even though we made scoping decisions (eg. to not include gadgets in the MVP), those decisions should not affect ability to extend Community configuration in the future without significant efforts.
 * Externally available: Users external to MediaWiki should be able to access the current setting values configured via Community configuration 2.0. This is needed to ensure Community configuration values can be used from places outside of MediaWiki (such as the Wikipedia Apps for mobile devices, Toolforge tools and similar).

Community discussion
As part of this project, there are three main groups of stakeholders we will consult with:


 * 1) Wiki communities: Including Wikipedia admins and users with extended rights that have used Growth's Community Configuration previously or might utilize Community Configuration 2.0 in the future. We will also consult with developers of user scripts and gadgets.
 * 2) Technical community: A wider discussion with the technical community as a whole (wikitech-l, MediaWiki core developers.
 * 3) WMF teams: Wikimedia Foundation Product and Technology teams interested in utilizing Community Configuration 2.0 in upcoming projects.

Open questions:

 * How do you feel about the prospect of more WMF teams developing features that can be enabled, disabled, and configured by your local wiki Administrators? Do you have any reservations or concerns about this project?
 * What can we do to ensure that all Administrators are well-informed about these tools?
 * Are Administrators confident in making alterations to Community Configuration? Which parts of the procedure are unclear or ambiguous?
 * While Community Configuration 2.0 should be visible to all, it should only be modifiable by a select group of experienced Wikimedians? Should all configuration options be exclusively editable by Administrators and interface administrators? Should we consider different user access levels for certain Community Configuration 2.0 options?
 * Do you have any thoughts or suggestions about how we can best define and measure the success of this project?
 * Scope of Community Configuration 2.0: will it support user scripts, gadgets, external apps (like the Android/iOS Wikipedia app).
 * How should we handle config changes that need to apply on all/most Wikimedia projects?

Wiki communities:
The Growth team's Community Relations Specialist contacted admins who had recently edited Growth's Community Configuration (T336608). The main ideas admins communicated are as follows:


 * The usual roles and processes to monitor and edit the configuration are preferred:
 * All configuration pages should be readable by anyone.
 * Admins (or Interface Admins) should be able to edit because they have enough knowledge.
 * Admins can apply requests made after a community discussion.
 * The need for a history of requests and tracking of changes is necessary.
 * This configuration page may impact a lot of users, and should be handled with care. Several ways to prevent issues were suggested:
 * The creation of a new role, for trusted admins who understand Community Configuration.
 * The creation of a reviewing process to validate a change made by one admin.
 * A clear and centralized history page is needed to spot any changes made on the different configurations.

Wikimania presentation:
The Growth Team's Product Manager presented at Wikimania Singapore to share initial details about the Community Configuration project along with other projects WMF teams are completing to support moderators. We answered the following questions from session attendees:


 * Is the Special page available for non-admins in a read-only mode?
 * Yes, the special page is currently available for anyone to view. Only admins can actually edit the configuration. Example: Special:EditGrowthConfig.
 * Will Community configuration 2.0 be available on other wikis outside of Wikipedia?
 * Currently the 1.0 version is part of the GrowthExperiments extension and therefore only available on wikis that have that extension enabled. We hope to build the 2.0 version in a way that is more extensible and flexible so that it can be used on any Wikimedia project that installs the Community Configuration extension.
 * If we know of specific use cases for Community Configuration, where can we share this information so that the Growth team considers the use case?
 * Although we can't make promises that we can support everything in the initial release, we are compiling a list of use cases in the Community Configuration 2.0 Epic. Any community member with ideas is welcome to add comments to that task with the use case (of course we welcome feedback and comments on the talk page here too).
 * Will there be cases in which there are additional restrictions or warnings as to what a Admin can change?
 * This project will include creating guidelines on the use of this feature. We will create better onboarding for Admins, as well as developer guidelines for engineers supporting Community Configuration of non-Growth features.
 * There will also be error checking and warnings in place to ensure Community Configuration is as stable as possible. For example: if the form expects a positive integer in a certain field, the form will present an error if a negative integer or non-integer string is added.
 * We have considered Community Configuration eventually supporting a process in which more than one admin needs to approve a change if the change could be controversial or high-impact. This won't be part of the MVP, but something we may consider in the future.
 * Will Community Configuration 2.0 work for external apps, like the Wikipedia Android and iOS apps?
 * Community Configuration 2.0 will be readable by external apps, but the actual Community Configuration form will not be adjustable by admins from within the apps.
 * Will interface admins still be able to make changes to JSON configuration files if they are also Community Configurable, or will these changes now be restricted to updates via Community Configuration?
 * Community Configuration 2.0 will not restrict interface admins from making changes to JSON configuration files.  In the long-term, however, restricting the ability to edit certain raw config files may be appropriate for configurations that shouldn't be changed by admins.

WMF Teams:
We have completed an initial listening tour with nine WMF Product teams. Some key takeaways are:


 * All teams have either a short-term or long-term need for Community configuration, the short term needs have been documented as Community Configuration 2.0 use cases.
 * Several teams noted the importance of data transparency in making configuration decisions.


 * Several teams mentioned the need for metrics and the community ability to evaluate Community Configuration decisions.


 * Teams mentioned several social concerns, including: accountability and transparency, balancing legal requirements with community autonomy, discoverability, permissions and user roles, and the need to avoiding increasing patroller burden.
 * Teams mentioned a few technical concerns, especially the need for Community Configuration to be nuanced and flexible.

Technical consultation:
Once initial technical plans are documented, we will conduct a wider discussion with technical stakeholders (T344144 )

Research
The Growth team's designer completed a short comparative review of Admin tools in use on other platforms (T338386). The full report is available here: Comparative review: Configuration / Admin tools. The following is a summary of the relevant insights that relate to the Growth team's Community Configuration 2.0 project:


 * Most tools make use of a ‘Dashboard’ as the first thing you see when you enter the panel – you can access things like recent activity, quick links, actionable insights.
 * In terms of organization/layout, most tools make use of modules while having a sidebar on the left, with menu items on it being expandable in some of the tools.
 * Some platforms let users/communities customize modules and how they’re presented - for example, modules being draggable to different parts of the screen, or being able to hide modules that you or your community don’t use.
 * Settings UI: for most of these, tools use components like toggle switches (turn on/off), text inputs, and dropdown menus.
 * Typology of settings:
 * Display settings: being able to change the color/layout/etc. of a feature
 * Feature access: being able to activate/deactivate (turn on/off) certain features
 * Thresholds/Limits: e.g., a certain activity can be done no more than X times per day.
 * User access/permissions: only certain user groups having access to a feature
 * Audience-specific or other conditional customisation: e.g. links to resources being different from community to community.

Design
We will utilize what we've learned from the existing Special:EditGrowthConfig page to make the new Community Configuration page more user-friendly, intuitive, and scalable. We are currently exploring two main design concepts for the Community Configuration 2.0 page: an accordion style layout or a dashboard style layout. We will gather community feedback to determine which design we pursue, and how we can further improve the Community Configuration design and UX.