opensearch-project / opensearch-metrics

OpenSearch Metrics
https://metrics.opensearch.org
Apache License 2.0
3 stars 5 forks source link

[FEATURE] Mechanism to link the GitHub user alias to public slack username. #61

Open prudhvigodithi opened 3 months ago

prudhvigodithi commented 3 months ago

Is your feature request related to a problem?

Coming from central release dashboard vision https://github.com/opensearch-project/opensearch-metrics/issues/51, Implementing a mechanism to link GitHub user aliases to public Slack usernames would greatly enhance communication in the public Slack release channel during releases. This would simplify tagging release owners for plugins when issues arise with build and integration tests, and enhance closer collaboration on release-related tasks within Slack.

This will also allow the team to create automations to push a message in slack using the slack username or comment on the GitHub release issue tagging with GitHub alias for pending action items (example like missing release notes tag the plugin level release owner to add the release notes).

What solution would you like?

Do you have any additional context?

Here are some examples of problems (from past releases) when there isn't a designated release owner.

prudhvigodithi commented 3 months ago

Adding @getsaurabh02 @peterzhuamazon @dblock @reta for more pointers and thoughts on this issue. Thanks

peterzhuamazon commented 3 months ago

I wonder if we can create a direct mapping as part of the slack to display their github name, or display slack name on github, instead of showing a table in metrics board.

But this is definitely a good start.

Thanks.

prudhvigodithi commented 3 months ago

Ya Peter, we can even maintain a file (or index it to the metrics cluster) with all the mappings of GitHub and slack and use it during the release, the table in metrics board is just to flag the repos with no user (owner) assigned to the release issue. Once the user is the assigned, by using the mapping pull the slack username and start the communication from there, since we already have the GitHub user alias (assigned to the release issue) we can tag in GitHub easily.

My Idea is the GitHub user alias is the source of truth (the one assigned to the repo release issue). Today we have slack to communicate easily but tomorrow we might have some other tool. So the primary key here is the GitHub user alias and based on the alias using the mapping pull the slack or any other username for chat level communication.

dblock commented 3 months ago

Maybe we can have json profiles that users fill out in https://github.com/opensearch-project/community? A dblock.json could get created by a bot the first time I contribute to the project in any way and I could get a @ to fill it out.

I can see other uses of community profiles, such as authors for the blog posts, etc.

prudhvigodithi commented 3 months ago

We have this contributors data in [metrics cluster](https://metrics.opensearch.org/_dashboards/app/data-explorer/discover?security_tenant=global#?_a=(discover:(columns:!(_source),isDirty:!f,sort:!()),metadata:(indexPattern:ac118ee0-8e4a-11ee-bc95-ad89154554d6,view:discover))&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-3y,to:now))&_q=(filters:!(),query:(language:kuery,query:''))) (Using the contributors API) and we can create json profiles from the data, moving forward it would be easy if a new document is created add a json profile. Once the profile is added we can keep updating the profile (manually by raising the PR) with slack_username, company and other information as required periodically with what ever information we have.

Once the release owner is assigned to the component release issue, use these json profiles to communicate in slack or other mediums. I have created a PR https://github.com/opensearch-project/opensearch-build/pull/4950 to mandate the component level release owner assignment. @dblock @getsaurabh02 @peterzhuamazon WDYT?

reta commented 3 months ago

I am wondering if this is a desired feature at all, or at least it should be strictly opt-in may be, due to the amount of the Github notifications, adding more channels would not help but overwhelm I think.

prudhvigodithi commented 3 months ago

I am wondering if this is a desired feature at all, or at least it should be strictly opt-in may be, due to the amount of the Github notifications, adding more channels would not help but overwhelm I think.

Hey @reta coming from our 2.16.0 retro items to have an component specific release owner, the tagging and notifications will be only for the component specific release owner (during the release cycle). Having this mechanism during the release a release manager will be able to tag the specific owner in GitHub and will be able to communicate in slack for the release action items. While we already have a release slack channel for communication, the absence of a dedicated release owner for each component sometimes causes delays in completing action items. To address this, we use this mapping system to tag the appropriate individuals on GitHub and slack.

Thank you

reta commented 3 months ago

Hey @reta coming from our 2.16.0 retro items to have an component specific release owner, the tagging and notifications will be only for the component specific release owner (during the release cycle)

Thanks @prudhvigodithi , yes, that makes perfect sense, BUT: would the communication happen over Slack only or Slack + Github (release issue(s), prs, etc.)? In other words, what would not be communicated over Github but Slack?

prudhvigodithi commented 3 months ago

Thanks @reta, currently we are doing Slack + Github. The Github reflects the current status of the release and will be the source of truth, slack acts as a secondary communication and fallback when there are pending action to taken care of from the components. Ideally the entire release has to be driven from Github, until we get there we should leverage slack to tag/poke the owners to complete the release action items. Thank you

reta commented 3 months ago

Thanks @reta, currently we are doing Slack + Github.

Thanks @prudhvigodithi , so may be this is the way to roll it out: we could ask people to share their Slack contact if they are not against being poked over it, but not require it. Sounds like a tradeoff?

prudhvigodithi commented 3 months ago

True @reta true there should be an opt in way if folks are not interested in slack tags, but for 2.17.0 we can start by having a release owner assigned in GitHub (PR to make this as an entry criteria https://github.com/opensearch-project/opensearch-build/pull/4950) and start by tagging in GitHub for pending plugin action items and see how it goes. Thanks @getsaurabh02 @gaiksaya

dblock commented 2 months ago

Note that we have https://github.com/opensearch-project/project-website/tree/6d5b993daacb8b6f7f8936fd99af79bf71e84375/_community_members today to which Slack information could be added. I think that entire folder should be refactored into maybe https://github.com/opensearch-project/community?

krisfreedain commented 2 months ago

The _community_members folder from the project website repo is what populates the pages here https://opensearch.org/community/members Example page: https://opensearch.org/community/members/kris-freedain.html These pages currently are created when either a person writes a blog post, or, speaks at an OpenSearchCon. One example would be to have each person create their own page, and we can enhance the page with a place for them to add a link to their Slack profile. This would definitely take a long time.

Another, would be to house a list of maintainers/committers and their Slack/GitHub links in the Community repo as dB mentions.

krisfreedain commented 2 months ago

A simple, first step could also be to add a field to each repositories "MAINTAINERS' file so we can identify them in Slack as well. Example:

Current Maintainers

Maintainer GitHub ID OpenSearch Slack ID Affiliation
Kris Freedain krisfreedain Kris Freedain Amazon
prudhvigodithi commented 2 months ago

Thanks @dblock and @krisfreedain.

Today for the Release Metrics Dashboard&_a=(description:'',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Metrics',viewMode:view)) there are mechanisms added to make sure the release owners (the component level release issue assignees) are pulled and displayed, flagging the repos with no release owners.

Coming to the topic related to have generic user profiles which can have more fields like OpenSearch Slack ID etc (where metrics project can re-use them for any desired automation).