-
Notifications
You must be signed in to change notification settings - Fork 201
feat: add Migrating from InnerSource to Open Source #851
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
Merged
spier
merged 23 commits into
InnerSourceCommons:main
from
jeffabailey:migrating-from-innersource-to-opensource
Sep 30, 2025
Merged
Changes from all commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
dba2f4e
feat: add Migrating from InnerSource to Open Source
jeffabailey d806b98
Merge branch 'InnerSourceCommons:main' into migrating-from-innersourc…
jeffabailey 14406cf
Test a new action that checks if all patterns are listed in the main …
spier fd4dbe4
Test
spier 34becb5
Linter fix
spier bf7f175
Running check on all pattern files, rathern than on just the new ones
spier 9571676
Get rid of workflow steps that are not needed
spier b9f45d9
Fix wrong GHA syntax
spier 26f2831
Writing annotation to be picked up by GHA
spier 3514153
Adding errors to step summary
spier 22a3e12
Cleanup
spier 9db4fdd
List new pattern in README
spier 628a505
Merge branch 'InnerSourceCommons:main' into migrating-from-innersourc…
jeffabailey ece0f36
feat: add bullets from previous ISPO WG zoom summary
jeffabailey 762daec
Merge branch 'migrating-from-innersource-to-opensource' of github.com…
jeffabailey ee6b191
Adding Patlet
spier b5edcd4
Removing repo for https://opensource.guide (which is listed separatel…
spier a4bd71d
Fix name. Add org behind hit.
spier 9dc0c74
Adding link to Microsoft OS Program
spier e7e2354
Update patterns/1-initial/migrating-from-innersource-to-open-source.md
jeffabailey 15e3430
fix: incorrect reference links
jeffabailey b5a85a2
Rename workflow
spier 431a83b
Rename workflow file
spier File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# Check if all patterns are listed in README.md | ||
name: All Patterns Listed | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
branches: | ||
- main | ||
|
||
jobs: | ||
all-patterns-listed: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v5 | ||
|
||
- name: Check if all patterns are listed in README.md | ||
run: | | ||
README="README.md" | ||
|
||
# Ensure README.md exists | ||
if [[ ! -f "$README" ]]; then | ||
echo "Error: $README not found!" | ||
exit 1 | ||
fi | ||
|
||
missing=0 | ||
|
||
for file in patterns/*/*.md; do | ||
if grep -qF "$file" "$README"; then | ||
echo "✔ Found: $file" | ||
else | ||
echo "✘ Missing: $file" | ||
echo "✘ Pattern file not listed in README.md: $file" >> $GITHUB_STEP_SUMMARY | ||
missing=$((missing + 1)) | ||
fi | ||
done | ||
|
||
if [[ $missing -gt 0 ]]; then | ||
echo "Some patterns are missing from $README." | ||
exit 1 | ||
else | ||
echo "All patterns are listed in $README." | ||
exit 0 | ||
fi |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
141 changes: 141 additions & 0 deletions
141
patterns/1-initial/migrating-from-innersource-to-open-source.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
## Title | ||
|
||
Migrating from InnerSource to Open Source | ||
|
||
## Patlet | ||
|
||
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. | ||
|
||
## Problem | ||
|
||
spier marked this conversation as resolved.
Show resolved
Hide resolved
|
||
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. | ||
|
||
## Story | ||
|
||
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. | ||
|
||
## Context | ||
|
||
This pattern applies when: | ||
|
||
- An InnerSource project has achieved internal success and adoption, demonstrating proven collaborative development practices. | ||
- The organization has established InnerSource practices and governance, providing a foundation for external community management. | ||
- There is strategic value in releasing the project publicly while maintaining its internal utility. | ||
- Legal and compliance frameworks are in place for open source releases. | ||
- The project team has experience with InnerSource collaborative development practices and internal community management. | ||
- External market demand or strategic positioning justifies open sourcing, leveraging the project's InnerSource success. | ||
|
||
## Forces | ||
|
||
- **Legal Complexity**: Existing code may contain proprietary information, unclear licensing, or patent concerns that must be resolved before public release | ||
- **Security Exposure**: Internal security practices may not be suitable for public code, requiring a comprehensive security review | ||
- **Governance Transition**: Internal governance structures may conflict with open source community expectations and meritocracy principles | ||
- **Community Readiness**: Internal teams may lack experience managing external contributors and community dynamics | ||
- **Resource Allocation**: Open source projects require ongoing maintenance and community support that may conflict with internal priorities | ||
- **Brand and Reputation**: Public release represents the organization to external communities and may impact brand perception | ||
- **Competitive Advantage**: Releasing code publicly may reduce competitive advantages while potentially increasing market influence | ||
- **Regulatory Compliance**: Industry-specific regulations may impose additional requirements for public code releases | ||
|
||
## Solutions | ||
|
||
Establish a comprehensive migration process that includes: | ||
|
||
1. **Pre-Migration Assessment**: Evaluate the project's readiness using established criteria, including adoption metrics, documentation quality, and community management capabilities | ||
- Assess business value and strategic alignment for external release. | ||
- Ensure InnerSource templates align with open source standards to reduce transition friction. | ||
|
||
2. **Legal and Compliance Review**: | ||
- Conduct a thorough code review to identify and remove proprietary information. | ||
- Establish clear licensing terms and intellectual property ownership. | ||
- Perform patent and copyright clearance. | ||
- Create legal documentation for external contributors. | ||
- Maintain contributor history and credits during the transition to avoid losing valuable contribution records. | ||
|
||
3. **Security Hardening**: | ||
- Remove internal credentials, API keys, and sensitive configuration. | ||
- Implement security best practices suitable for public code. | ||
- Establish vulnerability disclosure processes. | ||
- Create security documentation and guidelines. | ||
|
||
4. **Governance Structure Design**: | ||
- Define decision-making processes that balance internal needs with community input to ensure effective outcomes. | ||
- Establish maintainer roles and responsibilities. | ||
- Create contribution guidelines and code of conduct. | ||
- Design community management processes. | ||
- Add contributor acknowledgment sections to READMEs to appropriately credit all contributors during the transition. | ||
|
||
5. **Community Preparation**: | ||
- Train maintainers on open source community management | ||
- Establish communication channels and documentation standards. | ||
- Create onboarding processes for external contributors. | ||
- Develop community engagement strategies. | ||
|
||
6. **Infrastructure Setup**: | ||
- Migrate to public repositories with appropriate access controls. | ||
- Set up CI/CD pipelines suitable for public development. | ||
- Establish issue tracking and project management tools. | ||
- Create public documentation and websites. | ||
|
||
7. **Gradual Release Strategy**: | ||
- Start with limited external access or beta releases. | ||
- Gradually expand community participation. | ||
- Monitor adoption and community health metrics. | ||
- Adjust processes based on community feedback. | ||
|
||
8. **Ongoing Support Framework**: | ||
- Establish maintenance and support processes. | ||
- Create escalation procedures for critical issues. | ||
- Define success metrics and review cycles. | ||
- Plan for long-term sustainability | ||
- Implement systems to measure and demonstrate business value produced by open source developers. | ||
- Identify and automate repetitive processes in project setup and maintenance. | ||
|
||
## Resulting Context | ||
|
||
After successful migration: | ||
|
||
- The project gains external contributors and broader adoption, building on its InnerSource foundation. | ||
- Internal teams leverage their InnerSource community management experience to manage external contributors effectively. | ||
- The organization builds a reputation within the open source ecosystem, demonstrating a successful evolution from InnerSource to open source. | ||
- Legal and compliance frameworks are established for future open source releases. | ||
- The project may require ongoing resource allocation for community management, but it benefits from established InnerSource practices. | ||
- Internal development processes adapt to external community needs while maintaining InnerSource principles. | ||
- New opportunities for collaboration and innovation emerge through external partnerships, extending the collaborative culture developed through InnerSource. | ||
- Open sourcing projects often leads to increased internal usage and adoption, contrary to initial expectations. | ||
- Aligning InnerSource and open source templates reduces friction for future transitions. | ||
|
||
## Rationale | ||
|
||
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. | ||
|
||
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. | ||
|
||
## References | ||
|
||
- [Open Source Guides: How to Contribute to Open Source (by GitHub)](https://opensource.guide/how-to-contribute/) | ||
- [Google's Open Source Documentation](https://opensource.google/documentation/reference) | ||
- [The Open Source Way](https://www.theopensourceway.org/) | ||
- [Apache Software Foundation: How to Open Source](https://www.apache.org/dev/apply-license.html) | ||
spier marked this conversation as resolved.
Show resolved
Hide resolved
|
||
- [Microsoft Open Source Program: Releasing Projects](https://opensource.microsoft.com/program/#program-releasing) | ||
|
||
## Known Instances | ||
|
||
- **Nike** - Nike has migrated multiple open source projects from InnerSource to Open Source. | ||
|
||
## Status | ||
|
||
- Initial | ||
|
||
## Author | ||
|
||
- Jeff Bailey | ||
|
||
## Related Patterns | ||
|
||
- [InnerSource before Open Source](../1-initial/innersource-before-open-source.md) | ||
|
||
## Alias | ||
|
||
- InnerSource to Open Source Transition | ||
- Open Sourcing InnerSource Projects | ||
- Public Release of InnerSource Projects |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.