As promised, I wrote a more formal proposal for the new technical governance model for GNOME that I presented at GUADEC 2025.
WARNING: this is a long document. Please read it all before forming an opinion. Governance is not a computer program, and you are not compilers; there’s no point in stopping at the first thing you disagree with.
While comments are welcome, I’d like to stress two things:
- if you are not contributing to GNOME, you are not really the target audience of this document and proposal; this means that, while you may have a point of view, it does not necessarily mean your point of view is relevant. Please, think long and hard whether you want to leave a comment.
- the moderation mallet is going to be out and on high alert; moderators will be on the lookout for bad behaviour, and discussions that spin out of control are going to be spun out to separate threads—or deleted, if they go off topic or off the code of conduct
This is an RFC, which means nothing is final until the stakeholders reach some rough consensus.
I have tried to fill out some of the rules for the steering committee, mainly based on the Debian Technical committee and the Rust Leadership Council; there’s a lot more to be written on the decision making process of the steering committee, but I didn’t want to commit to that before iteratively figuring out the role of the committee itself.
Summary
This change proposes to formalize the GNOME technical governance structure, by creating various teams representing shared areas of interest to take over the existing informal technical leadership represented by individual project maintainers, and allow future expansion when new shared areas of interest arise.
Motivation
The GNOME technical governance model has barely changed from the “rag tag band of misfits” of the halcyon days of the project’s youth: we are still structured around informal power dynamics, with people appearing and disappearing, driven by somebody’s vision and chance, until all its spent. Decision-making is an exercise of sisyphean patience, where people must push the boulder of the community uphill only to watch it roll back down with every cycle.
The GNOME Handbook describes the decision making process as:
Most decisions in GNOME are made informally, by individuals working in collaboration with one another. This informal way of making decisions applies to who works on what, which features are supported, and which technical and user experience designs are implemented.
The motivation for this proposal is to remove the “informal” and “individual” parts, and instead create formal, shared structures to increase accountability while diffusing personal responsibility.
Background: no formal structure
There is a power vacuum at the center of GNOME, as there is nobody nominally “in charge” that decides:
- the overall direction and vision for the project
- the priorities for a particular release
The release team and design team are, both within and without the project, seen as final arbiters but they have neither the resources nor the mandate to actually make or implement any such decision. We leave any decision to each individual, overworked, overstretched project maintainer, and we assume that they will care about the design, the implementation, the QA, and the integration of each and every feature, while simultaneously dealing with the day to day maintenance in the form of issue triaging, code reviews, and general housekeeping of their project. None of these decisions are shared, documented, or even properly planned; they may exist in the form of individual bug reports, but the overall process is opaque to other maintainers or contributors.
Background: existing teams
GNOME has various teams already, but none of them apply to components and applications, and they exist either as emanations of the Foundation’s board (like the release team), or they have been grandfathered in from informal structures, and they exist (or not exist, like in the case of the current Documentation team) de facto, without a scope, mission, or official membership.
It is impossible to know if somebody is, for instance, member of a team: you have to join a Matrix room, ask questions, present work, and hope that the people replying to you are actually GNOME contributors, as opposed to bystanders.
Background: project fiefdoms
GNOME works as a collection of projects, each maintained by a few people, or as its most common, a single person. There are no rules that prevent a single person from maintaining multiple projects. There is no formal venue for discussing changes across multiple projects. There is no formal process to propose changes across multiple projects. Each project is its own special, unique snowflake when it comes to interaction with other projects, both as dependencies and reverse dependency. While some projects have multiple contributors that could be described as “maintainers”, they are an overall minority.
Each project maintainer (be it expressed as an individual or a team) is responsible for vetting every change, act as a mentor, provide institutional knowledge, and general gatekeeper. Various individuals operate as the sole maintainer for multiple projects. This ensure that any decision or change that affects multiple projects under GNOME is delegated to one or few individuals.
What needs improvement
While we need a formal process for making and documenting technical decisions, we are currently lacking a structure to even implement that process. In order to have a way to create proposals that are evaluated by the community of contributors to the GNOME project, shepherded into completion, and formally approved by a steering committee, we need a way to structure the community of contributors to actually make that happen.
Governance structure
The basic idea is to dissolve the “projects rule” structure, and instead create new teams representing various areas of shared interest that include multiple projects; the existing contributors operate within the boundaries of these teams, and any decision making happens at the team level, as opposed of the project level.
Teams
Primary roles
Each team should:
- shepherd changes related to the team area.
- This means: ensuring all stakeholders are aware of a change; working on identifying design details, trade offs, and alternatives; build consensus
- accept or reject changes in the team area
- set policies on what changes can be reviewed and merged directly, and what changes require a larger discussion
- have regular meetings, each with public minutes
- have discussions on public forums as much as possible
- decide its own membership
- decide its own lead and representative
Decision making
Consensus
GNOME is based on rough consensus: decisions are achieved by listening to all stakeholders, addressing the blocking issues discovered during the discussion, and deciding when a certain acceptance threshold is achieved.
While a successful outcome is one where all sides of a debate have been heard and addressed in some way, it is important to note that consensus does not mean “design by committee”, nor it means indefinite blocking by one or few individuals.
Lack of consensus
In some cases consensus, rough or otherwise, cannot be reached. Some times it is caused by “trivial” concerns, like naming, even if there is consensus on the substance; in other cases, there can be some strongly held beliefs in either side of a debate. Teams are empowered to decide which one of their members should be in the “lead” position, to resolve the impasse, and make an executive decision.
The teams
The initial set of teams proposed is:
Team | Area of interest |
---|---|
Platform | The OS and application development layer |
OS | System components and OS integration |
Core apps | Core applications |
Tooling | Development tools and applications |
It is important to note that this list is just the initial set, and is predicated on having an already well-defined list of contributors in the area. New teams can be added after the governance model is adopted.
Each team can have additional sub-teams for focused topics.
Each team will have a dedicated area for discussion in Discourse, as well as a room on Matrix.
Each team is empowered to add or remove team members whenever needed, taking into consideration that team membership is not a precondition for contributing to projects within the team’s remit.
Platform team
Focuses on the libraries at the core of our software development platform.
The following sub-teams are part of the Platform team:
- Introspection: describing and consuming the software development platform (bindings, documentation, tests)
- Services: system and user session services that are provided by GNOME
OS team
Oversees the system components, like the compositor, system settings, networking, and the integration with the lower layers of the OS.
Core apps
Focuses on the applications that are part of the core GNOME user experience. The team is responsible for proposing the addition and removal of core applications to the Release team.
Tooling
Oversees the various applications and tools used for the development of GNOME components, as well as applications targeting GNOME.
The steering committee
The steering committee serves as the technical leadership of the GNOME project as a whole. In particular, it:
- Sets the overall direction and vision for the project. That means setting the core values that are used when making decisions about technical trade offs.
- Sets the priorities of the project. Design bandwidth and development resources are scarce commodities, and the steering committee makes decisions on what to priorities for each cycle.
- Focuses on broad concerns. The steering committee takes a global view of the GNOME project, to ensure that all its components fit together in a coherent way.
- Manages the teams. Over time, new teams may be needed, or existing teams may need to be split up or stood down; for specific concerns, new “strike teams” may be created to address limited tasks.
Duties and expectations
At a high level, the steering committee is only in charge of:
- identifying and prioritizing work that has no clear ownership
- delegating this work, potentially by creating new teams to own it
- making decisions on urgent matters that have no clear ownership
- coordinating project-wide changes to teams, structures, or processes
- ensuring teams are accountable to their area of interest, to other teams, and to the GNOME project as a whole
- ensuring where possible that teams have resources necessary to accomplish their work
- establishing the official position, opinion, or will of the GNOME project on technical matters
In addition to these duties, the steering committee has the additional expectations and constraints:
- delegate work; the committee should not take work beyond its duties
- ensure the long term operations of the project; the committee should ensure that project management work happens regularly, and does not accumulate organizational debt
- be accountable; the steering committee has broad powers, which means every member of the committee must be accountable for their actions
- be representational; the steering committee represents various aspects of the GNOME project, but it should also strive to represent the diversity of the GNOME community
- share burden; all members of the steering committee must share the burdens of the committee’s duties
- respect others’ purview; the steering committee must respect the purviews of each team. The committee should consult with and work together with teams on solutions, and should almost never make decisions that go against the wishes of any given team
- act in good faith; committee members should make decisions in the best interest of the GNOME project as a whole even if those decisions come into conflict with their individual teams, their employers, or other outside interests
- be transparent; while not all decisions (or aspects of a decision) can be made public, the steering committee should be as open and transparent about their decision-making as possible. The steering committee should also ensure the organizational structure of the GNOME project is clear and transparent
- respect privacy; the steering committee must never compromise personal or confidential information for the sake of transparency, including adjacent information that could unintentionally disclose privileged information
- foster a healthy working environment; the steering committee representatives should all feel satisfied with the amount and nature of their contribution. They should not feel that their presence on the committee is merely out of obligation but rather because they are actively participating in a meaningful way
- evolve; the steering committee is expected to evolve over time to meet the needs of teams, the GNOME project, and the community
Steering committee representatives and other team members serve as examples for those around them and the broader community. All of these roles represent positions of responsibility and leadership; their actions carry weight and can exert great force within the community, and should be wielded with due care. People choosing to serve in these roles should thus recognize that those around them will hold them to a correspondingly high standard.
Structure of the steering committee
The steering committee includes exactly one representative of each team, determined by the team members at their own choice.
Each representative represents at most one team, even if they are also a member of other teams. The primary responsibility of representing any GNOME team falls to the representative of the team they fall under.
List of teams
The steering committee is composed by a representative from the following teams:
- Platform
- OS
- Core apps
- Tooling
- Design
- Release
- Translation
- Infrastructure
Term limits
Each member of the steering committee has a term limit of 24 months (two years) in length. After the term expires, their respective team will propose a new member for the steering committee. There are no hard limits on the amount of non-consecutive terms that a member can serve on the steering committee, or the number of terms served for other teams.
Half the appointments will happen after the March release of GNOME, and the other half after the September release, to avoid the case of changing all representatives at the same time.
Limits on representatives from a single company/entity
Just like the board of directors of the GNOME Foundation, members of the steering committee must not disproportionately represent a single company, legal entity, or closely related set of legal entities. No organization, corporation or similar entity, or any affiliate thereof shall hold, directly or indirectly, more than 40% of the membership of the steering committee.
With an initial number of 8 members from the existing teams, this means no more than 3 members can belong to the same organization.
Relationship to the GNOME Foundation
The board of directors of the GNOME Foundation shall appoint a non-voting liaison to the steering committee, to ensure that the Foundation continues to not be responsible for the technical direction of the project.
Drawbacks
The main drawback of this proposal is that we may not have enough people to fill out these teams; ideally, the whole impetus of a team-based governance model is to bring in new contributors that have so far resisted the role of “maintainer”, but that may come at the cost of losing existing maintainers that feel that the GNOME project is better served with them acting as gatekeepers to ensure a consistent and coherent experience. While this proposal may seem radical, it is designed to take what is already partially implemented; this should mitigate the risk of alienating a large part of the contributors base.