#
# 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.
#

- name: Alexandre V Evfimievski
  apacheId: ae2015
  githubId: ae2015
  role: PMC Member
  org: IBM

- name: Arnab Phani
  apacheId: arnabp20
  githubId: phaniarnab 
  role: PMC Member
  org: TU Graz

- name: Arvind Surve
  apacheId: acs_s
  githubId: asurve
  role: PMC Member
  org: IBM
  
- name: Badrul Chowdhury
  apacheId: bchowdhury
  githubId: BACtaki
  role: Committer
  org: Apple

- name: Berthold Reinwald
  apacheId: reinwald
  githubId: bertholdreinwald
  role: PMC Member
  org: IBM

- name: David Weissteiner
  apacheId: ywcb00
  githubId: ywcb00
  role: Committer
  org: TU Graz

- name: DB Tsai
  apacheId: dbtsai
  githubId: dbtsai
  role: PMC Member
  org: Netflix

- name: Deron Eriksson
  apacheId: deron
  githubId: deroneriksson
  role: PMC Member
  org: IBM

- name: Faraz Makari
  apacheId: fmakari
  githubId: fmakari
  role: PMC Member
  org: Daimler TSS

- name: Felix Schüler
  apacheId: fschueler
  githubId: fschueler
  role: PMC Member
  org: TU Berlin, DIMA

- name: Fred Reiss
  apacheId: freiss
  githubId: frreiss
  role: PMC Member
  org: IBM

- name: Glenn Weidner
  apacheId: gweidner
  githubId: gweidner
  role: PMC Member
  org: IBM

- name: Guobao Li
  apacheId: liguobao
  githubId: EdgarLGB
  role: Committer
  org: Criteo

- name: Henry Saputra
  apacheId: hsaputra
  githubId: hsaputra
  role: PMC Member, Mentor
  org: eBay

- name: Holden Karau
  apacheId: holden
  githubId: holdenk
  role: PMC Member
  org: IBM

- name: Janardhan Pulivarthi
  apacheId: janardhan
  githubId: j143
  role: PMC Member
  org: Mavenir

- name: Joseph Bradley
  apacheId: jkbradley
  githubId: jkbradley
  role: PMC Member
  org: Databricks

- name: Kevin Innerebner
  apacheId: kinnerebner
  githubId: kev-inn
  role: Committer
  org: TU Graz

- name: Krishna Kalyan
  apacheId: kkalyan
  githubId: krishnakalyan3
  role: Committer
  org: Cloudera

- name: Luciano Resende
  apacheId: lresende
  githubId: lresende
  role: PMC Member, Mentor
  org: IBM

- name: Mark Dokter
  apacheId: markd
  githubId: corepointer
  role: Committer
  org: TU Graz

- name: Matthias Boehm
  apacheId: mboehm7
  githubId: mboehm7
  role: PMC Member, Chair
  org: TU Graz, previously IBM

- name: Mike Dusenberry
  apacheId: dusenberrymw
  githubId: dusenberrymw
  role: PMC Member
  org: IBM

- name: Nakul Jindal
  apacheId: nakul02
  githubId: nakul02
  role: PMC Member
  org: IBM

- name: Niketan Pansare
  apacheId: niketanpansare
  githubId: niketanpansare
  role: PMC Member
  org: IBM

- name: Olga Ovcharenko
  apacheId: oovcharenko
  githubId: OlgaOvcharenko
  role: PMC Member
  org: TU Graz

- name: Patrick Wendell
  apacheId: pwendell
  githubId: pwendell
  role: PMC Member, Mentor
  org: Databricks

- name: Prithviraj Sen
  apacheId: prithvi
  githubId: prithvirajsen
  role: PMC Member
  org: IBM

- name: Reynold Xin
  apacheId: rxin
  githubId: rxin
  role: PMC Member, Mentor
  org: Databricks

- name: Sebastian Baunsgaard
  apacheId: baunsgaard
  githubId: Baunsgaard
  role: PMC Member
  org: TU Graz

- name: Shirish Tatikonda
  apacheId: shirisht
  githubId: shirisht
  role: PMC Member
  org: Target

- name: Shafaq Siddiqi
  apacheId: ssiddiqi
  githubId: Shafaq-Siddiqi
  role: Committer
  org: TU Graz

- name: Xiangrui Meng
  apacheId: meng
  githubId: mengxr
  role: PMC Member
  org: Databricks
