diff options
Diffstat (limited to 'OWNERS.md')
| -rw-r--r-- | OWNERS.md | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/OWNERS.md b/OWNERS.md new file mode 100644 index 000000000000..601b5c641f21 --- /dev/null +++ b/OWNERS.md @@ -0,0 +1,68 @@ +# Background + +As general background, `OWNERS` files expedite code reviews by helping code +authors quickly find relevant reviewers, and they also ensure that stakeholders +are involved in code changes in their areas. + +The structure of `frameworks/base/` is unique among Android repositories, and +it's evolved into a complex interleaved structure over the years. Because of +this structure, the best place to authoritatively define `OWNERS` can vary +wildly, but here are some common patterns: + +* `core/java/` contains source that is included in the base classpath, and as +such it's where most APIs are defined: + * `core/java/android/app/` + * `core/java/android/content/` +* `services/core/` contains most system services, and these directories +typically have more granularity than `core/java/`, since they can be refactored +without API changes: + * `services/core/java/com/android/server/net/` + * `services/core/java/com/android/server/wm/` +* `services/` contains several system services that have been isolated from the +main `services/core/` project: + * `services/appwidget/` + * `services/midi/` +* `apex/` contains Mainline modules: + * `apex/jobscheduler/` + * `apex/permission/` +* Finally, some teams may have dedicated top-level directories: + * `media/` + * `wifi/` + +# Design + +Area maintainers are strongly encouraged to list people in a single +authoritative `OWNERS` file in **exactly one** location. Then, other paths +should reference that single authoritative `OWNERS` file using an include +directive. This approach ensures that updates are applied consistently across +the tree, reducing maintenance burden. + +# Examples + +The exact syntax of `OWNERS` files can be difficult to get correct, so here are +some common examples: + +``` +# Complete include of top-level owners from this repo +include /ZYGOTE_OWNERS +# Partial include of top-level owners from this repo +per-file ZygoteFile.java = file:/ZYGOTE_OWNERS +``` +``` +# Complete include of subdirectory owners from this repo +include /services/core/java/com/android/server/net/OWNERS +# Partial include of subdirectory owners from this repo +per-file NetworkFile.java = file:/services/core/java/com/android/server/net/OWNERS +``` +``` +# Complete include of top-level owners from another repo +include platform/libcore:/OWNERS +# Partial include of top-level owners from another repo +per-file LibcoreFile.java = file:platform/libcore:/OWNERS +``` +``` +# Complete include of subdirectory owners from another repo +include platform/frameworks/av:/camera/OWNERS +# Partial include of subdirectory owners from another repo +per-file CameraFile.java = file:platform/frameworks/av:/camera/OWNERS +``` |