Huidae and Ondrej,
I recently restructured the teams to reflect GitHub workflows and resulting needs for access (the original team structure was just used from Subversion access). Another reason was getting a better control over who can change the code directly (this is connected to the required PR reviews).
We have 11 teams to cover our 4 repos and different levels of access (plus 2+1 legacy teams). Less would not allow us to give people specific properly-limited rights when needed, i.e., on a “need-to-have” basis. We have the minimum number of teams to drive write access on repo-to-repo basis to our 4 repos and make use of the 4 different relevant roles (4 Write teams, one for each repo, 1 Admin and 1 Maintain team for all repos, 1 Triage team, 1 special-purpose Triage team (discussion-moderators), 1 legacy Write (addons-subversion-committers), 1 legacy Triage (subversion-committers), 1 legacy Read (docker-homebrew-users)). More would be needed for specific task or organization reasons such as the current grass-discussion-moderators. Another reason to add more (possibly nested teams) would be when we would use it for reviews and/or notifications like “someone from the Windows team needs to review this PR”, but it seems we are heading towards code owners rather than teams there (I don’t pretend to know what are the differences or overlaps here).
If we say we want to cut down the number of teams, we can remove one or more of the following: 1 or 2 Subversion teams (legacy, but both are in use now), homebrew-docker team (complete legacy), grass-addons-write (could be merged with grass-write depending on how much it will be used, it has one person who is not in grass-write), grass-promo-write (can be merged with grass-website-write depending on in which way the grass-promo repo will be used).
For comparison, GDAL has 2 teams for 3 repositories plus a top-level GDAL team containing the two teams. gdal-admins has 9 members and the gdal-committers team has 22 members (our grass-subversion-committers legacy team has 33). gdal-admins has Admin for 2 repos and Write for 1 repo. gdal-committers Write for 2 repos. The top-level GDAL team has 5 direct members and 1 repo. The 3 repos are gdal, gdal-data, and shapelib (plus there is 1 auto-updated repo and 2 legacy repos not managed using access roles for teams). The two notable differences in the project structure influencing the number and diversity of repos are that the GDAL website is generated from the gdal repo and that GDAL drivers are either included in gdal repo, (inactive) legacy repo or in separate repos (GDAL has 1 Write team, we 3 extra teams). Additionally, we already had a need for a separate Triage team and a GitHub Discussion-managing Triage team (2 extra teams). We are not yet making use of the Maintain team (1 extra team).
More answers inline.
Ondrej,
I agree with you that there are too many teams for GRASS [1] and they should be consolidated (or not, but at least moved) as child teams.
Do we still need these subversion teams?
These are people who had access in the Subversion times. We want these past Subversion-time contributors to have Triage rights (whatever that means). The grass-addons repo works differently, so the Subversion-time group has Write access there, but that can be changed in the future easily as this group from pre-GitHub times is separate from the active group in grass-addons-write.
How is this team different from the above grass-addons-subversion-committers?
- grass-addons-write Maintainers of tools in GRASS GIS Addons with write access to the repository
This is the active team where new people would be added. The Subversion team may move from Write to Triage in the future.
How are these three teams different?
-
grass-admin GRASS GIS repo administration team
-
grass-maintain GRASS GIS repo settings maintenance team
-
grass-write Maintainers of GRASS GIS with write access to the main repository
They have what GitHub calls Admin, Maintain, and Write access rights to the repo. Write is only for code. Maintain is for some of the settings. for Admin for access and security. See more here:
https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization
I think we need this team.
I don’t know why we have that. It works for notifications, but I haven’t seen that used.
I believe we can consolidate these two teams.
It is about access to potentially destructive actions. We may trust someone to manage a collection of materials in grass-promo, but we may want higher scrutiny for the grass-website repo which goes live after PR is merged.
What about these two?
We created them in the past when the need arose. While they have the same Triage access (unpaid GitHub does not allow anything finer than that), they have different purposes. One is for moderating discussions and the other is for general triage of issues and PRs. Maybe an important note here is that to change an issue label, you need to have Triage access.
Best,
Huidae
[1] https://github.com/orgs/OSGeo/teams
Sweet devs,
Looking at the GitHub teams within the OSGeo organisation [1], it is
impossible not to notice the fact that the GRASS people are very good
in making themselves visible through visual weed infestation. On one
side, it is nice to see GRASS all over the dance floor; on the other
one, I don’t find it particularly polite to storm the org and see that
GRASS owns 11 OSGEO’s teams out of 24 in the overview (11 out of 26 in
total).
Is that a practical problem for anyone?
Wouldn’t it be better to follow the example of GDAL instead?
I did explore the GDAL teams and repos and after a closer look I didn’t find a specific model to follow nor anything particularly applicable to grass-* repos. Some of the comparison to GRASS situation is above.
Creating
only one master team (grass) and then 11 child teams (grass-write,
grass-addons-write, …)? It would make the org team overview much
cleaner.
Seeing how GDAL handles that, I didn’t find team nesting particularly useful and we already had a couple of top-level teams.
Also, you could see all grass child teams’ members in one
place.
That is still the only advantage I see, but then again, we already had several teams and I created the new ones on the same level.
In the name of New GitHub Order,
Ondrej
PS: I also believe that we should reduce the number of GRASS teams and
consolidate some (grass-addons-subversion-committers →
grass-addons-write) but I guess this is for another and much more
contentious discussion.
The current number of teams is determined by the number of teams created in the past, some of them legacy, and by the number of repositories and the need to control write access to these repositories. I hope the above hopefully clarifies most of the reasoning behind the current teams.
Best,
Vaclav
···
Huidae Cho, Ph.D., GISP, /hidɛ t͡ɕo/, 조희대, 曺喜大
GRASS GIS Developer
https://idea.isnew.info/