Skip to content

[Pattern Draft] Require InnerSource before Open Source #776

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
1 change: 1 addition & 0 deletions .github/workflows/link-checker-prs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ jobs:
with:
args: --verbose --no-progress --cache --max-cache-age 1d $MARKDOWN_FILES
fail: true
failIfEmpty: false
jobSummary: true
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
73 changes: 73 additions & 0 deletions patterns/1-initial/innersource-before-open-source.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Title

Require InnerSource before Open Source

## Patlet

Organizations often struggle with maintaining and managing open source projects due to a lack of internal collaboration practices and infrastructure. By requiring projects to be InnerSource before becoming open source, teams can establish the necessary internal support, governance, and collaboration skills needed for successful community engagement.

## Problem

When a project is released as open source without first building a strong internal contributor base, it may face challenges such as insufficient documentation, unclear governance, and difficulty managing external contributions. Without prior experience in collaborative development, maintainers may struggle to handle the influx of external contributors, resulting in an unsuccessful or unsustainable open source project.

## Story

A large tech company once open-sourced a widely used internal tool, expecting external developers to contribute immediately. However, due to a lack of contributor guidelines, onboarding processes, and structured governance, external adoption was low, and internal maintainers were overwhelmed with unstructured contributions and support requests.

After seeing this, the company implemented an InnerSource-first policy, ensuring internal teams could practice open collaboration before releasing future projects as open source.

## Context

This pattern applies in organizations that:

- Want to release internal software as open source.
- Lack structured internal collaboration processes.
- Have teams unfamiliar with maintaining open source projects.
- Need to establish internal governance and contribution models before engaging the broader open source community.

## Forces

- **Collaboration Readiness**: Teams may not be used to handling external contributions or asynchronous collaboration.
- **Documentation Gaps**: A lack of contributor guidelines, API documentation, and onboarding materials can hinder adoption.
- **Governance & Ownership**: Without clear ownership and decision-making processes, project direction can become unclear.
- **Support Burden**: Open source projects require active maintainers to review pull requests, address issues, and engage the community.
- **Security & Compliance**: Code may require review to meet licensing and security requirements before being released publicly.

## Solution

Before making a project open source, require it to go through an InnerSource phase where:

1. The project is made available internally for contributions from other teams.
2. Clear documentation, contribution guidelines, and governance structures are established.
3. Maintainers gain experience managing contributions, reviewing pull requests, and addressing issues.
4. Internal adoption and success metrics are measured to determine if the project is ready for external release.
5. Feedback loops are created to refine processes before engaging a broader open source audience.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking in feedback loops: a project can regress in its status, for example, cases of outdated documentation generate a "no longer innersource ready" alert, issue response time (helps to evaluate the quality of maintenance), etc.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very true.

We should describe somewhere that not all of these projects will always be turned into open source. It should be rather obvious but maybe we should spell it out :)

This incubation phase as an InnerSource project is a quality gate, and not all projects can pass that gate. It is meant to achieve multiple things:

  • sufficiently harden the async collaboration nature of the project, so that it is ready for open source
  • forces the project to prove its worth internally (I wonder if there are cases of project that would be great as as open source but still they would not find a 2nd internal adopter)
  • (I am just realizing that I start so type similar things again that we already have in the "Resulting Context" :))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very true.

We should describe somewhere that not all of these projects will always be turned into open source. It should be rather obvious but maybe we should spell it out :)

I agree.
It may seem obvious or repetitive, but I see that every project that aims to be open source must go through the innersource phase. This phase will bring maturity to the project and those responsible. At the same time, not every innersource project will be able to be published as open source (maybe by strategy, by completely organizationally-driven use, etc.)

This incubation phase as an InnerSource project is a quality gate, and not all projects can pass that gate. It is meant to achieve multiple things:

  • sufficiently harden the async collaboration nature of the project, so that it is ready for open source
  • forces the project to prove its worth internally (I wonder if there are cases of project that would be great as as open source but still they would not find a 2nd internal adopter)

Here, for this case, I really don't have any examples to share. Maybe, if we consider the size of the organization, there may be cases where a project is great and could be used by several other companies and people, but as an innersource it may attract people interested in contributing because the technology or proposal is interesting but still not be cases of reuse by the organization's teams... does what I said make sense?

  • (I am just realizing that I start so type similar things again that we already have in the "Resulting Context" :))


## Resulting Context

- Teams develop the skills necessary to manage open source projects effectively.
- Contributor documentation and governance structures are established and tested.
- Internal adoption increases, providing validation of the project's value before external release.
- The transition to open source is smoother, with better preparedness for external collaboration.

## Rationale

By requiring InnerSource before Open Source, organizations ensure that projects are equipped with the right practices and infrastructure to thrive in an open community. This approach mitigates risks, improves sustainability, and maximizes the chances of long-term success.

## Known Instances

TBD
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you like to add your org as a known instance here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fer-correa would you like to add your org here as a known instance? If you don't feel comfortable doing that yet, or have to get some sort of approval, I totally understand.


## Status

- Initial

## Author(s)

- Sebastian Spier

## Alias

- InnerSource as a Stepping Stone to Open Source
- InnerSource before Open Source
- InnerSource Incubation before Open Source