Requests for comment/Governance

Problem statement
The Wikimedia engineering community has traditionally made decisions using a mix of do-ocracy and rough consensus. In the last years, we have augmented this with a formal RFC process driven by the architecture committee. This has helped to broaden discussions, and resulted in a better shared understanding on a range of topics.

However, we are also seeing issues with the current process:


 * Lack of clarity on the overall technical direction of MediaWiki and the Wikimedia platform.
 * Difficulty of scaling the decision making process.
 * Stakeholder involvement & legitimacy.
 * Clarity and transparency of decision making process (including lack of rationale and reasoning behind decisions).

Prior art
RFC-based technical decision making has a long history, starting with Arpanet in the late 1960s. Prominent examples are:

We looked into several of these models, and recorded some notes in this etherpad discussion.
 * IETF process
 * Python PEP process
 * Rust
 * Debian
 * W3C

Strawman proposal based on Rust
The Rust community's governance process seems to be especially suitable for our needs and philosophy. In the last year, they faced similar challenges to ours, and managed to scale to 331 RFCs by 127 community members, of which 161 were accepted and merged. While heavily drawing on prior art (Python and IETF in particular), their process seems to be very streamlined for modern online collaboration, and is well documented in a thoughtful RFC.

The two ideas I think we should in particular adopt are these:

More structured RFC decision process
Based on the Rust decision making process.


 * Nominate a shepherd from a (sub)team to guide an RFC through the process.
 * Makes sure that stakeholders are informed.
 * Guides the discussion.
 * Once the discussion plateaus or stalls & in coordination with the RFC author(s), announces and widely publicizes a "Final Comment Period", which is one week.
 * At the end of the "Final Comment Period", the (sub)team decides based on the points made in the RFC discussion, and justifies its decision based on the overall project principles and priorities. If any new facts or aspects are surfaced in this discussion, a new Final Comment Period needs to be started before making a decision. The goal is to reach as wide consensus among discussion participants and working group as possible. In case of lack of consensus in the working group, the group leader can make a decision in consultation with the core team (ArchCom).

Scaling the decision making process with sub-teams
Based on Rust subteams.


 * The core team is responsible for spinning up or shutting down sub-teams, with a member of the core team as its team leader. Initial membership is determined by the leader, later changes are by consensus within the team.
 * Each sub-team has a specific vision and problem set to work on, and the team leader is responsible for keeping the team on topic.
 * Sub-teams are empowered to decide on RFCs within their scope, following the Rust decision making process.
 * The team leader is responsible for elevating RFCs with unclear or broader scope to the core team.
 * In case of conflicts, the ArchCom can intervene to ensure that decisions are made in line with the overall project principles and priorities, and the agreed upon processes are followed.