| # 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 | |
| ``` |