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