chaoss / grimoirelab

GrimoireLab: platform for software development analytics and insights
https://chaoss.github.io/grimoirelab/
GNU General Public License v3.0
500 stars 183 forks source link

Analysis by GitHub Teams #211

Open GeorgLink opened 5 years ago

GeorgLink commented 5 years ago

Is there a way in GrimoireLab to filter contributors based on the GitHub teams they are a member of?

Relevant API call: https://developer.github.com/v3/teams/members/#get-team-membership

For example, I want to analyze and compare metrics by maintainers (team members) vs. non-maintainers.

Alternatively, I may have several teams in the GitHub organization because they have different permissions for different repositories (e.g., the D&I WG and Evolution WG teams in CHAOSS)

valeriocos commented 5 years ago

At the moment Perceval doesn't fetch this data. To get it, the token should have read:org scope (something that should be taken into account if we decide to include team data).

This API is only available to authenticated members of the team's organization. OAuth access tokens require the read:org scope.

Generally, organization info is handled via SortingHat*, so I'm not sure whether it could be useful to (i) extend SortingHat DB to include the concept of teams, or (ii) just fetch this info for GitHub data.

(i) will probably require more time than (ii). In any case the inclusion of this feature requires changes on the whole Grimoirelab chain, thus collection, enrichment and visualizations, and if (i) is selected also identities management.

Please @sduenas share your thoughts.

*An overview of SortingHat is available here

GeorgLink commented 5 years ago

If option (i) and (ii) both allow to filter by team membership, then I'm okay with either.

GeorgLink commented 5 years ago

I spoke with @sduenas about this feature request. He agrees with how the data could be integrated with the data model. His biggest concern is around obtaining the information:

More details around how a community is using GitHub Teams can help identify how to get the information.

nul800sebastiaan commented 4 years ago

A usecase for us: we, as a company, run an open source project and have a team of paid developers. Our paid developers (in our view) do not "count" in community health stats. We want to be able to exclude our development team for this purpose.

Right now I can individually filter out all the users that we don't want to see, but that's a bit of a pain.

sduenas commented 4 years ago

A usecase for us: we, as a company, run an open source project and have a team of paid developers. Our paid developers (in our view) do not "count" in community health stats. We want to be able to exclude our development team for this purpose.

Right now I can individually filter out all the users that we don't want to see, but that's a bit of a pain.

Good use case! We kept this in mind.

GeorgLink commented 4 years ago

@nul800sebastiaan, would it work for you to affiliate the paid contributors to a dedicated organization (e.g., "paid contributors") and in the filters you exclude everyone in that organization? It's a workaround until GitHub group information becomes available in GrimoireLab.

nul800sebastiaan commented 4 years ago

Maybe... :-)

Just not sure how organizations get detected yet...

image

GeorgLink commented 4 years ago

The module responsible for organizational affiliation is SortingHat. The GUI is called Hatstall. It may not be set-up to auto-guess affiliations based on contributors' email-address domains. Beyond this rudimentary automation, it would be a manual process but for a small team that shouldn't be too time consuming.

sduenas commented 1 year ago

With the new SortingHat this is something that we could do. I was thinking that SortingHat can gather this data from GitHub and include it as teams on the database.

GeorgLink commented 1 year ago

That would be great!