Improve Your Inner Source

This area is designed for those who have started inner sourcing their work are questioning “what next?”…

Ownership

Inner source applications are owned, and it is clear who is responsible for visibility, alignment, quality and independence.

Capability Coordinator

A Capability Coordinator is assigned to improve the efficiency of cross-divisional alignment of different stakeholders, a bit like a capability project manager.

Maintainer

Explicit assignment of expert Maintainers with privileged permissions to manage the capability and help others.

Visibility

Inner source applications and the change process around them are accessible to all who need it.

Capability Slack Channel

The Global Betting Platform uses a cross-divisional slack channel for each capability. Anyone at Flutter can participate. This is used as the primary communication channel with and between capability maintainers.

Divisional Labels

GitHub labels are used by the Global Betting Platform to show divisional collaboration and work size/type. They provide helpful visual signals when looking at the activity in a capability.

GitHub Issues for Discussion

The Global Betting Platform uses GitHub issues for high level discussion and visibility. These issues do not duplicate the user stories in the divisional tracking system (often Jira), and are used for high level technical design or feature tracking.

GitHub Pages for Docs

Cross-divisional access can be provided to docs via private GitHub Pages. Such docs can be hand-crafted sites generated from markdown, or generated docs from libs like storybook.

Use Draft PRs

Use and encouragement of draft pull requests allows automated checks to run before requesting a review and increases the visibility of in-progress work.

Alignment

Inner source applications are a collaboration between teams or divisions: all involved reach consensus and align on the way forward.

Capability Slack Channel

The Global Betting Platform uses a cross-divisional slack channel for each capability. Anyone at Flutter can participate. This is used as the primary communication channel with and between capability maintainers.

GitHub Issues for Discussion

The Global Betting Platform uses GitHub issues for high level discussion and visibility. These issues do not duplicate the user stories in the divisional tracking system (often Jira), and are used for high level technical design or feature tracking.

Lazy Consensus

As your community gets bigger, getting everyone to engage and agree on a decision is slower. Take inspiration from open source decision making in large groups and use lazy consensus to improve the speed of agreement with at least some of your stakeholders.

Separate Major and Minor Changes

If small, simple changes are slow – or large, complex changes are chaotic – you may need to find a way to separate them, and treat each type differently. The first step is usually to separate major and minor changes to allow you to optimise independently for each type.

Independence

Reduce cross-divisional dependencies and processes to simplify the change process without losing alignment.

Deployment Repository

FanDuel use a deployment repository to separate their infrastructure code from the inner sourced application code. By treating their inner source dependencies much as they would open source dependencies they increase the independence of their deployment.

Multiple Teams Branching

A source code setup for repos with several teams making changes in parallel. Uses a derivative of GitFlow to provide flexible releases with each team independently managing their own develop branch.

Separate Major and Minor Changes

If small, simple changes are slow – or large, complex changes are chaotic – you may need to find a way to separate them, and treat each type differently. The first step is usually to separate major and minor changes to allow you to optimise independently for each type.

Quality

As widely used strategic assets, inner source applications are secure, maintainable, accurate and operationally reliable.

Contributing Guide

The CONTRIBUTING.md markdown file in each repository has a semantic meaning by GitHub convention: it is linked from various locations as the repository “contributing guide”. A simple way to improve the quality of contributions is to use this document to help contributors.

Pull Request Template

A GitHub pull request template is default text content for the description. Inclusion of a checklist of expected tasks will remind a contributor of their expected actions.

Use Draft PRs

Use and encouragement of draft pull requests allows automated checks to run before requesting a review and increases the visibility of in-progress work.