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.