# Licensed 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.
# Welcome to Jekyll!

aljoscha:
    name: Aljoscha Krettek
    email: aljoscha@apache.org
    twitter: aljoscha
altay:
    name: Ahmet Altay
    email: altay@apache.org
ccy:
    name: Charles Chen
    email: ccy@apache.org
davor:
    name: Davor Bonaci
    email: davor@apache.org
    twitter: BonaciDavor
dhalperi:
    name: Dan Halperin
    email: dhalperi@apache.org
    twitter:
fjp:
    name: Frances Perry
    email: frances@apache.org
    twitter: francesjperry
iemejia:
    name: Ismaël Mejía
    email: iemejia@apache.org
    twitter: iemejia
jamesmalone:
    name: James Malone
    email: jamesmalone@apache.org
    twitter: chimerasaurus
jesseanderson:
    name: Jesse Anderson
    twitter: jessetanderson
jphalip:
    name: Julien Phalip
    email: jphalip@google.com
    twitter: julienphalip
klk:
    name: Kenneth Knowles
    email: klk@apache.org
    twitter: KennKnowles
lkuligin:
    name: Leonid Kuligin
    email: kuligin@google.com
    twitter: lkulighin
robertwb:
    name: Robert Bradshaw
    email: robertwb@apache.org
    twitter:
takidau:
    name: Tyler Akidau
    email: takidau@apache.org
    twitter: takidau
tgroh:
    name: Thomas Groh
    email: tgroh@google.com
thw:
    name: Thomas Weise
    email: thw@apache.org
    twitter: thweise
jkff:
    name: Eugene Kirpichov
    email: ekirpichov@gmail.com
    twitter:
jbonofre:
    name: Jean-Baptiste Onofré
    email: jbonofre@apache.org
    twitter: jbonofre
ianand:
    name: Anand Iyer
    email: ianand@google.com
    twitter:
aromanenko:
    name: Alexey Romanenko
    email: aromanenko@apache.org
    twitter: alexromdev
pabloem:
    name: Pablo Estrada
    email: pabloem@apache.org
    twitter: polecitoem
rfernand:
    name: Rafael Fernández
    email: rfernand@google.com
mbaetens:
    name: Matthias Baetens
    email: baetensmatthias@gmail.com
    twitter: matthiasbaetens
