|
| 1 | +# How Cilium GitHub Teams Are Managed |
| 2 | +The Cilium project makes use of GitHub teams to help enforce responsibility boundaries with regard to the project codebase here on GitHub. |
| 3 | +GitHub teams loosely map groups of [contributors](https://github.com/cilium/community/blob/main/CONTRIBUTOR-LADDER.md) to the Cilium Project as either reviewers and/or committers, focused on a portion of the codebase. [GitHub teams](https://github.com/orgs/cilium/teams) are an implementation detail in how code access and review responsibilities are organized and are not a 1 to 1 mapping to [Cilium Project teams](https://github.com/cilium/community/blob/main/CONTRIBUTOR-ROLES.md). |
| 4 | + |
| 5 | +For example, the Cilium Project Code team, may require multiple GitHub teams in the Cilium GitHub organization to self-organize their work. |
| 6 | +These multiple GitHub teams will be composed of contributors at different steps along the contributor ladder: organizational members, reviewers, and committers. |
| 7 | +The different GitHub teams have different permissions, corresponding to the level of code access needed by the members of that team. |
| 8 | + |
| 9 | +Cilium GitHub organization team memberships can be self-managed by making use of team membership configuration files in this directory. |
| 10 | + |
| 11 | +Each Cilium GitHub team can establish a file in this directory managed by the CODEOWNERS system with the assistance of |
| 12 | +the Cilium GitHub organization [admins](https://github.com/cilium/community/blob/main/ADMINS-FOR-CILIUM.md) (or duly deputized members of the org tasked with helping initiating team self-management). |
| 13 | +You can submit a PR against the Community repository to start the process to request a new team configuration and the correct Cilium contributors should be pulled into review. |
| 14 | + |
| 15 | +Changes to files in this directory, when merged into the main branch (after appropriate approvals and review), |
| 16 | +will propogate via GitHub API automation and be reflected in the Cilium GitHub Organization's [teams](https://github.com/orgs/cilium/teams). |
| 17 | + |
| 18 | +## GitHub Team Member and Mentors |
| 19 | +With membership comes both priviledges and responsibilities. One of the responsibilities of being on an active Cilium GitHub team member is |
| 20 | +being available for automatic pull request review assignment for files owned by that GitHub team. |
| 21 | + |
| 22 | +Over time as contributors transition from one GitHub team to another inside the project, while not active on a team any longer, |
| 23 | +their historic experience may be needed to help review proposed changes with functionality they have insight into. In these cases these |
| 24 | +individuals can be added to the team's mentor list in the team configuration file here. Mentors are no longer part of the auto-assigned PR review rotation, |
| 25 | +but they can still keep team approval access. Active Mentors of a team are expected to provide guidance to others in the team and seek reviews they |
| 26 | +should participate in for the code owner area. |
| 27 | + |
| 28 | +## Don't Forget to Set Your GitHub Status |
| 29 | +When active team members are not available for an extended period of time (for example they are on vacation for several days), |
| 30 | +they are encouraged to set themselves as busy in their [GitHub status](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#setting-a-status). If your status is busy GitHub will skip you to the pull request review rotation for the teams you are on. |
| 31 | + |
| 32 | +Note: Not everyone should be busy all at the same time on a GitHub team if it can be avoided. Cilium Team Management automation puts |
| 33 | +some guardrails on this and lets the Cilium project know if there aren't sufficient number of reviewers. The GitHub organization owners (or someone |
| 34 | +delegated to keep tabs on this) will periodically check to see if teams are meeting the expectations of number of people |
| 35 | +available for review assignment and will reach out to teams if there appears to be a chronic shortfall. |
| 36 | + |
| 37 | +## Team Configuration File Format |
| 38 | + |
| 39 | +Each Cilium GitHub team that wants to self-service their team members (and mentors!) can have a file in this directory named `TEAM_NAME.yaml` |
| 40 | +The file contents as the form of |
| 41 | +``` |
| 42 | +# Team members with rights such as commit and approval, as appropriate for the team. |
| 43 | +# They participate in automatic Pull Requests reviews rotation, |
| 44 | +# unless they also are listed as mentors below in this file. |
| 45 | +members: |
| 46 | + - username_01 |
| 47 | + - username_02 |
| 48 | + - username_03 |
| 49 | +
|
| 50 | +# Contributors with experience in the team area. |
| 51 | +# They don't have team rights such as commit and approval, |
| 52 | +# unless they are also listed as members above. |
| 53 | +# They are never part of the automatic PRs reviews rotation. |
| 54 | +mentors: |
| 55 | + - username_02 |
| 56 | + - username_04 |
| 57 | +``` |
| 58 | + |
| 59 | +In this mockup team file, `username_02` is both a member and a mentor and would be excluded from auto-assignment of PR reviews, but would |
| 60 | +have other team rights such as commit and approval for changes to files owned by this team. |
| 61 | + |
| 62 | +`username_01` and `username_03` are active team members participating in the automatic PR review rotation. |
| 63 | + |
| 64 | +`username_04` is listed as a mentor, but not a member. This is here as recognition that historically the person participated in the team |
| 65 | +and is willing to be contacted for historical experience when needed, but doesn't have normal team member access to approve. |
| 66 | +Listing non-active members as mentors is a way to keep institutional knowledge as to who historically provided insight about code functionality to newer |
| 67 | +members on that team. |
0 commit comments