-
Notifications
You must be signed in to change notification settings - Fork 195
[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
spier
wants to merge
10
commits into
main
Choose a base branch
from
innersource-before-open-source
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
6407bbb
[Pattern Draft] Require InnerSource before Open Source
spier 78e740c
Cleanup
spier 56bd23b
Fix linter issues
spier a070b94
If a new pattern in a PR does not contain any links, the GHA to check…
spier ff5699b
Adding some links to other patterns. Minor fix to Resulting Context.
spier 40f32c8
Merge branch 'main' into innersource-before-open-source
spier 7a03c91
Adding link to governance levels
spier b92c0ff
Adding Fernado as a co-author
spier 6b91291
Add link to repository-activity-score.md
spier 1431086
Adding another skill acquired during the solution
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
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,75 @@ | ||
# 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 e.g. via an [InnerSource Portal](../2-structured/innersource-portal.md). | ||
2. Clear [documentation](../2-structured/base-documentation.md) (including contribution guidelines), and [governance structures](../2-structured/governance-levels.md) are established. | ||
3. Maintainers gain experience managing contributions, reviewing pull requests, and addressing issues. | ||
4. Maintainers get to git practice the soft skills required to support a community of people outside of their own team. | ||
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). | ||
6. Feedback loops are created to refine processes before engaging a broader open source audience. | ||
|
||
## Resulting Context | ||
|
||
- Teams develop the skills necessary to manage open source projects effectively. | ||
- Contributor documentation and governance structures are established and tested. | ||
- Further internal teams start using the project (adoption), 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 | ||
|
||
## Status | ||
|
||
- Initial | ||
|
||
## Author(s) | ||
|
||
- Sebastian Spier | ||
- Fernando Correa | ||
|
||
## Alias | ||
|
||
- InnerSource as a Stepping Stone to Open Source | ||
- InnerSource before Open Source | ||
- InnerSource Incubation before Open Source |
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.