This repository serves as the collection-point, ideation hub, and process behind the InnerSource Commons' InnerSource Patterns--a set of proven and reviewed solutions to InnerSource problems. These patterns illustrate beneficial activities and behaviors found in organizations who apply InnerSource methodologies.
Patterns are a way of describing a repeatable, proven solution to a problem with a context. They follow a simple form that helps people wanting to implement the solution to understand the constraints on the problem, the forces that must be balanced and the resulting context (the situation you are left with after the solution is applied). In inner sourcing, patterns can provide a way for the InnerSource Commons participants to concisely share information with each other, improving the practice of inner sourcing. Each of the patterns are divided into Title, Problem Statement, Context, Forces, and Solutions as their main sections.
What are patterns?
Youtube videos - Watch a set of 2-5 min youtube videos explaining Inner Source Patterns- Pattern Discussion Webinar - We held a webinar 2017-03-16 to live-discuss a donut pattern (go to 24:30 for the discussion). This is an illustration of the review process we follow. Also see the June 1, 2017 O'Reilly Webinar on InnerSource Patterns.
- Detailed Pattern Background and Examples (PDF) - Get a detailed understanding of why and how to interact with our patterns during this presentation from Tim Yao and Padma Sudarsan from the ISC Fall Summit in 2016.
- Pattern Template File - View a skeleton inner source pattern to get an idea on what goes into a new pattern!
Patterns must be used in a thoughtful manner. They cannot be blindly applied. In most cases, you will need to adapt the given solution to your own situation; but the information given in the pattern, defining the context (immovable constraints) and forces (constraints that can be changed and balanced against each other), should help you do this. Note that you will also need to determine if there are additional constraints (company context and company forces) that apply to your particular company/organization that must be added to the pattern (as a kind of filter). These additional constraints may require additional solution steps to be applied.
The pattern form is useful for describing proven patterns but it can also be used for brainstorming solutions where patterns are not yet established, since the form gives a structured way for thinking about a problem. You could also create a donut pattern (filling in the problem, context, forces and resulting context fields but leaving the solution blank) as a way of asking the InnerSource Commons community for help (to find a proven solution or to brainstorm things to try).
See our CONTRIBUTING.md for details on getting involved
We encourage beginners seeking answers to jump in by creating ''donuts'' (problems without solutions). We encourage experts to pad their experience - these are hoped to become part of a book one day. Anyone can offer reviews and comments for in-progress patterns.
We work together via Github, Webex, Slack, etc. Do not hesitate to join the #innersourcecommons or #innersource-patterns slack channels and ask to be included in the patterns meetings (there is an email list).
The below lists all known patterns. They are grouped into four stages of maturity.
- 30 Day Warranty - a pattern for getting a reluctant code-owning team to accept code submissions from outside their team.
- Common Requirements - The common code in the shared repository isn't meeting the needs of all the projects that want to use it.
- Contracted Contributor - Solutions for when associates wanting to contribute to an InnerSource project are discouraged from doing so by their line management
- Dedicated Community Leader - When starting an InnerSource initiative it is crucial to nominate the right people to lead the communities. Selecting the wrong persons and/or not providing enough capacity for them risks wasted effort and ultimately the failure of the InnerSource initiative. The person needs both communication skills as well as technical.
- Review Committee - A formal review committee is setup within an org to "officiate" particular inner source projects with resources, etc.
- Modular Code - Management does not want to spend the extra resources needed to develop modular components and make them available in a visible repository for others to use.
- Poor Naming Conventions - People can't find the internally developed solutions that they need due to poor naming conventions. This causes frustration in finding inner source solutions and a reduction in code reuse.
- Assisted Compliance - Helping repo owners be compliant by writing their CONTRIBUTING.md for them as a pull request.
- Reluctance to Receive Contributions - Core owner of shared asset is reluctant to take contributions due to the required maintenance that comes with them.
- What Before How or Services Documentation - A lack of common understanding between different management tiers creates funding barriers and increases the risk that solutions will not deliver required business outcomes.
- Overcome Acquisition Based Silos - Developers
- Overcome Acquisition Based Silos - Managers
- Open Source Trumps InnerSource
- Overcoming Project Management Time Pressures
- Start as Experiment - An inner source initiative is considered but not started, because management is unsure about its outcome and therefore unwilling to commit to the investment.
- Include Product Owners - Key Performance Indicators (KPIs) for Product Owners are primarily product focused, and don't consider areas such as collaborative development. This results in a lower level of engagement with inner source projects.
- Don't Bother Looking
- Junkyard Styled Inner Sourcing
- Different Repo For Shared Code Than the Product Org Uses In Its Build
- Incentive Alignment
- Change the Developers Mindset
- Share Your Code to Get More Done - Likely Contributors Variant
- Donut 3: How to Defeat the Hierarchical Constraints
- Donut 5: Project Management Time Pressures
- Donut 6: Organizational Mindset Change
- Donut 8: Not Invented Here
- Donut: Bad Weather For Liftoff
- Get Contributions Despite Silo Thinking
The topics below cover information about how we define, operate, and upkeep this collection of patterns.
- Pattern Template - Start a new pattern with a copy of this
- Pattern States - Definitions of the various states and review steps a pattern can be in
- Trusted Collaborators - Who these people are, what elevated rights they get, and how you can become one
- Publishing - How we take completed, reviewed, proven patterns and publish them toward an online book
- Markdown Info - Markdown is the ascii text format our patterns are written in; this document briefly defines how we use it
- Contributing - How to interact with our group, create your own patterns, or take part in our review-process; Github / Web centric instructions
- Alternate Command-line steps - If you want to contribute a pattern using
git
from the command-line, this is your document - Meetings - Become involved with the people and communications of the Inner Source Patterns group
- Alternate Command-line steps - If you want to contribute a pattern using
- A pattern language for pattern writing, Meszaros and Doble
InnerSourcePatterns by InnerSourceCommons.org is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.