-
Notifications
You must be signed in to change notification settings - Fork 193
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.
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" :))
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 :)
I agree.
It may seem obvious or repetitive, but I see that every project that aims to be open source must go through the innersource phase. This phase will bring maturity to the project and those responsible. At the same time, not every innersource project will be able to be published as open source (maybe by strategy, by completely organizationally-driven use, etc.)
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)
Here, for this case, I really don't have any examples to share. Maybe, if we consider the size of the organization, there may be cases where a project is great and could be used by several other companies and people, but as an innersource it may attract people interested in contributing because the technology or proposal is interesting but still not be cases of reuse by the organization's teams... does what I said make sense?
- (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 :)
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?
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.
Hi @fer-correa. Thank your for your feedback on this PR so far! Do you have time to review the inline comments as well as the comments above? Btw I added you as a co-author of this pattern. Hope that is fine for you? See b92c0ff |
Sorry for the absence. |
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.