Flutter-Global

The Flutter-Global GitHub organisation allows you collaborate with other divisions in Flutter.

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 allow you to collaborate across divisions within Flutter, often in an inner source model. Your division has it’s own divisional org, Flutter-Global allows you to share and work between divisions.

Ready to dive in? Start using GitHub today:

Inner Source Access

Flutter-Global supports both inner source and closed source cross divisional collaboration.

Name Access
Inner Source:
Open Contribution
All members of Flutter-Global have write access to contribute. Maintainers with admin access review all changes.
Inner Source:
Requested Contribution
All members of Flutter-Global have read access. A contributor team has write access. To contribute, a user must request to join this team. Maintainers with admin access review all changes.
Closed Source:
Requested Access
A reader team has read access. A contributor team has write access. To contribute or view the repo, a user must request to join one of these teams. A team of maintainers have admin access.
Closed Source:
Maintainers Only
Only repository maintainers with admin access can view or contribute.

Branching Strategy

Recommended branching model patterns explained in under 7 minutes!

We recommend you choose one of:

  1. Reviewed Source : Simple pull request based workflow where expert code maintainers review all changes before release.
  2. Audited Source : Ensures history is immutable for audit, but changes don’t require approval before release.
  3. Multiple Team Source : A derivative of GitFlow to provide each team with their own develop branch.

Capability

Flutter-Global has thousands of repositories and GitHub doesn’t have any native way to group or link them (e.g. like ‘projects’ in GitLab or Atlassian BitBucket). We group related repositories together into capabilities using Codebase Governor.

  • A capability is a group of related repositories that does something meaningful (e.g. a product feature).
  • Each GitHub repository is part of a single capability.
  • A capability has an owner and a team of expert maintainers.
  • Not all repositories in Flutter-Global are part of a capability, but it’s a requirement to use Codebase Governor.

GitHub Actions

An inner source application typically have a single shared codebase and several divisional deployments. It’s not enough just to share the code: you need to share and collaborate on your CI pipeline. GitHub Action workflows are the best way to do this.

We document standard patterns to cover steps (1)-(5). Steps after that are division specific and dependent on divisional conventions and tools.