Skip to content

Commit b9390df

Browse files
spierfer-correa
andauthored
[Pattern Draft] Require InnerSource before Open Source (#776)
* [Pattern Draft] Require InnerSource before Open Source * Adding some links to other patterns. Minor fix to Resulting Context. * Add Mercado Libre case --------- Signed-off-by: Fernando Eugenio Correa <[email protected]> Co-authored-by: Fernando Eugenio Correa <[email protected]>
1 parent 3833f9a commit b9390df

File tree

3 files changed

+88
-0
lines changed

3 files changed

+88
-0
lines changed

.github/workflows/link-checker-prs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ jobs:
4141
with:
4242
args: --verbose --no-progress --cache --max-cache-age 1d $MARKDOWN_FILES
4343
fail: true
44+
failIfEmpty: false
4445
jobSummary: true
4546
env:
4647
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ Our mission
9595
* [Document Architecture Decisions](/patterns/1-initial/document-architecture-decisions.md) - *InnerSource contributors often face challenges in grasping the system's design rationale, which can result in misalignment between maintainers, contributors, and stakeholders — potentially discouraging participation. To enhance decision-making and transparency, we recommend capturing architecture decisions and their consequences in a lightweight, accessible format to streamline onboarding, clarify decisions, and support long-term project sustainability.*
9696
* [InnerSource Incentives and Disincentives](/patterns/1-initial/incentives-and-disincentives.md) - *Lack of awareness for incentives as well well as disincentives for InnerSource contribution decrease the chances of an InnerSource project receiving contributions; this is addressed by sharing a comprehensive list of potential incentives and disincentives.*
9797
* [Walk the InnerSource talk](/patterns/1-initial/walk-the-innersource-talk.md) - *Teams across the organization are encouraged to adopt InnerSource principles such as working openly, sharing code, and collaborating transparently. But, if the team behind the InnerSource initiative doesn’t follow these practices themselves, it undermines credibility and adoption. Therefore, this team should lead by example: documenting their decisions as code, working in the open, and treating their work as an InnerSource project to build trust and show others how it’s done.*
98+
* [Require InnerSource before Open Source](/patterns/1-initial/innersource-before-open-source.md) - *Maintaining and managing open source projects can be challenging for organizations, due to a lack of internal infrastructure and people with the knowledge of the required collaboration practices. By requiring projects to be InnerSource before becoming open source, teams have time to establish the necessary internal support, governance, and collaboration skills needed for successful community engagement.*
9899

99100
<!--
100101
NOTE: The 'Initial' Patterns below don't have a Patlet yet, which is essential for readers to quickly browse our patterns.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Title
2+
3+
Require InnerSource before Open Source
4+
5+
## Patlet
6+
7+
Maintaining and managing open source projects can be challenging for organizations, due to a lack of internal infrastructure and people with the knowledge of the required collaboration practices. By requiring projects to be InnerSource before becoming open source, teams have time to establish the necessary internal support, governance, and collaboration skills needed for successful community engagement.
8+
9+
## Problem
10+
11+
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.
12+
13+
## Story
14+
15+
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.
16+
17+
After seeing this, the company implemented an InnerSource-first policy, ensuring internal teams could practice open collaboration before releasing future projects as open source.
18+
19+
## Context
20+
21+
This pattern applies in organizations that:
22+
23+
- Want to release internal software as open source.
24+
- Lack structured internal collaboration processes.
25+
- Have teams unfamiliar with maintaining open source projects.
26+
- Need to establish internal governance and contribution models before engaging the broader open source community.
27+
28+
## Forces
29+
30+
- **Collaboration Readiness**: Teams may not be used to handling external contributions or asynchronous collaboration.
31+
- **Documentation Gaps**: A lack of contributor guidelines, API documentation, and onboarding materials can hinder adoption.
32+
- **Governance & Ownership**: Without clear ownership and decision-making processes, project direction can become unclear.
33+
- **Support Burden**: Open source projects require active maintainers to review pull requests, address issues, and engage the community.
34+
- **Security & Compliance**: Code may require review to meet licensing and security requirements before being released publicly.
35+
36+
## Solution
37+
38+
Before making a project open source, require it to go through an InnerSource phase where:
39+
40+
1. The project is made available internally for contributions from other teams e.g. via an [InnerSource Portal](../2-structured/innersource-portal.md).
41+
2. Clear [documentation](../2-structured/base-documentation.md) (including contribution guidelines), and [governance structures](../2-structured/governance-levels.md) are established.
42+
3. Maintainers gain experience managing contributions, reviewing pull requests, and addressing issues.
43+
4. Maintainers get to practice the soft skills required to support a community of people outside of their own team.
44+
5. Internal adoption and success metrics are measured to determine if the project is ready for external release. Some possible metrics are detailed in the [Repository Activity Score](../2-structured/repository-activity-score.md).
45+
6. Feedback loops are created to refine processes before engaging a broader open source audience.
46+
7. Decision about whether or not the project should be released as open source (based on the success metrics defined earlier). The incubation phase as an InnerSource project can be seen a quality gate. So naturally not all projects will pass that gate.
47+
48+
## Resulting Context
49+
50+
- Teams develop the skills necessary to manage open source projects effectively.
51+
- Contributor documentation and governance structures are established and tested.
52+
- Further internal teams start using the project (adoption), providing validation of the project's value before external release.
53+
- The transition to open source is smoother, with better preparedness for external collaboration.
54+
55+
## Rationale
56+
57+
Releasing a project as open source may feel daunting, especially when an organization has never done this before. Being able to practice things internally can be a safer space for experimentation and failure.
58+
59+
If it turns out that a given InnerSource project does not gain enough adoption internally, the organization may decide to not make the project open source at all. This assumes that the organization is large enough to allow for a realistic internal test.
60+
61+
Allowing the maintainers of the project to practice the required skills internally mitigates risks, improves sustainability, and maximizes the chances of long-term success of the project.
62+
63+
## Known Instances
64+
65+
- **Mercado Libre (MELI)**
66+
67+
### Mercado Libre (MELI)
68+
69+
Mercado Libre tags projects with badges to identify at which stage of their self-defined InnerSource maturity a project currently is. The first step for a project is to receive the **InnerSource Ready** badge. This indicates that the project meets the structure, artifacts, and documentation quality required for the initiative. This stage also uploads project information to our internal [InnerSource project portal](../2-structured/innersource-portal.md), creating more visibility for the project, allowing it to receive contributions and become better known within our teams.
70+
71+
We are currently reviewing our InnerSource stage flow, where a project will be able to use AI-based tools to automatically generate all the necessary requirements to be considered InnerSource Ready. This will allow us to focus more on making it active and attractive to the internal community. For more about the different different stages of InnerSource maturity used at Mercado Libre, see [Transforming software development at Mercado Libre with InnerSource](https://medium.com/mercadolibre-tech/transforming-software-development-at-mercado-libre-with-innersource-016b35e1ded3).
72+
73+
## Status
74+
75+
- Initial
76+
77+
## Author(s)
78+
79+
- Sebastian Spier
80+
- Fernando Correa
81+
82+
## Alias
83+
84+
- InnerSource as a Stepping Stone to Open Source
85+
- InnerSource before Open Source
86+
- InnerSource Incubation before Open Source

0 commit comments

Comments
 (0)