Organisation structure

At the root level of GitHub is an enterprise account. Under this enterprise account sits organisations. Within each organisation sits content such as repositories, users and teams.

There’s a common misconception that organisations should be used for grouping similar repositories but this is not what organisations are designed for. Each organisation in GitHub is a silo with separate users, teams, repositories and policies. This inhibits collaboration and creates an admin overhead as each of these organisations need to be managed separately. Using multiple organisations means:

  • It’s harder to find resources as there’s multiple organisations to search.
  • It’s more difficult to collaborate because @-mentions only work between members of the same organisation.
  • There’s a reduction in efficiency as users have to switch between multiple organisations to do their work.

Using separate organisations doesn’t make your repositories any more secure. Role-based access control (RBAC) in GitHub is done at the repository level. This means if you have multiple private repositories in the same organisation, only users who have explicitly been granted permissions on the repository can access it. For example, if you create a new private repository in the main Imperial College London organisation, only you will be able to access it. If you want to give access to other people, you need to explicitly add them under repository settings > Access > Collaborators and teams.

To reduce the administrative burden of manually assigning individual users to repositories, you can create a team in GitHub. This team can then be assigned a role on multiple repositories. It also groups all repositories the team has access to on a single page for easy visibility. For more information on teams in GitHub, see About teams. For tips on how best to organise similar repositories on GitHub, see Grouping similar repositories.

For the reasons outlined above, new organisations will not be created for users/teams/departments except in exceptional circumstances.

Imperial currently has two main GitHub organisations - Imperial College London (github.com) which exists on GitHub Enterprise Cloud and Imperial College London (github.ic.ac.uk) which exists on GitHub Enterprise Server. By default, you should use Imperial College London (github.com) for your work unless you are not able to store your data in the cloud. For example, you might have a research contract which stipulates code must be stored on-premises.

Further reading


Page last modified: 3 Sep 2024.