From 9a17398ac9696f5ef3a8ab88b416048597c37146 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Fri, 12 Jun 2026 08:16:28 -0400 Subject: [PATCH 1/7] First stab at the process Signed-off-by: Eric Pugh --- policies/EMERITUS.md | 65 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 policies/EMERITUS.md diff --git a/policies/EMERITUS.md b/policies/EMERITUS.md new file mode 100644 index 0000000..841c203 --- /dev/null +++ b/policies/EMERITUS.md @@ -0,0 +1,65 @@ +- [Overview](#overview) +- [Self-Initiated: Moving On](#self-initiated-moving-on) +- [External: Inactivity](#external-inactivity) + - [Identifying Inactivity](#identifying-inactivity) + - [Outreach](#outreach) + - [Moving to Emeritus](#moving-to-emeritus) +- [Reinstatement](#reinstatement) +- [Relationship to At-Risk Status](#relationship-to-at-risk-status) + +## Overview + +Emeritus is an honorary status for maintainers who are no longer actively involved with a repository. It is not punitive, recognizes prior contributions, and an Emeritus maintainer can be reinstated at any time at their own request. + +The [RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md) document defines two paths for moving a maintainer in good standing to Emeritus: + +1. **Self-initiated** ([Moving On](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#moving-on)) — the maintainer voluntarily opens a pull request moving themselves to the Emeritus section of `MAINTAINERS.md`. +2. **External** ([Inactivity](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#inactivity)) — the admin team opens a pull request moving an inactive maintainer to the Emeritus section on their behalf. + +> **A note on the tension between the two paths:** Emeritus is framed primarily as something a maintainer chooses for themselves. The Inactivity path exists because the maintainers most in need of being moved to Emeritus — those who have gone silent — are, by definition, the least likely to file the PR themselves. When the project must act on a maintainer's behalf, that action should be done respectfully, with prior outreach, and with the understanding that the maintainer may return at any time. + +This document does not cover removal for [Negative Impact on the Project](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#negative-impact-on-the-project), which is a separate process handled by the admin team. + +## Self-Initiated: Moving On + +A maintainer who wishes to step back follows these steps: + +1. Open a pull request against the repository's `MAINTAINERS.md` moving themselves from the active maintainers section to the Emeritus section, and updating `CODEOWNERS` to remove their entries. +2. Notify the [members of the admin team](https://github.com/opensearch-project/.github/blob/main/ADMINS.md), typically by opening an issue in the [opensearch-project/.github](https://github.com/opensearch-project/.github) repo, to request that their maintain-level permissions be revoked. +3. The admin team merges the PR and revokes the permissions. + +## External: Inactivity + +When a maintainer has become inactive without moving themselves to Emeritus, the project may move them to Emeritus on their behalf. + +### Identifying Inactivity + +Inactivity is identified via the [OpenSearch Maintainer Dashboard](https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)). + +__Open question: should the inactivity threshold used here be defined in the same place as the Active/Inactive criteria used by the At-Risk policy), so there is a single source of truth?__ + +### Outreach + +Before moving an inactive maintainer to Emeritus, a TSC member or member of the admin team reaches out to the maintainer privately by email to: + +- Acknowledge the maintainer's past contributions. +- Confirm whether they intend to remain involved with the repository. +- Inform them that, in the absence of a reply or active involvement, they will be moved to Emeritus. + +If, after seven days, there is no reply to the email thread, then a follow-up email is sent. If, after a further seven days (14 days total), there is still no reply, the project proceeds with the Moving to Emeritus step. + +### Moving to Emeritus + +1. A member of the admin team opens a pull request against the repository's `MAINTAINERS.md` moving the maintainer from the active maintainers section to the Emeritus section, and updating `CODEOWNERS` to remove their entries. The PR references the outreach thread and the inactivity assessment. +2. Upon merge, the admin team revokes the maintainer's permissions on the repository. + +## Reinstatement + +Emeritus status is not permanent. Any past maintainer can be reinstated at any time: + +- The returning maintainer or another current maintainer opens a pull request moving them from the Emeritus section back to the active maintainers section, and restoring `CODEOWNERS` entries. +- The [members of the admin team](https://github.com/opensearch-project/.github/blob/main/ADMINS.md) restore the maintainer's permissions upon merge. + +## Relationship to At-Risk Status + +Moving inactive maintainers to Emeritus is one of the ways a repository can transition into [At-Risk status](AT_RISK_REPO.md): once active maintainers fall below three, the At-Risk process begins. In practice these processes often run in parallel — the same outreach that confirms a maintainer should be moved to Emeritus may also surface the need to identify new maintainers under the At-Risk process. From d599a3d5ae1de259e5899b15b3d58f1a1b0467b0 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Fri, 12 Jun 2026 10:57:47 -0400 Subject: [PATCH 2/7] Update for the specific criteria for active/inactive Signed-off-by: Eric Pugh --- policies/EMERITUS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/policies/EMERITUS.md b/policies/EMERITUS.md index 841c203..a4c9482 100644 --- a/policies/EMERITUS.md +++ b/policies/EMERITUS.md @@ -36,7 +36,7 @@ When a maintainer has become inactive without moving themselves to Emeritus, the Inactivity is identified via the [OpenSearch Maintainer Dashboard](https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)). -__Open question: should the inactivity threshold used here be defined in the same place as the Active/Inactive criteria used by the At-Risk policy), so there is a single source of truth?__ +The dashboard labels a maintainer with status 'Inactive' if they have no activity in the repository in the past year. ### Outreach From 86bdcb926ff450622ce1552fcbf6810d9e4abe31 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Thu, 16 Jul 2026 10:00:16 -0300 Subject: [PATCH 3/7] refine based on feedback Signed-off-by: Eric Pugh --- policies/EMERITUS.md | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/policies/EMERITUS.md b/policies/EMERITUS.md index a4c9482..aa5484b 100644 --- a/policies/EMERITUS.md +++ b/policies/EMERITUS.md @@ -13,14 +13,14 @@ Emeritus is an honorary status for maintainers who are no longer actively involv The [RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md) document defines two paths for moving a maintainer in good standing to Emeritus: -1. **Self-initiated** ([Moving On](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#moving-on)) — the maintainer voluntarily opens a pull request moving themselves to the Emeritus section of `MAINTAINERS.md`. -2. **External** ([Inactivity](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#inactivity)) — the admin team opens a pull request moving an inactive maintainer to the Emeritus section on their behalf. + 1. ([Moving On](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#moving-on)) — the maintainer voluntarily opens a pull request moving themselves to the Emeritus section of `MAINTAINERS.md`. + 2. ([Inactivity](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#inactivity)) — the admin team opens a pull request moving an inactive maintainer to the Emeritus section on their behalf. > **A note on the tension between the two paths:** Emeritus is framed primarily as something a maintainer chooses for themselves. The Inactivity path exists because the maintainers most in need of being moved to Emeritus — those who have gone silent — are, by definition, the least likely to file the PR themselves. When the project must act on a maintainer's behalf, that action should be done respectfully, with prior outreach, and with the understanding that the maintainer may return at any time. This document does not cover removal for [Negative Impact on the Project](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#negative-impact-on-the-project), which is a separate process handled by the admin team. -## Self-Initiated: Moving On +## Moving On A maintainer who wishes to step back follows these steps: @@ -28,30 +28,27 @@ A maintainer who wishes to step back follows these steps: 2. Notify the [members of the admin team](https://github.com/opensearch-project/.github/blob/main/ADMINS.md), typically by opening an issue in the [opensearch-project/.github](https://github.com/opensearch-project/.github) repo, to request that their maintain-level permissions be revoked. 3. The admin team merges the PR and revokes the permissions. -## External: Inactivity +## Inactivity -When a maintainer has become inactive without moving themselves to Emeritus, the project may move them to Emeritus on their behalf. +Part of having a strong security posture for the Project is adhering to the principle of least privilege: maintainers credentials should be scoped to people that actively need them. Therefore, when a maintainer has been inactive for a period of a year without moving themselves to Emeritus, the project may move them to Emeritus on their behalf. ### Identifying Inactivity -Inactivity is identified via the [OpenSearch Maintainer Dashboard](https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)). +Inactivity is defined as not using maintainer privileges for a period of 1 year or more in a specific repo. The 1 year time frame is a default choice, there may be specific repos where this time frame is too short or too long. -The dashboard labels a maintainer with status 'Inactive' if they have no activity in the repository in the past year. +Inactivity can be identified via the [OpenSearch Maintainer Dashboard](https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)). -### Outreach +The dashboard labels a maintainer with status 'Inactive' if they have no activity in the repository using the default timeframe of the past year. -Before moving an inactive maintainer to Emeritus, a TSC member or member of the admin team reaches out to the maintainer privately by email to: +### Outreach -- Acknowledge the maintainer's past contributions. -- Confirm whether they intend to remain involved with the repository. -- Inform them that, in the absence of a reply or active involvement, they will be moved to Emeritus. +An existing maintainer or a member of the admin team opens a PR moving the inactive maintainer to emeritus in MAINTAINERS.md and removing from CODEOWNERS with the comment: -If, after seven days, there is no reply to the email thread, then a follow-up email is sent. If, after a further seven days (14 days total), there is still no reply, the project proceeds with the Moving to Emeritus step. +> Hey @inactive-maintainer, we see you haven't used your maintainer privileges in the past year. If you plan on continuing to contribute, please respond here and close this PR. Otherwise you'll be moved to emeritus, but you can move back to active status at any time. -### Moving to Emeritus +Here (is an example PR)[https://github.com/opensearch-project/OpenSearch/pull/21144]. -1. A member of the admin team opens a pull request against the repository's `MAINTAINERS.md` moving the maintainer from the active maintainers section to the Emeritus section, and updating `CODEOWNERS` to remove their entries. The PR references the outreach thread and the inactivity assessment. -2. Upon merge, the admin team revokes the maintainer's permissions on the repository. +If, after seven days, there is no reply to the PR, then an existing maintainer or member of the admin team merges the PR. ## Reinstatement @@ -63,3 +60,5 @@ Emeritus status is not permanent. Any past maintainer can be reinstated at any t ## Relationship to At-Risk Status Moving inactive maintainers to Emeritus is one of the ways a repository can transition into [At-Risk status](AT_RISK_REPO.md): once active maintainers fall below three, the At-Risk process begins. In practice these processes often run in parallel — the same outreach that confirms a maintainer should be moved to Emeritus may also surface the need to identify new maintainers under the At-Risk process. + +The one year time frame for identifying inactivity is a choice. Some simple stable repos may not require much maintainer involvement, and for them, the time frame may be much longer before triggering the Emeritus process. This should be evaluated on a repo by repo basis. From 963438eb74aad58543cb5ef5cb631b2e34539d14 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Thu, 23 Jul 2026 09:50:39 -0300 Subject: [PATCH 4/7] Provide more context in suggested PR text on why moving to Emeritus Signed-off-by: Eric Pugh --- policies/EMERITUS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/policies/EMERITUS.md b/policies/EMERITUS.md index aa5484b..a955b07 100644 --- a/policies/EMERITUS.md +++ b/policies/EMERITUS.md @@ -44,7 +44,9 @@ The dashboard labels a maintainer with status 'Inactive' if they have no activit An existing maintainer or a member of the admin team opens a PR moving the inactive maintainer to emeritus in MAINTAINERS.md and removing from CODEOWNERS with the comment: -> Hey @inactive-maintainer, we see you haven't used your maintainer privileges in the past year. If you plan on continuing to contribute, please respond here and close this PR. Otherwise you'll be moved to emeritus, but you can move back to active status at any time. +``` +Hey @inactive-maintainer, we see you haven't used your maintainer privileges in the (past year)[https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)] for this repo. If you plan on continuing to contribute, please respond here and close this PR. Otherwise, per our (inactivity policy)[https://github.com/opensearch-project/technical-steering/blob/main/policies/RESPONSIBILITIES.md#inactivity] you'll be moved to emeritus, but you can move back to active status at any time. +``` Here (is an example PR)[https://github.com/opensearch-project/OpenSearch/pull/21144]. From d357cc823d00aebc41de00a1995a5443b9cd2f6f Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Thu, 23 Jul 2026 09:53:58 -0300 Subject: [PATCH 5/7] fix link markdown formatting Signed-off-by: Eric Pugh --- policies/EMERITUS.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/policies/EMERITUS.md b/policies/EMERITUS.md index a955b07..4a1aecc 100644 --- a/policies/EMERITUS.md +++ b/policies/EMERITUS.md @@ -45,10 +45,11 @@ The dashboard labels a maintainer with status 'Inactive' if they have no activit An existing maintainer or a member of the admin team opens a PR moving the inactive maintainer to emeritus in MAINTAINERS.md and removing from CODEOWNERS with the comment: ``` -Hey @inactive-maintainer, we see you haven't used your maintainer privileges in the (past year)[https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)] for this repo. If you plan on continuing to contribute, please respond here and close this PR. Otherwise, per our (inactivity policy)[https://github.com/opensearch-project/technical-steering/blob/main/policies/RESPONSIBILITIES.md#inactivity] you'll be moved to emeritus, but you can move back to active status at any time. +Hey @inactive-maintainer, we see you haven't used your maintainer privileges in the [past year](https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)) for this repo. +If you plan on continuing to contribute, please respond here and close this PR. Otherwise, per our [inactivity policy](https://github.com/opensearch-project/technical-steering/blob/main/policies/RESPONSIBILITIES.md#inactivity) you'll be moved to emeritus, but you can move back to active status at any time. ``` -Here (is an example PR)[https://github.com/opensearch-project/OpenSearch/pull/21144]. +Here [is an example PR]([https://github.com/opensearch-project/OpenSearch/pull/21144). If, after seven days, there is no reply to the PR, then an existing maintainer or member of the admin team merges the PR. From b0f33ac0fcd54b410c9f972853b70fd53d4d5b67 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Thu, 23 Jul 2026 09:56:08 -0300 Subject: [PATCH 6/7] update TOC Signed-off-by: Eric Pugh --- policies/EMERITUS.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/policies/EMERITUS.md b/policies/EMERITUS.md index 4a1aecc..dec6769 100644 --- a/policies/EMERITUS.md +++ b/policies/EMERITUS.md @@ -1,9 +1,8 @@ - [Overview](#overview) -- [Self-Initiated: Moving On](#self-initiated-moving-on) -- [External: Inactivity](#external-inactivity) +- [Moving On](#moving-on) +- [Inactivity](#inactivity) - [Identifying Inactivity](#identifying-inactivity) - [Outreach](#outreach) - - [Moving to Emeritus](#moving-to-emeritus) - [Reinstatement](#reinstatement) - [Relationship to At-Risk Status](#relationship-to-at-risk-status) @@ -49,7 +48,7 @@ Hey @inactive-maintainer, we see you haven't used your maintainer privileges in If you plan on continuing to contribute, please respond here and close this PR. Otherwise, per our [inactivity policy](https://github.com/opensearch-project/technical-steering/blob/main/policies/RESPONSIBILITIES.md#inactivity) you'll be moved to emeritus, but you can move back to active status at any time. ``` -Here [is an example PR]([https://github.com/opensearch-project/OpenSearch/pull/21144). +Here [is an example PR](https://github.com/opensearch-project/OpenSearch/pull/21144). If, after seven days, there is no reply to the PR, then an existing maintainer or member of the admin team merges the PR. From fc62fa53b6ce425d78613bc1d8d7d10ff930cc73 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Thu, 13 Aug 2026 11:40:42 -0400 Subject: [PATCH 7/7] Strip down to just the process Signed-off-by: Eric Pugh --- policies/EMERITUS.md | 66 ------------------------------- processes/INACTIVE_MAINTAINERS.md | 39 ++++++++++++++++++ 2 files changed, 39 insertions(+), 66 deletions(-) delete mode 100644 policies/EMERITUS.md create mode 100644 processes/INACTIVE_MAINTAINERS.md diff --git a/policies/EMERITUS.md b/policies/EMERITUS.md deleted file mode 100644 index dec6769..0000000 --- a/policies/EMERITUS.md +++ /dev/null @@ -1,66 +0,0 @@ -- [Overview](#overview) -- [Moving On](#moving-on) -- [Inactivity](#inactivity) - - [Identifying Inactivity](#identifying-inactivity) - - [Outreach](#outreach) -- [Reinstatement](#reinstatement) -- [Relationship to At-Risk Status](#relationship-to-at-risk-status) - -## Overview - -Emeritus is an honorary status for maintainers who are no longer actively involved with a repository. It is not punitive, recognizes prior contributions, and an Emeritus maintainer can be reinstated at any time at their own request. - -The [RESPONSIBILITIES.md](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md) document defines two paths for moving a maintainer in good standing to Emeritus: - - 1. ([Moving On](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#moving-on)) — the maintainer voluntarily opens a pull request moving themselves to the Emeritus section of `MAINTAINERS.md`. - 2. ([Inactivity](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#inactivity)) — the admin team opens a pull request moving an inactive maintainer to the Emeritus section on their behalf. - -> **A note on the tension between the two paths:** Emeritus is framed primarily as something a maintainer chooses for themselves. The Inactivity path exists because the maintainers most in need of being moved to Emeritus — those who have gone silent — are, by definition, the least likely to file the PR themselves. When the project must act on a maintainer's behalf, that action should be done respectfully, with prior outreach, and with the understanding that the maintainer may return at any time. - -This document does not cover removal for [Negative Impact on the Project](https://github.com/opensearch-project/.github/blob/main/RESPONSIBILITIES.md#negative-impact-on-the-project), which is a separate process handled by the admin team. - -## Moving On - -A maintainer who wishes to step back follows these steps: - -1. Open a pull request against the repository's `MAINTAINERS.md` moving themselves from the active maintainers section to the Emeritus section, and updating `CODEOWNERS` to remove their entries. -2. Notify the [members of the admin team](https://github.com/opensearch-project/.github/blob/main/ADMINS.md), typically by opening an issue in the [opensearch-project/.github](https://github.com/opensearch-project/.github) repo, to request that their maintain-level permissions be revoked. -3. The admin team merges the PR and revokes the permissions. - -## Inactivity - -Part of having a strong security posture for the Project is adhering to the principle of least privilege: maintainers credentials should be scoped to people that actively need them. Therefore, when a maintainer has been inactive for a period of a year without moving themselves to Emeritus, the project may move them to Emeritus on their behalf. - -### Identifying Inactivity - -Inactivity is defined as not using maintainer privileges for a period of 1 year or more in a specific repo. The 1 year time frame is a default choice, there may be specific repos where this time frame is too short or too long. - -Inactivity can be identified via the [OpenSearch Maintainer Dashboard](https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)). - -The dashboard labels a maintainer with status 'Inactive' if they have no activity in the repository using the default timeframe of the past year. - -### Outreach - -An existing maintainer or a member of the admin team opens a PR moving the inactive maintainer to emeritus in MAINTAINERS.md and removing from CODEOWNERS with the comment: - -``` -Hey @inactive-maintainer, we see you haven't used your maintainer privileges in the [past year](https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c?_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'Shows%20data%20about%20the%20activity%20of%20maintainers%20in%20the%20OpenSearch%20Project(since%2010-12-24,%20and%20the%20technical-steering%20repo%20since%2011-7-24).%20',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Maintainer%20Dashboard',viewMode:view)) for this repo. -If you plan on continuing to contribute, please respond here and close this PR. Otherwise, per our [inactivity policy](https://github.com/opensearch-project/technical-steering/blob/main/policies/RESPONSIBILITIES.md#inactivity) you'll be moved to emeritus, but you can move back to active status at any time. -``` - -Here [is an example PR](https://github.com/opensearch-project/OpenSearch/pull/21144). - -If, after seven days, there is no reply to the PR, then an existing maintainer or member of the admin team merges the PR. - -## Reinstatement - -Emeritus status is not permanent. Any past maintainer can be reinstated at any time: - -- The returning maintainer or another current maintainer opens a pull request moving them from the Emeritus section back to the active maintainers section, and restoring `CODEOWNERS` entries. -- The [members of the admin team](https://github.com/opensearch-project/.github/blob/main/ADMINS.md) restore the maintainer's permissions upon merge. - -## Relationship to At-Risk Status - -Moving inactive maintainers to Emeritus is one of the ways a repository can transition into [At-Risk status](AT_RISK_REPO.md): once active maintainers fall below three, the At-Risk process begins. In practice these processes often run in parallel — the same outreach that confirms a maintainer should be moved to Emeritus may also surface the need to identify new maintainers under the At-Risk process. - -The one year time frame for identifying inactivity is a choice. Some simple stable repos may not require much maintainer involvement, and for them, the time frame may be much longer before triggering the Emeritus process. This should be evaluated on a repo by repo basis. diff --git a/processes/INACTIVE_MAINTAINERS.md b/processes/INACTIVE_MAINTAINERS.md new file mode 100644 index 0000000..c85dfd4 --- /dev/null +++ b/processes/INACTIVE_MAINTAINERS.md @@ -0,0 +1,39 @@ + +## Process + +1. Find inactive maintainer using [metrics dashboard](https://metrics.opensearch.org/_dashboards/app/dashboards#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c) +1. Filter out archived repos +1. Open a PR using the template text below +1. Wait seven days +1. Close or merge the PR per the instructions in the template text + + + +## PR Template Text + +``` +Hey @{GITHUB_HANDLE}, we noticed you haven't used your maintainer privileges +in this repository over the past year. Per the OpenSearch Project +[inactivity policy](https://github.com/opensearch-project/technical-steering/blob/main/policies/RESPONSIBILITIES.md#inactivity), +maintainers inactive for 12 months or more are moved to emeritus status. + +**If you plan to continue contributing as a maintainer**, please respond here +and close this PR and no further action is needed. + +Otherwise, this PR will move you to the emeritus list. Emeritus status is +not permanent: you can return to active maintainer status at any time by +expressing interest to the current maintainers. + +**Existing maintainers**: Please merge this PR once @{GITHUB_HANDLE} confirms +they do not plan to use their maintainer privileges, or after 7 days with no +response. If neither maintainers nor @{GITHUB_HANDLE} take any action within +7 days, a member of the [admin team](https://github.com/orgs/opensearch-project/teams/admin) +will merge it. + +### Activity data + +This determination is based on the +[OpenSearch Maintainer Dashboard](https://metrics.opensearch.org/_dashboards/app/dashboards#/view/30fedc30-9ae2-11ef-a168-f19b1bbc360c) +(filter by repository: `{REPO_NAME}`). If you believe the activity data is +mistaken, please say so here so we can investigate before merging. +```