-
Notifications
You must be signed in to change notification settings - Fork 191
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
[Pattern Draft] Require InnerSource before Open Source #776
base: main
Are you sure you want to change the base?
Conversation
… links should not fail
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.
LGTM 👍
What is presented here reflects very well what we have as generic practices.
We use badges to identify the stages of the project in this innersource journey (ready, Active, Attractive, champion) to further engage teams in this evolutionary process.
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. |
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.
In our case, the project may be made available to other teams for contributions, but step 2 is so important that we only consider the project to be truly ready once this step has been reviewed and approved (innersource ready status).
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.
Who does the review of this step?
Also what is the consequence of becoming "innersource ready"? e.g. is the project only published in your InnerSource Portal once that stage has been reached?
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. |
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.
I really liked the way these steps are listed. It reflects a lot of what we do.
We measure what we call the activity and attractiveness of the project.
We also measure the popularity of use (the focus of reuse in innersource) of the project by others, which shows us how valuable it is to the organization.
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.
How do you define activity and attractiveness?
For activity we have this pattern that sounds related? repository-activity-score.md
I like popularity. Mathematically this sounds like a count of teams that have adopted the given project? or how do you measure it?
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. |
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.
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.
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.
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" :))
@fer-correa I assume these stages are used, no matter if a project wants to become open source eventually or not, right? Could you define these 4 stages in a bit more detail? |
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.
Thank you @fer-correa for the insights from your org. I left some replies. Let's see how we can work your feedback into the pattern.
Btw feel free to use inline suggestions if you want to make text changes to the pattern.
Of course you can also fork and send pull requests towards this branch :)
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. |
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.
Who does the review of this step?
Also what is the consequence of becoming "innersource ready"? e.g. is the project only published in your InnerSource Portal once that stage has been reached?
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. |
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.
How do you define activity and attractiveness?
For activity we have this pattern that sounds related? repository-activity-score.md
I like popularity. Mathematically this sounds like a count of teams that have adopted the given project? or how do you measure it?
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. |
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.
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" :))
|
||
## Known Instances | ||
|
||
TBD |
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?
Closes #285
I have created a first draft around this idea, even though I don't have an organization at hand that can confirm that they are using this practice. Therefore this is a draft/initial pattern.
However I hope that by sharing a draft it becomes easier to get other orgs to contribute their experience to this idea, as they don't have to start writing this pattern from scratch.
Some things that could still be done to improve the content of this pattern:
Appendix
From https://opensource.guide/starting-a-project:
From https://dev.to/captainsafia/so-you-wanna-open-source-a-project-eh-5779
From https://www.eclipse.org/projects/handbook/#incubation
From https://www.linuxfoundation.org/resources/open-source-guides/starting-an-open-source-project:
From https://ben.balter.com/2015/03/08/open-source-best-practices-internal-collaboration/:
I love this quote:
So if you are managing to run your project as InnerSource at least for some time, you are forcing yourself to develop more open processes around your project. This will be a good preparation for releasing it as open source later.