# 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
 Andrew Lewycky
 Gavriel State
 Shannon Woods

Google Inc.
 Brent Austin
 Michael Bai
 John Bauman
 Henry Bridge
 Nat Duca
 Vangelis Kokkevis
 Zhenyao Mo
 Daniel Nicoara
 Alastair Patrick
 Alok Priyadarshi
 Kenneth Russell
 Brian Salomon
 Ben Vanik
 Adrienne Walker

Mozilla Corp.
 Ehsan Akhgari
 Benoit Jacob
 Makoto Kato
 Vladimir Vukicevic

Apple Inc.
 David Kilzer

Aitor Moreno <aitormoreno at gmail.com>
Jim Hauxwell <james at dattrax.co.uk>
ddefrostt
timeless
Yore Apex
Mark Callow
Yuriy O'Donnell
Sam Hocevar

