Each file in Fuchsia has a set of owners. These are tracked in files
named OWNERS
. One of these files is present in the root of the
repository, and many directories have their own OWNERS
files too.
Contents
Each OWNERS
file lists a number of individuals (by their email address) who are
familiar with and can provide code reviews for the contents of that directory.
Responsibilities
Fuchsia requires changes to have an Code-Review +2
review, which anyone in the
'OWNERS' file can provide. In addition, many OWNERS
files
contain a *
allowing anyone to provide such a +2
.
Tools
Gerrit has a "suggest owners" button that will list all the owners for all the files modified in a given change. More information on this is available on the Gerrit code-owners plugin page.
Format
Fuchsia uses the Gerrit file syntax for OWNERS
files.
Here's an example OWNERS
file:
# These users are owners
validuser1@example.com
validuser2@example.com
# Users listed elsewhere are also owners
include /path/to/another/OWNERS
# This user is only an owner of the listed file
per-file main.c = validuser3@example.com
Best practices
- It's important to have at least two individuals in an
OWNERS
file. Having areas of Fuchsia with a single owner leads to single points of failure. Having multiple owners ensures that knowledge and ownership is shared over areas of Fuchsia. - When applicable,
include
owners from another file rather than listing individuals. This creates fewer "sources of truth" and makes OWNERS maintenance easier.
Owners override
In some cases, the author of a change may wish to override OWNERS approval. This is appropriate primarily in cases where a change is mostly mechanical but touches a large fraction of the codebase, for example a trivial change to the signature of a commonly used API. CL authors can add owners-override@fuchsia.dev to the reviewer list to request owners override. This process should be used sparingly and review by local owners is preferred whenever it does not present and undue burden on developers.