﻿# This is the official list of people who can contribute
# (and who have contributed) code to the ANGLE project
# repository.
# The AUTHORS file lists the copyright holders; this file
# lists people.  For example, Google employees are listed here
# but not in AUTHORS, because Google holds the copyright.
#

TransGaming Inc.
 Nicolas Capens
 Daniel Koch
 Geoff Lang
 Andrew Lewycky
 Jamie Madill
 Gavriel State
 Shannon Woods

Google Inc.
 Brent Austin
 Michael Bai
 John Bauman
 Peter Beverloo
 Eric Binet
 Steve Block
 Rachel Blum
 Eric Boren
 Henry Bridge
 Victor Costan
 James Dong
 Nat Duca
 Courtney Goeltzenleuchter
 Tobin Ehlis
 Ian Elliott
 Scott Graham
 Peter Kasting
 Vangelis Kokkevis
 Charlie Lao
 Jiacheng Lu
 Zhenyao Mo
 Daniel Nicoara
 Kai Ninomiya
 Cody Northrop
 Justin Novosad
 Alastair Patrick
 Alok Priyadarshi
 Kenneth Russell
 Jonah Ryan-Davis
 Brian Salomon
 Justin Schuh
 Gregg Tavares
 thestig@chromium.org
 Jeff Timanus
 Tim Van Patten
 Ben Vanik
 Adrienne Walker
 Corentin Wallez
 Shahbaz Youssefi
 Hailin Zhang

Adobe Systems Inc.
 Alexandru Chiculita
 Steve Minns
 Max Vujovic

Apple Inc.
 Dan Glastonbury
 Dean Jackson
 Kimmo Kinnunen
 Kyle Piddington

Autodesk, Inc.
 Ranger Harke

Cloud Party, Inc.
 Conor Dickinson

The Qt Company Ltd.
 Andrew Knight

Imagination Technologies Ltd.
 Gregoire Payen de La Garanderie
 Kyle Griffiths

Intel Corporation
 Jin Yang
 Andy Chen
 Josh Triplett
 Sudarsana Nagineni
 Jiajia Qin
 Jiawei Shao
 Jie Chen
 Qiankun Miao
 Bryan Bernhart
 Yunchao He
 Xinghua Cao
 Brandon Jones
 Enrico Galli

Klarälvdalens Datakonsult AB
 Milian Wolff

Mozilla Corp.
 Dzmitry Malyshau
 Ehsan Akhgari
 Edwin Flores
 Jeff Gilbert
 Mike Hommey
 Benoit Jacob
 Makoto Kato
 Vladimir Vukicevic
 Josh Matthews

Turbulenz
 Michael Braithwaite

Ulrik Persson (ddefrostt)
Mark Banner (standard8mbp)
David Kilzer
Jacek Caban
Tibor den Ouden
Régis Fénéon
Sebastian Bergstein
James Ross-Gowan
Andrei Volykhin
Jérôme Duval
Till Rathmann
Nick Shaforostov

Microsoft Corporation
 Cooper Partin
 Austin Kinross
 Mingyu Hu
 Minmin Gong
 Shawn Hargreaves
 Rafael Cintron
 James Clarke
 Nathan Zabriskie
 Patrick To

Microsoft Open Technologies, Inc.
 Cooper Partin
 Austin Kinross

NVIDIA Corporation
 Olli Etuaho
 Arun Patole
 Qingqing Deng
 Kimmo Kinnunen
 Sami Väisänen
 Martin Radev
 Joonatan Saarhelo
 Markus Tavenrath
 Anders Leino

Opera Software ASA
 Daniel Bratell
 Tomasz Moniuszko
 David Landell

Advanced Micro Devices, Inc.
 Russ Lind

LG Electronics, Inc.
 Jani Hautakangas
 Ivan Murashov

IBM Inc.
 Junliang Yan

AdaptVis GmbH
 Sascha Kolodzey

Samsung Electronics, Inc.
 Brandon Schade
 Colin Peter
 Hyunchang Kim
 Hyunseok Ko
 Jaedon Lee
 Jeff Vigil
 Jonah Taylor
 Kevin Jung
 Kyeongmin Kim
 Mahmoud Kharsa
 Mathew Prabakar
 Minkyu Jeong
 Mohan Maiya
 Nirmal Singh
 Peter Mowry
 Sangwon Park
 Saurabh Badenkal
 Younggwan Kim
 Sungyong Choi

Arm Ltd.
 Fei Yang
 Xinyi He
 Sunny Sun
 Xiaoxuan Liu
 Ancheng Qiao
 Amy Liu
 Jian Li
 Cheryl Wei
 Guoxing Wu
 Min Zhang

Broadcom Inc.
 Gary Sweet

Facebook, Inc.
 Artem Bolgar

The Khronos Group, Inc.
 Alexey Knyazev

Igalia, S.L.
 Jose Dapena Paz

Numfum GmbH
 Carl Woffenden

Collabora, Ltd.
 Lubosz Sarnecki

LunarG, Inc.
 Mark Lobodzinski

Valve Corporation
 Steven Noonan

Yandex LLC
 Andrew Naumov

Rive
 Chris Dalton

Institute of Software, Chinese Academy of Sciences
 Wang Chen
