This is an automated email from the ASF dual-hosted git repository.
apitrou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-site.git
The following commit(s) were added to refs/heads/master by this push:
new e68cfc6 ARROW-11876: [Website] Update governance page
e68cfc6 is described below
commit e68cfc66085e426e3b97d0f1ad090d8abf5913c2
Author: Antoine Pitrou <[email protected]>
AuthorDate: Mon Mar 15 17:24:24 2021 +0100
ARROW-11876: [Website] Update governance page
- Update chair to Wes from Jacques
- Reorganize YAML file to make it easier to edit and maintain
- Add a verification script to check the local list is up-to-date
Closes #96 from pitrou/ARROW-11876-governance and squashes the following
commits:
5c4e55fac <Antoine Pitrou> ARROW-11876: Update governance page
Authored-by: Antoine Pitrou <[email protected]>
Signed-off-by: Antoine Pitrou <[email protected]>
---
_data/committers.yml | 281 +++++++++++++++++++++++---------------------
committers.md | 17 ++-
scripts/check_committers.py | 88 ++++++++++++++
scripts/requirements.txt | 3 +
4 files changed, 252 insertions(+), 137 deletions(-)
diff --git a/_data/committers.yml b/_data/committers.yml
index 7f1619f..d473c60 100644
--- a/_data/committers.yml
+++ b/_data/committers.yml
@@ -15,203 +15,216 @@
#
# Database of Apache Arrow committers and PMC
#
-- name: Jacques Nadeau
+
+# List of Arrow committers, sorted by role and name.
+# Affiliations are not necessarily up-to-date...
+
+# You can verify this list against the ASF-maintained roster by running
+# `scripts/check_committers.py`.
+
+- name: Wes McKinney
role: VP
- alias: jacques
- affiliation: Dremio
-- name: Ted Dunning
+ alias: wesm
+ affiliation: Ursa Computing
+
+- name: Abdelhakim Deneche
role: PMC
- alias: tdunning
- affiliation: MapR
-- name: P. Taylor Goetz
+ alias: adeneche
+ affiliation: Salesforce
+- name: Alex Levenson
role: PMC
- alias: ptgoetz
- affiliation: Monetate
-- name: Julian Hyde
+ alias: alexlevenson
+ affiliation: Twitter
+- name: Andrew Lamb
role: PMC
- alias: jhyde
- affiliation: Looker
-- name: Reynold Xin
+ alias: alamb
+ affiliation: InfluxData
+- name: Andy Grove
role: PMC
- alias: rxin
- affiliation: Databricks
-- name: James Taylor
+ alias: agrove
+ affiliation: NVIDIA
+- name: Antoine Pitrou
role: PMC
- alias: jamestaylor
- affiliation: Salesforce
-- name: Julien Le Dem
+ alias: apitrou
+ affiliation: Independent / Ursa Computing
+- name: François Saint-Jacques
role: PMC
- alias: julien
- affiliation: Datakin
+ alias: fsaintjacques
+ affiliation: Optable
+- name: Hanifi Gunes
+ role: PMC
+ alias: hg
+ affiliation: MZ
+- name: Jacques Nadeau
+ role: PMC
+ alias: jacques
+ affiliation: Dremio
- name: Jake Luciani
role: PMC
alias: jake
affiliation: DataStax
+- name: James Taylor
+ role: PMC
+ alias: jamestaylor
+ affiliation: Salesforce
- name: Jason Altekruse
role: PMC
alias: json
affiliation: Workday
-- name: Alex Levenson
+- name: Jorge Cardoso Leitao
role: PMC
- alias: alexlevenson
- affiliation: Twitter
-- name: Parth Chandra
+ alias: jorgecarleitao
+ affiliation: Munin Data ApS
+- name: Julian Hyde
role: PMC
- alias: parthc
- affiliation: MapR
+ alias: jhyde
+ affiliation: Looker
+- name: Julien Le Dem
+ role: PMC
+ alias: julien
+ affiliation: Datakin
+- name: Kouhei Sutou
+ role: PMC
+ alias: kou
+ affiliation: ClearCode
+- name: Krisztián Szűcs
+ role: PMC
+ alias: kszucs
+ affiliation: Ursa Computing
- name: Marcel Kornacker
role: PMC
alias: marcel
affiliation: Independent
-- name: Steven Phillips
- role: PMC
- alias: smp
- affiliation: Dremio
-- name: Hanifi Gunes
+- name: Micah Kornfield
role: PMC
- alias: hg
- affiliation: MZ
-- name: Abdelhakim Deneche
+ alias: emkornfield
+ affiliation: Google
+- name: Neal Richardson
role: PMC
- alias: adeneche
- affiliation: Salesforce
-- name: Wes McKinney
+ alias: npr
+ affiliation: Ursa Computing
+- name: P. Taylor Goetz
role: PMC
- alias: wesm
- affiliation: Ursa Labs / RStudio
-- name: David Alves
- role: Committer
- alias: dralves
- affiliation: CortexXus
-- name: Ippokratis Pandis
- role: Committer
- alias: ippokratis
- affiliation: Amazon
-- name: Uwe L. Korn
+ alias: ptgoetz
+ affiliation: Monetate
+- name: Parth Chandra
role: PMC
- alias: uwe
- affiliation: Quantco
-- name: Kouhei Sutou
+ alias: parthc
+ affiliation: MapR
+- name: Phillip Cloud
role: PMC
- alias: kou
- affiliation: ClearCode
+ alias: cpcloud
+ affiliation: Standard Cognition
- name: Philipp Moritz
role: PMC
alias: pcmoritz
affiliation: Anyscale
-- name: Phillip Cloud
+- name: Reynold Xin
role: PMC
- alias: cpcloud
- affiliation: Standard Cognition
-- name: Bryan Cutler
- role: Committer
- alias: cutlerb
- affiliation: IBM
-- name: Li Jin
- role: Committer
- alias: icexelloss
- affiliation: Two Sigma
+ alias: rxin
+ affiliation: Databricks
+- name: Sebastien Binet
+ role: PMC
+ alias: sbinet
+ affiliation: CERN
- name: Siddharth Teotia
role: PMC
alias: siddteotia
affiliation: LinkedIn
-- name: Brian Hulette
- role: Committer
- alias: bhulette
- affiliation: Google
-- name: Robert Nishihara
- role: Committer
- alias: robertnishihara
- affiliation: Anyscale
-- name: Paul Taylor
- role: Committer
- alias: ptaylor
- affiliation: NVIDIA
-- name: Antoine Pitrou
+- name: Steven Phillips
role: PMC
- alias: apitrou
- affiliation: Independent / Ursa Labs
-- name: Andy Grove
+ alias: smp
+ affiliation: Dremio
+- name: Ted Dunning
role: PMC
- alias: agrove
- affiliation: NVIDIA
-- name: Krisztián Szűcs
+ alias: tdunning
+ affiliation: MapR
+- name: Uwe L. Korn
role: PMC
- alias: kszucs
- affiliation: Ursa Labs
-- name: Yosuke Shiro
+ alias: uwe
+ affiliation: Quantco
+
+- name: Ben Kietzman
role: Committer
- alias: shiro
- affiliation: Red Data Tools
-- name: Romain Francois
+ alias: bkietz
+ affiliation: Ursa Computing
+- name: Brian Hulette
role: Committer
- alias: romainfrancois
- affiliation: RStudio
-- name: Sebastien Binet
- role: PMC
- alias: sbinet
- affiliation: CERN
-- name: Paddy Horan
+ alias: bhulette
+ affiliation: Google
+- name: Bryan Cutler
role: Committer
- alias: paddyhoran
- affiliation: MetLife
+ alias: cutlerb
+ affiliation: IBM
- name: Chao Sun
role: Committer
alias: sunchao
affiliation: Uber
-- name: Micah Kornfield
- role: PMC
- alias: emkornfield
- affiliation: Google
-- name: Neville Dipale
- role: Committer
- alias: nevime
- affiliation: commutenav
-- name: François Saint-Jacques
- role: PMC
- alias: fsaintjacques
- affiliation: Ursa Labs / RStudio
-- name: Praveen Kumar
+- name: David Alves
role: Committer
- alias: praveenbingo
- affiliation: Dremio
+ alias: dralves
+ affiliation: CortexXus
- name: David Li
role: Committer
alias: lidavidm
- affiliation: Two Sigma
-- name: Ben Kietzman
- role: Committer
- alias: bkietz
- affiliation: Ursa Labs / RStudio
-- name: Kenta Murata
- role: Committer
- alias: mrkn
- affiliation: Speee, Inc.
-- name: Neal Richardson
- role: PMC
- alias: npr
- affiliation: Ursa Labs / RStudio
+ affiliation: Ursa Computing
- name: Eric Erhardt
role: Committer
alias: eerhardt
affiliation: Microsoft
+- name: Ippokratis Pandis
+ role: Committer
+ alias: ippokratis
+ affiliation: Amazon
+- name: Ji Liu
+ role: Committer
+ alias: tianchen
+ affiliation: Alibaba
- name: Joris van den Bossche
role: Committer
alias: jorisvandenbossche
- affiliation: Ursa Labs
+ affiliation: Ursa Computing
+- name: Kenta Murata
+ role: Committer
+ alias: mrkn
+ affiliation: Speee, Inc.
+- name: Li Jin
+ role: Committer
+ alias: icexelloss
+ affiliation: Two Sigma
- name: Liya Fan
role: Committer
alias: liyafan
affiliation: Alibaba
-- name: Ji Liu
+- name: Neville Dipale
role: Committer
- alias: tianchen
- affiliation: Alibaba
-- name: Jorge Cardoso Leitao
+ alias: nevime
+ affiliation: commutenav
+- name: Paddy Horan
role: Committer
- alias: jorgecarleitao
- affiliation: Munin Data ApS
+ alias: paddyhoran
+ affiliation: MetLife
+- name: Paul Taylor
+ role: Committer
+ alias: ptaylor
+ affiliation: NVIDIA
+- name: Praveen Kumar
+ role: Committer
+ alias: praveenbingo
+ affiliation: Dremio
+- name: Robert Nishihara
+ role: Committer
+ alias: robertnishihara
+ affiliation: Anyscale
+- name: Romain Francois
+ role: Committer
+ alias: romainfrancois
+ affiliation: RStudio
- name: Yibo Cai
role: Committer
alias: yibocai
affiliation: Arm
+- name: Yosuke Shiro
+ role: Committer
+ alias: shiro
+ affiliation: Red Data Tools
diff --git a/committers.md b/committers.md
index 0eb4212..cf4b21d 100644
--- a/committers.md
+++ b/committers.md
@@ -24,11 +24,17 @@ limitations under the License.
## Apache Arrow Project Governance
-The Arrow project is a part of the Apache Software Foundation and follows its
[project management
guidelines](https://www.apache.org/foundation/how-it-works.html#management),
which promote community-led consensus decisionmaking,
[independent](https://community.apache.org/projectIndependence.html) of
commercial influence.
+The Arrow project is a part of the Apache Software Foundation and follows
+its [project management
guidelines](https://www.apache.org/foundation/how-it-works.html#management),
+which promote community-led consensus decisionmaking,
+[independent](https://community.apache.org/projectIndependence.html) of
+commercial influence.
### Project Management Committee (PMC)
-The [PMC](https://www.apache.org/foundation/how-it-works.html#pmc-members)
governs the project. Members
[vote](https://www.apache.org/foundation/voting.html) on important decisions,
including releases and inviting committers to join the PMC.
+The [PMC](https://www.apache.org/foundation/how-it-works.html#pmc-members)
+governs the project. Members
[vote](https://www.apache.org/foundation/voting.html)
+on important decisions, including releases and inviting committers to join the
PMC.
<table class="table table-striped"><thead>
<tr>
@@ -57,7 +63,12 @@ The
[PMC](https://www.apache.org/foundation/how-it-works.html#pmc-members) gover
### Committers
-Contributors who have demonstrated a sustained commitment to the project, not
only authoring code but also reviewing others' patches and exercising good
judgment, may be invited by the PMC to become
[committers](https://www.apache.org/foundation/how-it-works.html#committers).
Committers are authorized to merge code patches to the project and serve as
non-voting project maintainers.
+Contributors who have demonstrated a sustained commitment to the project, not
+only authoring code but also reviewing others' patches and exercising good
+judgment, may be invited by the PMC to become
+[committers](https://www.apache.org/foundation/how-it-works.html#committers).
+Committers are authorized to merge code patches to the project and serve as
+non-voting project maintainers.
<table class="table table-striped"><thead>
<tr>
diff --git a/scripts/check_committers.py b/scripts/check_committers.py
new file mode 100755
index 0000000..8b66a0d
--- /dev/null
+++ b/scripts/check_committers.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python3
+
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#
+# Utility for checking that the local committers list used to generate
+# the Governance page is up-to-date with the authoritative ASF roster.
+#
+
+from collections import namedtuple
+import json
+import os
+import sys
+
+import requests
+import yaml
+
+
+git_root = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
+
+committers_yaml = os.path.join(git_root, "_data", "committers.yml")
+
+# See https://home.apache.org/phonebook-about.html
+# for available resources
+committers_url = "https://whimsy.apache.org/public/public_ldap_projects.json"
+
+Roster = namedtuple('Roster', ('committers', 'pmcs'))
+
+
+def get_asf_roster():
+ r = requests.get(committers_url)
+ j = r.json()
+ proj = j['projects']['arrow']
+ pmcs = set(proj['owners'])
+ committers = set(proj['members']) - pmcs
+ return Roster(committers, pmcs)
+
+
+def get_local_roster():
+ with open(committers_yaml, "r") as f:
+ d = yaml.safe_load(f)
+ committers = set()
+ pmcs = set()
+ for member in d:
+ uid = member['alias']
+ role = member['role']
+ if role in ('PMC', 'VP'):
+ pmcs.add(uid)
+ elif role == 'Committer':
+ committers.add(uid)
+ else:
+ raise ValueError(f"Invalid role {role!r} for {uid}")
+ return Roster(committers, pmcs)
+
+
+if __name__ == "__main__":
+ local_roster = get_local_roster()
+ asf_roster = get_asf_roster()
+ if local_roster == asf_roster:
+ print("Committer list up-to-date")
+ sys.exit(0)
+
+ missing_pmcs = asf_roster.pmcs - local_roster.pmcs
+ if missing_pmcs:
+ print("Missing PMCs in local list:", sorted(missing_pmcs))
+ missing_committers = asf_roster.committers - local_roster.committers
+ if missing_committers:
+ print("Missing committers in local list:", sorted(missing_committers))
+ unexpected_members = ((local_roster.pmcs | local_roster.committers) -
+ (asf_roster.pmcs | asf_roster.committers))
+ if unexpected_members:
+ print("Unexpected members in local list:", sorted(unexpected_members))
+ sys.exit(1)
diff --git a/scripts/requirements.txt b/scripts/requirements.txt
new file mode 100644
index 0000000..41a91df
--- /dev/null
+++ b/scripts/requirements.txt
@@ -0,0 +1,3 @@
+jira
+pyyaml
+requests