Skip to content

Commit d72063d

Browse files
jeffabaileyspier
andauthored
feat: add Migrating from InnerSource to Open Source (#851)
* feat: add Migrating from InnerSource to Open Source * chore: add inputs from ISPO WG to Require InnerSource before Open Source * feat: add add new GHA workflow that checks if all patterns are listed in the main README --------- Co-authored-by: Sebastian Spier <[email protected]>
1 parent 7f8f5bd commit d72063d

File tree

4 files changed

+203
-3
lines changed

4 files changed

+203
-3
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Check if all patterns are listed in README.md
2+
name: All Patterns Listed
3+
4+
on:
5+
push:
6+
branches:
7+
- main
8+
pull_request:
9+
branches:
10+
- main
11+
12+
jobs:
13+
all-patterns-listed:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v5
17+
18+
- name: Check if all patterns are listed in README.md
19+
run: |
20+
README="README.md"
21+
22+
# Ensure README.md exists
23+
if [[ ! -f "$README" ]]; then
24+
echo "Error: $README not found!"
25+
exit 1
26+
fi
27+
28+
missing=0
29+
30+
for file in patterns/*/*.md; do
31+
if grep -qF "$file" "$README"; then
32+
echo "✔ Found: $file"
33+
else
34+
echo "✘ Missing: $file"
35+
echo "✘ Pattern file not listed in README.md: $file" >> $GITHUB_STEP_SUMMARY
36+
missing=$((missing + 1))
37+
fi
38+
done
39+
40+
if [[ $missing -gt 0 ]]; then
41+
echo "Some patterns are missing from $README."
42+
exit 1
43+
else
44+
echo "All patterns are listed in $README."
45+
exit 0
46+
fi

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ Our mission
9898
* [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.*
9999
* [AI Code Generation Context](patterns/1-initial/ai-code-generation-context.md) - *AI tools generate code that diverges from project standards and architectural patterns. Provide an AI Code Generation Context within the repositories to guide AI tools in producing contributions that align with existing project conventions, reducing review friction and maintaining code consistency.*
100100
* [InnerSource as a Career Booster](patterns/1-initial/innersource-as-career-booster.md) - *Many employees wonder how contributing to InnerSource projects benefits their careers beyond their immediate team objectives. By engaging in InnerSource, individuals expand their skills, grow their network, increase visibility across the organization, and unlock new career opportunities.*
101+
* [Migrating from InnerSource to Open Source](patterns/1-initial/migrating-from-innersource-to-open-source.md) - *When an InnerSource project succeeds internally and meets criteria for external release, organizations often lack a structured approach for the transition. Establish a process that addresses legal, security, governance, and community readiness to transition the project to open source while maintaining its internal value.*
101102

102103
<!--
103104
NOTE: The 'Initial' Patterns below don't have a Patlet yet, which is essential for readers to quickly browse our patterns.

patterns/1-initial/innersource-before-open-source.md

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,22 @@ This pattern applies in organizations that:
2323
- Want to release internal software as open source.
2424
- Lack structured internal collaboration processes.
2525
- Have teams unfamiliar with maintaining open source projects.
26-
- Need to establish internal governance and contribution models before engaging the broader open source community.
26+
- Need to establish internal governance and contribution models before engaging the broader open source community.
27+
- Operate in regulated industries (healthcare, financial services) where compliance requirements are stringent.
28+
- Have concerns about intellectual property, security, or competitive advantage when releasing code publicly.
29+
- Want to validate project value and adoption internally before external exposure.
2730

2831
## Forces
2932

3033
- **Collaboration Readiness**: Teams may not be used to handling external contributions or asynchronous collaboration.
3134
- **Documentation Gaps**: A lack of contributor guidelines, API documentation, and onboarding materials can hinder adoption.
3235
- **Governance & Ownership**: Without clear ownership and decision-making processes, project direction can become unclear.
3336
- **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.
37+
- **Security & Compliance**: Code may require review to meet licensing and security requirements before being released publicly.
38+
- **Regulatory Compliance**: Increasing government regulations may require additional considerations when moving from InnerSource to Open Source.
39+
- **Intellectual Property Risk**: Corporate information embedded in comments or code may create legal exposure when released publicly.
40+
- **Bidirectional Movement**: Projects may need to move from Open Source back to InnerSource if they become unmaintained or face sustainability challenges.
41+
- **Market Awareness**: Limited understanding of InnerSource practices in the broader market may affect external adoption.
3542

3643
## Solution
3744

@@ -43,7 +50,11 @@ Before making a project open source, require it to go through an InnerSource pha
4350
4. Maintainers get to practice the soft skills required to support a community of people outside of their own team.
4451
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).
4552
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.
53+
7. **Legal and compliance review**: Conduct thorough checks for copyright, patents, and corporate information that may be embedded in comments or code before external release.
54+
8. **Security assessment**: Perform security reviews to ensure open sourcing won't create vulnerabilities or expose sensitive information.
55+
9. **OSP/OSPO vetting**: Have an Open Source Program Office (OSPO) or equivalent team review the project for engineering quality, legal compliance, and strategic alignment.
56+
10. **Approval process**: Establish a formal approval workflow where projects are added to an approved list that legal departments can reference for ongoing compliance.
57+
11. 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.
4758

4859
## Resulting Context
4960

@@ -78,6 +89,7 @@ We are currently reviewing our InnerSource stage flow, where a project will be a
7889

7990
- Sebastian Spier
8091
- Fernando Correa
92+
- Jeff Bailey
8193

8294
## Alias
8395

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
## Title
2+
3+
Migrating from InnerSource to Open Source
4+
5+
## Patlet
6+
7+
When an InnerSource project succeeds internally and meets criteria for external release, organizations often lack a structured approach for the transition. Establish a process that addresses legal, security, governance, and community readiness to transition the project to open source while maintaining its internal value.
8+
9+
## Problem
10+
11+
Organizations with successful InnerSource projects may want to transition to open source but lack structured processes for this evolution. While InnerSource provides a foundation of collaborative development practices, internal governance, and community management skills, the transition to external open source introduces new challenges. Without proper planning, projects risk legal issues, security vulnerabilities, governance conflicts, and community challenges that could harm both the project's success and the organization's reputation in the broader open source ecosystem.
12+
13+
## Story
14+
15+
A tech company developed a popular internal tool using InnerSource, achieving strong adoption and good documentation. When they open sourced it, they found corporate information in comments, unclear licenses, and no community processes. The rushed release caused legal issues, security risks, and overwhelmed maintainers struggling with external contributions.
16+
17+
## Context
18+
19+
This pattern applies when:
20+
21+
- An InnerSource project has achieved internal success and adoption, demonstrating proven collaborative development practices.
22+
- The organization has established InnerSource practices and governance, providing a foundation for external community management.
23+
- There is strategic value in releasing the project publicly while maintaining its internal utility.
24+
- Legal and compliance frameworks are in place for open source releases.
25+
- The project team has experience with InnerSource collaborative development practices and internal community management.
26+
- External market demand or strategic positioning justifies open sourcing, leveraging the project's InnerSource success.
27+
28+
## Forces
29+
30+
- **Legal Complexity**: Existing code may contain proprietary information, unclear licensing, or patent concerns that must be resolved before public release
31+
- **Security Exposure**: Internal security practices may not be suitable for public code, requiring a comprehensive security review
32+
- **Governance Transition**: Internal governance structures may conflict with open source community expectations and meritocracy principles
33+
- **Community Readiness**: Internal teams may lack experience managing external contributors and community dynamics
34+
- **Resource Allocation**: Open source projects require ongoing maintenance and community support that may conflict with internal priorities
35+
- **Brand and Reputation**: Public release represents the organization to external communities and may impact brand perception
36+
- **Competitive Advantage**: Releasing code publicly may reduce competitive advantages while potentially increasing market influence
37+
- **Regulatory Compliance**: Industry-specific regulations may impose additional requirements for public code releases
38+
39+
## Solutions
40+
41+
Establish a comprehensive migration process that includes:
42+
43+
1. **Pre-Migration Assessment**: Evaluate the project's readiness using established criteria, including adoption metrics, documentation quality, and community management capabilities
44+
- Assess business value and strategic alignment for external release.
45+
- Ensure InnerSource templates align with open source standards to reduce transition friction.
46+
47+
2. **Legal and Compliance Review**:
48+
- Conduct a thorough code review to identify and remove proprietary information.
49+
- Establish clear licensing terms and intellectual property ownership.
50+
- Perform patent and copyright clearance.
51+
- Create legal documentation for external contributors.
52+
- Maintain contributor history and credits during the transition to avoid losing valuable contribution records.
53+
54+
3. **Security Hardening**:
55+
- Remove internal credentials, API keys, and sensitive configuration.
56+
- Implement security best practices suitable for public code.
57+
- Establish vulnerability disclosure processes.
58+
- Create security documentation and guidelines.
59+
60+
4. **Governance Structure Design**:
61+
- Define decision-making processes that balance internal needs with community input to ensure effective outcomes.
62+
- Establish maintainer roles and responsibilities.
63+
- Create contribution guidelines and code of conduct.
64+
- Design community management processes.
65+
- Add contributor acknowledgment sections to READMEs to appropriately credit all contributors during the transition.
66+
67+
5. **Community Preparation**:
68+
- Train maintainers on open source community management
69+
- Establish communication channels and documentation standards.
70+
- Create onboarding processes for external contributors.
71+
- Develop community engagement strategies.
72+
73+
6. **Infrastructure Setup**:
74+
- Migrate to public repositories with appropriate access controls.
75+
- Set up CI/CD pipelines suitable for public development.
76+
- Establish issue tracking and project management tools.
77+
- Create public documentation and websites.
78+
79+
7. **Gradual Release Strategy**:
80+
- Start with limited external access or beta releases.
81+
- Gradually expand community participation.
82+
- Monitor adoption and community health metrics.
83+
- Adjust processes based on community feedback.
84+
85+
8. **Ongoing Support Framework**:
86+
- Establish maintenance and support processes.
87+
- Create escalation procedures for critical issues.
88+
- Define success metrics and review cycles.
89+
- Plan for long-term sustainability
90+
- Implement systems to measure and demonstrate business value produced by open source developers.
91+
- Identify and automate repetitive processes in project setup and maintenance.
92+
93+
## Resulting Context
94+
95+
After successful migration:
96+
97+
- The project gains external contributors and broader adoption, building on its InnerSource foundation.
98+
- Internal teams leverage their InnerSource community management experience to manage external contributors effectively.
99+
- The organization builds a reputation within the open source ecosystem, demonstrating a successful evolution from InnerSource to open source.
100+
- Legal and compliance frameworks are established for future open source releases.
101+
- The project may require ongoing resource allocation for community management, but it benefits from established InnerSource practices.
102+
- Internal development processes adapt to external community needs while maintaining InnerSource principles.
103+
- New opportunities for collaboration and innovation emerge through external partnerships, extending the collaborative culture developed through InnerSource.
104+
- Open sourcing projects often leads to increased internal usage and adoption, contrary to initial expectations.
105+
- Aligning InnerSource and open source templates reduces friction for future transitions.
106+
107+
## Rationale
108+
109+
Migrating from InnerSource to open source is a natural evolution for successful internal projects, but requires careful planning to avoid pitfalls. A structured approach addresses legal, security, and governance issues proactively. By building on established InnerSource practices, organizations can leverage their collaborative development skills, community management experience, and internal governance structures to adapt to external community challenges.
110+
111+
This migration leverages the foundation of InnerSource success—proven collaboration patterns, established contribution workflows, and internal community management—to create sustainable open source projects. The gradual approach enables organizations to apply their InnerSource learnings while minimizing risks to both the project and the organization's reputation in the broader open source ecosystem.
112+
113+
## References
114+
115+
- [Open Source Guides: How to Contribute to Open Source (by GitHub)](https://opensource.guide/how-to-contribute/)
116+
- [Google's Open Source Documentation](https://opensource.google/documentation/reference)
117+
- [The Open Source Way](https://www.theopensourceway.org/)
118+
- [Apache Software Foundation: How to Open Source](https://www.apache.org/dev/apply-license.html)
119+
- [Microsoft Open Source Program: Releasing Projects](https://opensource.microsoft.com/program/#program-releasing)
120+
121+
## Known Instances
122+
123+
- **Nike** - Nike has migrated multiple open source projects from InnerSource to Open Source.
124+
125+
## Status
126+
127+
- Initial
128+
129+
## Author
130+
131+
- Jeff Bailey
132+
133+
## Related Patterns
134+
135+
- [InnerSource before Open Source](../1-initial/innersource-before-open-source.md)
136+
137+
## Alias
138+
139+
- InnerSource to Open Source Transition
140+
- Open Sourcing InnerSource Projects
141+
- Public Release of InnerSource Projects

0 commit comments

Comments
 (0)