[llvm] [Docs] Project governance documentation (PR #197108)

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 3 01:31:47 PDT 2026


https://github.com/petrhosek updated https://github.com/llvm/llvm-project/pull/197108

>From 976195f9d5bea2cbf345a520bb1a29d802663d67 Mon Sep 17 00:00:00 2001
From: Petr Hosek <phosek at google.com>
Date: Tue, 6 May 2025 08:11:07 +0000
Subject: [PATCH 1/4] [Docs] Project governance documentation

This page largely covers the same information as proposal LP-0004 and
also includes information on current area team and project council
composition.
---
 llvm/docs/ProjectGovernance.rst | 204 ++++++++++++++++++++++++++++++++
 llvm/docs/index.rst             |   1 +
 2 files changed, 205 insertions(+)
 create mode 100644 llvm/docs/ProjectGovernance.rst

diff --git a/llvm/docs/ProjectGovernance.rst b/llvm/docs/ProjectGovernance.rst
new file mode 100644
index 0000000000000..2e7b233287727
--- /dev/null
+++ b/llvm/docs/ProjectGovernance.rst
@@ -0,0 +1,204 @@
+==================
+Project Governance
+==================
+
+.. contents::
+   :local:
+
+
+Area Teams
+==========
+
+Role and Responsibilities
+-------------------------
+
+*Area teams* have three main responsibilities.
+
+First, they are responsible for electing from among themselves a team secretary
+who will take notes of any team meetings and a team chair who facilitates team
+meetings and represents the team on the *project council*.
+
+Second, *area teams* are responsible for maintaining an up-to-date and
+comprehensive list of maintainers for their area of the project. They can
+nominate any individual they deem appropriate as maintainer of any area they
+are responsible for. The role of maintainer remains a volunteer role, and any
+individual can accept, decline, or resign the role for themselves as they feel
+appropriate.
+
+Finally, *area teams* are responsible for facilitating decision making for
+their area of the project. Facilitating decision making can take any number of
+forms ranging from contributing to RFC discussions, helping mediate
+disagreements.
+
+*Area teams* should prepare a meeting agenda by collecting all the active RFCs
+in the community or significant disagreements in pull requests. During the team
+meeting, the *area team* should try to identify actionable next steps or
+information to gather so the RFC or pull request can proceed. An *area team*
+may escalate to the *project council* as needed.
+
+When acting to facilitate decision making the *area team* should act as a
+mediator between different perspectives helping find common ground and
+recognizing that decisions need not be binary. The *area team* should seek to
+find the best solution to the framed problem, which may not be any of the
+proposed alternatives. If agreement cannot be reached, the *area team* may act
+as the final decision maker. In that capacity decisions of an *area team* are
+considered final, but can be overruled by a 2/3 majority vote of the project
+council or the *area team* itself revisiting the issue. If an *area team*
+cannot reach consensus, it may request the *project council* to resolve the
+disagreement.
+
+A fast "no" is often a better outcome than an indefinite "maybe". In
+recognition of that, an area team, when acting as the facilitator of decision
+making, will publicly communicate a timeline for discussion and decision
+making. The *area team* will communicate when a topic is on the agenda for a
+meeting with sufficient notice for relevant parties to participate.
+
+*Area teams* are not intended to be direction setters or primary maintainers of
+their areas, although individuals on an *area team* may fulfill that role
+separately. The area team's role is as a steward and moderator ensuring the
+health and smooth operation of the area.
+
+Elections and Composition
+-------------------------
+
+Each *area team* will have an odd number of members with a minimum of three (3)
+members and a maximum of nine (9) elected by the voting contributors.
+Candidates for *area teams* must be a voting contributor and self-nominated. An
+individual cannot serve on two *area teams*.
+
+An *area team* with less than nine members may increase its size up to nine
+members with a majority vote. The *area team* may then appoint members to fill
+any vacancies as normal. If at the beginning of an election there are
+insufficient candidates to fill all vacancies on an area team, the team size
+will decrease to the largest odd number that all the candidates can fill. If
+less than three candidates run for election for an *area team* the project
+council will either recruit members or disband the team.
+
+The *area team* will take an active role in identifying potential candidates to
+join the *area team* in future terms. In this capacity, the *area team* should
+keep a focus on growth and development of contributors in the community, and
+the community values promoting diversity and inclusivity.
+
+Members of an *area team* are elected for 1 year terms.
+
+Active Area Teams
+-----------------
+
+There are currently four *area teams*:
+
+* **LLVM** - Covering ``llvm`` source area.
+* **Clang** - Covering ``clang`` source area.
+* **MLIR** - Covering ``mlir`` source area.
+* **Infrastructure** - Covering project-wide automation and other infrastructure.
+
+Project Council
+===============
+
+Role and Responsibilities
+-------------------------
+
+The *project council* is composed of the chair from each of the *area teams*.
+
+The *project council* has a mandate to:
+
+* Prioritize the long term health of the LLVM project and community.
+* Shape the community to be accessible, inclusive, and sustainable.
+* Maintain the relationship between the LLVM Community and the LLVM Foundation.
+* Assist *area teams* in identifying and growing community leaders.
+* Facilitate seeking consensus among the LLVM Community and *area teams*.
+* Act as, or delegate to, an *area team* for all issues that are not covered by an area team, or span across multiple project areas.
+* As a last resort, act as the final decision maker on debates.
+
+The *project council* will elect from among themselves a secretary who will
+take notes of all meetings, a chair who facilitates meetings, and a liaison to
+the LLVM Foundation to manage the relationship between the *project council*
+and the LLVM Foundation.
+
+Representatives to the *project council* are also term limited. An individual
+may not serve on the *project council* for more than two consecutive terms.
+This limit may also be waived by the *project council* if and only if the
+respective team is unable to produce a different representative.
+
+The *project council* has the power to form and dissolve *area teams*. Forming
+an *area team* requires a majority vote. Any changes to the *area team*
+structures must be publicly disclosed including the motivation for the changes.
+Dissolving an area team, or altering the boundaries of an *area team* requires
+a consenting vote of the chair of the area team(s) being altered and a majority
+vote of the *project council*.
+
+
+Governance Meetings
+===================
+
+Each *area team* and the *project council* should have scheduled public
+meetings. The date of the scheduled meetings should be on the LLVM Community
+Calendar. The calendar invite will have a link to a public meeting agenda. The
+teams may have non-public meetings for discussion, deliberation, planning or
+other purposes. The team may cancel a meeting if no items are on the agenda or
+to accommodate member schedules (holidays, personal time, etc).
+
+Notes from all *area team* and *project council* meetings will be publicly
+posted. Notes will exclude reference to any private information, or information
+that otherwise needs to be confidential.
+
+
+Current Composition (2026)
+==========================
+
+Project Council
+---------------
+
+* **Chair:** Aaron Ballman (@AaronBallman) - representing Clang
+* **Secretary:** Alex Zinenko (@ftynse) - representing MLIR
+* **Members:**
+  * Nikita Popov (@nikic) - representing LLVM
+  * Reid Kleckner (@rnk) - representing Infrastructure
+
+Area Teams
+----------
+
+* **LLVM Area Team**
+  * Nikita Popov (**Chair**)
+  * Matt Arsenault
+  * Florian Hahn
+* **Clang Area Team**
+  * Aaron Ballman (**Chair**)
+  * Eli Friedman
+  * Erich Keane
+  * Corentin Jabot
+  * Shafik Yaghmour
+* **MLIR Area Team**
+  * Alex Zinenko (**Chair**)
+  * Renato Golin
+  * Matthias Springer
+* **Infrastructure Area Team**
+  * Reid Kleckner (**Chair**)
+  * Petr Hosek
+  * David Blaikie
+
+
+Meetings and Contact Information
+================================
+
+Project Council
+---------------
+* **Meetings:** First Wednesday of each month at 9:00 AM PT / 4:00 PM UTC / 6:00 PM CET.
+* **Contact:** Tag `@project-council` on `LLVM Discourse <https://discourse.llvm.org/>`_.
+
+Area Teams
+----------
+
+* **LLVM Area Team**
+  * **Meetings:** Bi-weekly on Wednesdays at 16:00-17:00 CET.
+  * **Contact:** Tag `@llvm-area-team` on `LLVM Discourse <https://discourse.llvm.org/>`_.
+* **Clang Area Team**
+  * **Meetings:** Closed administrative meeting bi-weekly on Thursdays at 10:00 AM PT. Open meetings are scheduled flexibly.
+  * **Contact:** Tag `@clang-area-team` on `LLVM Discourse <https://discourse.llvm.org/>`_.
+* **MLIR Area Team**
+  * **Meetings:** Announced on Discourse (not regularly scheduled at a fixed interval).
+  * **Contact:** Tag `@mlir-area-team` on `LLVM Discourse <https://discourse.llvm.org/>`_.
+* **Infrastructure Area Team**
+  * **Meetings:** Bi-weekly on Thursdays at 9:30 AM PT.
+  * **Contact:** Tag `@infrastructure-area-team` on `LLVM Discourse <https://discourse.llvm.org/>`_.
+
+All meetings are listed on the `LLVM Community Calendar <https://calendar.google.com/calendar/u/0/embed?src=calendar@llvm.org>`_.
diff --git a/llvm/docs/index.rst b/llvm/docs/index.rst
index 3f6364fb899c3..36a7c4d8827f2 100644
--- a/llvm/docs/index.rst
+++ b/llvm/docs/index.rst
@@ -91,6 +91,7 @@ LLVM welcomes contributions of all kinds. To learn more, see the following artic
 * :doc:`GettingInvolved`
 * :ref:`development-process`
 * :doc:`RFCProcess`
+* :doc:`ProjectGovernance`
 * :ref:`lists-forums`
 * :ref:`meetups-social-events`
 * :ref:`community-proposals`

>From 2da26c81fcfb01750a9c7157595b64bdc6d71716 Mon Sep 17 00:00:00 2001
From: Petr Hosek <phosek at google.com>
Date: Fri, 15 May 2026 17:52:59 +0000
Subject: [PATCH 2/4] Add Project Governance to the TOC tree

---
 llvm/docs/index.rst | 1 +
 1 file changed, 1 insertion(+)

diff --git a/llvm/docs/index.rst b/llvm/docs/index.rst
index 36a7c4d8827f2..4fd63dcf61e94 100644
--- a/llvm/docs/index.rst
+++ b/llvm/docs/index.rst
@@ -87,6 +87,7 @@ LLVM welcomes contributions of all kinds. To learn more, see the following artic
 
    GettingInvolved
    RFCProcess
+   ProjectGovernance
 
 * :doc:`GettingInvolved`
 * :ref:`development-process`

>From e10cf7336d064f6378aef4760e0aa1fd4da8aea2 Mon Sep 17 00:00:00 2001
From: Petr Hosek <phosek at google.com>
Date: Wed, 3 Jun 2026 08:17:24 +0000
Subject: [PATCH 3/4] Fix formatting

---
 llvm/docs/ProjectGovernance.rst | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/llvm/docs/ProjectGovernance.rst b/llvm/docs/ProjectGovernance.rst
index 2e7b233287727..7ce7bbf646593 100644
--- a/llvm/docs/ProjectGovernance.rst
+++ b/llvm/docs/ProjectGovernance.rst
@@ -151,6 +151,7 @@ Project Council
 * **Chair:** Aaron Ballman (@AaronBallman) - representing Clang
 * **Secretary:** Alex Zinenko (@ftynse) - representing MLIR
 * **Members:**
+
   * Nikita Popov (@nikic) - representing LLVM
   * Reid Kleckner (@rnk) - representing Infrastructure
 
@@ -158,20 +159,27 @@ Area Teams
 ----------
 
 * **LLVM Area Team**
+
   * Nikita Popov (**Chair**)
   * Matt Arsenault
   * Florian Hahn
+
 * **Clang Area Team**
+
   * Aaron Ballman (**Chair**)
   * Eli Friedman
   * Erich Keane
   * Corentin Jabot
   * Shafik Yaghmour
+
 * **MLIR Area Team**
+
   * Alex Zinenko (**Chair**)
   * Renato Golin
   * Matthias Springer
+
 * **Infrastructure Area Team**
+
   * Reid Kleckner (**Chair**)
   * Petr Hosek
   * David Blaikie
@@ -189,15 +197,22 @@ Area Teams
 ----------
 
 * **LLVM Area Team**
+
   * **Meetings:** Bi-weekly on Wednesdays at 16:00-17:00 CET.
   * **Contact:** Tag `@llvm-area-team` on `LLVM Discourse <https://discourse.llvm.org/>`_.
+
 * **Clang Area Team**
+
   * **Meetings:** Closed administrative meeting bi-weekly on Thursdays at 10:00 AM PT. Open meetings are scheduled flexibly.
   * **Contact:** Tag `@clang-area-team` on `LLVM Discourse <https://discourse.llvm.org/>`_.
+
 * **MLIR Area Team**
+
   * **Meetings:** Announced on Discourse (not regularly scheduled at a fixed interval).
   * **Contact:** Tag `@mlir-area-team` on `LLVM Discourse <https://discourse.llvm.org/>`_.
+
 * **Infrastructure Area Team**
+
   * **Meetings:** Bi-weekly on Thursdays at 9:30 AM PT.
   * **Contact:** Tag `@infrastructure-area-team` on `LLVM Discourse <https://discourse.llvm.org/>`_.
 

>From 80f4a803bbb944a2a3d3a9361f8cb2006af585eb Mon Sep 17 00:00:00 2001
From: Petr Hosek <phosek at google.com>
Date: Wed, 3 Jun 2026 08:30:55 +0000
Subject: [PATCH 4/4] Include section for elections and vacancies

---
 llvm/docs/ProjectGovernance.rst | 40 ++++++++++++++++++++++++++++++---
 1 file changed, 37 insertions(+), 3 deletions(-)

diff --git a/llvm/docs/ProjectGovernance.rst b/llvm/docs/ProjectGovernance.rst
index 7ce7bbf646593..96419384b87db 100644
--- a/llvm/docs/ProjectGovernance.rst
+++ b/llvm/docs/ProjectGovernance.rst
@@ -61,10 +61,17 @@ health and smooth operation of the area.
 Elections and Composition
 -------------------------
 
+To be a *voting contributor* an individual must be a member of the LLVM GitHub
+Organization, and either have a public email address on their GitHub profile or
+have made a commit to the LLVM project using a non-private email address. The
+email address on the GitHub public profile or retrieved via commit metadata
+will be used for all election-related communication.
+
 Each *area team* will have an odd number of members with a minimum of three (3)
-members and a maximum of nine (9) elected by the voting contributors.
+members and a maximum of nine (9) elected by the *voting contributors*.
 Candidates for *area teams* must be a voting contributor and self-nominated. An
-individual cannot serve on two *area teams*.
+individual cannot serve on two *area teams*. Members of an *area team* are
+elected for 1 year terms.
 
 An *area team* with less than nine members may increase its size up to nine
 members with a majority vote. The *area team* may then appoint members to fill
@@ -79,7 +86,33 @@ join the *area team* in future terms. In this capacity, the *area team* should
 keep a focus on growth and development of contributors in the community, and
 the community values promoting diversity and inclusivity.
 
-Members of an *area team* are elected for 1 year terms.
+Elections for area teams occur in January of each year. A two week long
+nomination period begins the second Monday in January. During the nomination
+period any *voting contributor* can nominate themselves or another *voting
+contributor* to run for any one area team. No individual can run for more than
+one area team in a single election. An individual nominated for more than one
+area team will be responsible for choosing which team they want to run for.
+Nominations will be recorded publicly for community visibility. Unsuccessful
+results in an election do not impact nomination eligibility in subsequent
+elections.
+
+Voting begins the fourth Monday in January and continues for 2 weeks. Election
+results will be announced no later than two days after voting closes. The term
+of the newly elected area team begins the first Monday in March. Each area team
+will meet during the first week in March to elect from themselves the team
+secretary and chair to re-constitute the project council.
+
+Vacancies
+---------
+
+A member of an *area team* can resign at any time. As life can sometimes happen
+unexpectedly, a member of an *area team* may be unable to fulfill their duties or
+resign. In that case, a majority of the remaining *area team* may vote to declare
+the member removed in absentia after a 90-day absence.
+
+If someone resigns or is otherwise removed from an *area team*, the remaining
+members of the *area team* may appoint a replacement to serve the remainder of
+the term through any process they choose.
 
 Active Area Teams
 -----------------
@@ -91,6 +124,7 @@ There are currently four *area teams*:
 * **MLIR** - Covering ``mlir`` source area.
 * **Infrastructure** - Covering project-wide automation and other infrastructure.
 
+
 Project Council
 ===============
 



More information about the llvm-commits mailing list