-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Controlling what access people have to repositories.
Classroom has the following levels of organization.
- owners — Members of the Classroom Team who manage GitHub membership and organization settings. Owners are set in the GitHub interface. They are omitted from the schemes described below.
- Classroom Team — Have admin access to every repository and can create new repositories. Can grant teachers write access to a repository.
- teachers and students — Write access to select repositories. Can handle pull requests for those repositories only. Cannot create new repositories. Read access to everything else.
- everyone else — Read access to every repository. Can make pull requests and open issues.
I see two ways to implement this. Both ways have their strengths and drawbacks. However, the no-teams approach seems to be simplest and fits our needs the best. I will implement that unless someone has objections.
Teams
Everyone participating in Classroom, whether they are part of Classroom Team or not, are members of the organization. Repository access is determined by membership in GitHub teams.
- Classroom Team — Administrators — This team has admin access to every repository. The members of this team maintain every other team. (Can that be done automatically?)
- teachers and students — many topic/use specific teams — Members of these teams have write access. Most of these teams may only have one repository each.
It may not possible to automatically make the members of Administrators the maintainers of every other team. Perhaps it could be done with a script? Manually setting would be cumbersome especially when adding someone to the Classroom Team, removing from the Classroom Team, and adding a new GitHub team.
All members of the organization can create repositories or no one can. I don't know any way to have different types of members. All members of the organization can create teams or no one can. Once again, I see no way to give this power to only select members. We can make all members of the Classroom Team organization owners and deny regular members the ability to create new repositories and teams. While I trust all the current members of the Classroom Team, we can't guarantee everyone in the future will be as trusted. (Folks from Arch Women, recall what happened to the Facebook page.)
The one thing about this approach which I really like is that it will show on everyone's account that they are part of Classroom. :)
No teams
GitHub has a rigid hierarchy of three kinds of contributors: organization owners, organization members, and outside collaborators. We map our hierarchy to that.
- Classroom Team — organization members — Default repository access will be admin. Have the ability to create new repositories.
- teachers and students — outside collaborators — Write access is granted only to the repositories they need to be able to push to. Or admin access. We can decide on a case by case basis.
This is simpler and gives the exact levels of access we want to give.