Maintaining a Repository

This public content is an excerpt from Flutter staff GitHub docs. It is published as a reference to show how GitHub is used for inner source at Flutter.

The purpose of Flutter-Global is to support cross-divisional collaboration through inner source. If you create a repository you must maintain it, find others to do so, or delete it.

Setup Your Repo

To setup your repository:

  1. Choose a branching model: how do you want contributors to propose changes, and how do you approve them?
  2. Choose an access model: who can access the repository, and with what permissions?
  3. Use Codebase Governor to quickly and easily setup (1) and (2) in an audit friendly way.
  4. Document who you are and how you want others to engage with you in your README.md and CONTRIBUTING.md files.

Your choice of branching and access control model depends on where you intend to be on the inner source pyramid.

Monitoring Your Repo

Your repository requires on-going maintenance:

  • Track your capability in the service catalogue to act on any highlighted mis-configurations.
  • Configure and act on dependabot alerts to keep your code dependencies up to date.

Inner Source

As a maintainer of an inner source repository you need to understand the inner source pyramid and where you want to be on it.

  • A stage 1 maintainer has a prioritised backlog to improve the areas where cross-divisional access is difficult.
  • A stage 2 maintainer adjusts the workflow to enable contributions from outside your team. You encourage contributions and help get them merged and released quickly (e.g. prompt helpful PR reviews). Time doing this may conflict with your local team priorities so ensure your manager and team understand and agree with the importance of this activity and the level of effort you can dedicate to it.
  • A stage 3 maintainer acts as part of a distributed team of capability experts across multiple divisions. It’s a complex role which requires good collaboration skills as well as technical expertise. To be effective in this role you must first understand the complexity of a stage 3 capability.

Good luck!

Creating a Repo
Codebase Governor