# This the official list of Bazel authors for copyright purposes.
# This file is distinct from the CONTRIBUTORS files.
# See the latter for an explanation.

# Names should be added to this file as:
# Name or Organization <email address>
# The email address is not required for organizations.

Google Inc.
Spotify AB
VMware Inc.
Damien Martin-Guillerez <dmarting@google.com>
David Chen <dzc@google.com>
Florian Weikert <fwe@google.com>
Francois-Rene Rideau <tunes@google.com>
Julio Merino <jmmv@google.com>
Kamal Marhubi <kamal@marhubi.com>
Kristina Chodorow <kchodorow@google.com>
Philipp Wollermann <philwo@google.com>
Ulf Adams <ulfjack@google.com>
