Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign uppattern/open-source-trumps-innersource #46
Conversation
| ## Statement of Problem | ||
| * People find the InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with the open source component. | ||
| * ORIGINAL: Developers tend to select open source components rather than internally developed components, which results in poorer quality components or also makes it difficult to sustain internal component development. | ||
| * NEW: Different BLs are selecting different SW components to do the same function, resulting in inconsistencies in the user experience. |
gruetter
Feb 28, 2017
Collaborator
What does BL stand for? Is it business line? Is this different from a BU (business unit)?
NewMexicoKid
May 3, 2017
Collaborator
BL = Business Line. Typically there are multiple BLs in a Business Unit; but I can guess this varies depending on company.
|
|
||
| ## Forces | ||
| * There is a perception that the open source components are higher quality and more reusable. The channels to get any needed changes are more obvious with open source than with internal components. Can easily grab the open source whereas internally developed component has less visibility and ease of availability. (This could be separate Pattern). All things equal, they gravitate towards open source. | ||
| * Open source should be voluntary; mandating people to use internally developed software goes against open source principles. |
gruetter
Feb 28, 2017
Collaborator
I personally don't think this is a strong force. IMHO, voluntariness pertains more to the development of and making contributions to OSS, not necessarily to using it.
lenucksi
Sep 22, 2020
Member
Could any of you two (@gruetter @NewMexicoKid) suggest any possible commit suggestion to modify this or resolve this discussion?
| ## Statement of Problem | ||
| * People find the InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with the open source component. | ||
| * ORIGINAL: Developers tend to select open source components rather than internally developed components, which results in poorer quality components or also makes it difficult to sustain internal component development. | ||
| * NEW: Different BLs are selecting different SW components to do the same function, resulting in inconsistencies in the user experience. |
gruetter
Feb 28, 2017
Collaborator
Might this be a problem for a dedicated pattern/donut? I feel this is not so much related to OSS trumping InnerSource.
|
|
||
| ## Resolution | ||
| Corporate requirement that internally developed components should be evaluated before we go outside to search for open source component. If the open source component is now more mature, replace the internally developed with the open source. Create some extrinsic rewards to encourage them (initially). Make it easier to find the internal component (discoverability and visibility). Make the process simple and aligned with well known open source methods. | ||
| Provide an internal instance of GitHub Enterprise or an well publicized external GitHub organization repo to allow employees to easily find internally developed solutions. Assign maintainers to make sure proper open source processes are being followed within the leading repos. Provide “value add” services linked to the formal repo solution such as automated CI/CD services, IaaS/PaaS, NPM organization/server linkages, ChatOps, etc. |
gruetter
Feb 28, 2017
Collaborator
I personally feel that assigning maintainers is the key solution here. I think it deserves a bullet point of its own.
Cleaned up the pattern. Ready for review #1. 2017-05-10
| Open Source trumps InnerSource | ||
|
|
||
| ## Statement of Problem | ||
| * People find the InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with the open source component. |
NewMexicoKid
Feb 15, 2018
Collaborator
I think the core problem is that people's mindset is that open source is always superior to InnerSource, which often is not the case. The result is that this bias leads people to select and use inferior components, perhaps having to put effort to adapting them that would otherwise go towards improving and reusing the InnerSource component.
rrrutledge
Feb 15, 2018
Collaborator
I see. I think that point would be useful to roll into the statement - the inner source component meets their needs better than an open source component. They should choose the component that best meets their needs irrespective of it being open source vs. inner source?
gruetter
Sep 21, 2020
Collaborator
As a tangent: we've seen projects chose expensive COTS over superior InnerSource software, too.
|
|
||
| ## Context | ||
| * People look for software through external search engines. | ||
| * Different Business Lines (BLs) are selecting different SW components to do the same function, resulting in inconsistencies in the user experience. |
rrrutledge
Feb 15, 2018
Collaborator
This comment doesn't have to be addressed right now, but in the log run it would be nice if our patterns had consistent terminology (glossary) for terms like these (Business Lines).
gruetter
Sep 21, 2020
Collaborator
An additional effect possibly worth mentioning is that this will also result in more effort for procurement and supplier management.
lenucksi
Sep 22, 2020
Member
I've referenced @rrrutledge point into #170.
I've seen @gruetter and @NewMexicoKid agreeing on the possible need to mention the procurement and supplier management point. Can any of you two create a commit suggestion or a commit around this?
Putting each sentence on its own line. Doesn't change the look of the rendered markdown, but makes the document easier to review and comment.
|
These thoughts are great, Nick. I like the broad themes and big-picture items that you've outlined here and am excited to discuss more of the details. |
| ## Forces | ||
| * There is a perception that the open source components are higher quality and more reusable. The channels to get any needed changes are more obvious with open source than with internal components. Can easily grab the open source whereas internally developed component has less visibility and ease of availability. (This could be separate Pattern). All things equal, they gravitate towards open source. | ||
| * Open source should be voluntary; mandating people to use internally developed software goes against open source principles. | ||
| * Internally developed components should have advantages over competing open source. If you can clearly demonstrate this, it can be persuasive. |
rrrutledge
Feb 15, 2018
Collaborator
This line seems like part-Context (Internally developed components should have advantages over competing open source) and part-Solution (If you can clearly demonstrate this, it can be persuasive.) rather than Forces.
NewMexicoKid
Sep 20, 2020
Collaborator
@rrrutledge how about: Internally developed components can be made more robust and better suited towards corporate needs. Reasons for preferring inner source over open source alternatives might include issues with the open source license, use of proprietary and/or patented components, and functional/competitive advantages. The more that such internal components are used within a company, the better the ROI for the inner source development efforts. On the other hand, open source advances can sometimes leap frog internal development and without periodic assessment, it can be difficult to know when to stop investment in inner source development and switch to the adoption of open source components.
| * There is a perception that the open source components are higher quality and more reusable. The channels to get any needed changes are more obvious with open source than with internal components. Can easily grab the open source whereas internally developed component has less visibility and ease of availability. (This could be separate Pattern). All things equal, they gravitate towards open source. | ||
| * Open source should be voluntary; mandating people to use internally developed software goes against open source principles. | ||
| * Internally developed components should have advantages over competing open source. If you can clearly demonstrate this, it can be persuasive. | ||
| * Part of the reason this is a problem: if different teams are picking different open source components, the situation makes interoperability and integration more difficult; and this could potentially impact the user experience (inconsistency in behaviors). |
gruetter
Sep 21, 2020
Collaborator
I think this is not the problem this pattern addresses. I will add an additional force for this.
| * Open source should be voluntary; mandating people to use internally developed software goes against open source principles. | ||
| * Internally developed components should have advantages over competing open source. If you can clearly demonstrate this, it can be persuasive. | ||
| * Part of the reason this is a problem: if different teams are picking different open source components, the situation makes interoperability and integration more difficult; and this could potentially impact the user experience (inconsistency in behaviors). | ||
| * Depending on the regulations within a company, it might be easier to use a corporate licensed, InnerSource component than an open source component which is licensed in a way that requires the company to disclose IP. |
gruetter
Sep 21, 2020
Collaborator
Proposal: Using corporate licensed InnerSource components instead of using open source components with strong copyleft license avoids having to disclose IP.
| * Internally developed components should have advantages over competing open source. If you can clearly demonstrate this, it can be persuasive. | ||
| * Part of the reason this is a problem: if different teams are picking different open source components, the situation makes interoperability and integration more difficult; and this could potentially impact the user experience (inconsistency in behaviors). | ||
| * Depending on the regulations within a company, it might be easier to use a corporate licensed, InnerSource component than an open source component which is licensed in a way that requires the company to disclose IP. | ||
| * There may be many silos in the company; it would then be difficult to reach the developer base across those silos. |
rrrutledge
Feb 15, 2018
Collaborator
It's unclear to me what these two last bullet points are trying to get at or how they are uniquely appropriate to describing this pattern?
NewMexicoKid
Sep 20, 2020
Collaborator
I think the point of this force is that it can be difficult to fight perception among dispersed and silo'd engineering staff and to communicate (1) that the inner source project exits, (2) that it has advantages over competing open source, (3) that there are legitimate reasons for preferring the inner source over competing open source software.
| * It can be hard to find stuff in github (especially if names are cryptic and keywords aren't used). See [Poor Naming Conventions](https://github.com/paypal/InnerSourcePatterns/pull/59). | ||
|
|
||
| ## Sketch | ||
| See figure 1 in https://drive.google.com/open?id=0B7_9iQb93uBQNlJ0YU5wWmpWYUU |
rrrutledge
Feb 15, 2018
Collaborator
If I understand the diagram (and this article) right, then it looks like the diagram suggests that it is preferable to use an inner source project over an open source project in areas of software that are differentiating to the company's core business?
lenucksi
Sep 22, 2020
Member
What do you think about the following:
- Add this .jpg to the repo maybe in /assets/ or something similar such that it can be rendered with the pattern? Also, who created the image and are there possibly any copyrights attached to it that we need to take into account?
- Should there be some phrasing adding the insight from the image into the text?
| See figure 1 in https://drive.google.com/open?id=0B7_9iQb93uBQNlJ0YU5wWmpWYUU | ||
|
|
||
| ## Resolution | ||
| * Corporate requirement that internally developed components should be evaluated before we go outside to search for open source component. |
rrrutledge
Feb 15, 2018
Collaborator
I doubt the ability for such a requirement to have real, lasting, and actual affect on employee behavior.
NewMexicoKid
Sep 20, 2020
Collaborator
It may depend on the corporate culture or how this requirement is put in place (there might be a process for finding and evaluating software components or for using open source software). I think it is doable to require this step (we use it in our company).
gruetter
Sep 21, 2020
Collaborator
If this is the core solution of this pattern, then I propose we add language to the context which makes it clear that this solution could be successfully applied.
| ## Resolution | ||
| * Corporate requirement that internally developed components should be evaluated before we go outside to search for open source component. | ||
| If the open source component is now more mature, replace the internally developed with the open source. Create some extrinsic rewards to encourage them (initially). | ||
| Make it easier to find the internal component (discoverability and visibility). |
rrrutledge
Feb 15, 2018
Collaborator
Quite a bit of overlap with Create a tool with a central view of internally available software. Maybe just delete this sentence?
| ## Sketch | ||
| See figure 1 in https://drive.google.com/open?id=0B7_9iQb93uBQNlJ0YU5wWmpWYUU | ||
|
|
||
| ## Resolution |
rrrutledge
Feb 15, 2018
Collaborator
A lot of these suggested resolutions are (gut-feel) very large undertakings and outside the realm of reasonableness to just go and do. I agree that they would help the situation your describing, but feel that they are large to the point of their not having practical utility in including them here as independent items. Perhaps some of them need to be their own pattern and linked to from here? Or perhaps the need to include such large items as a solution indicates that the problem space that this pattern is trying to address is too broad?
gruetter
Sep 21, 2020
Collaborator
@rrrutledge : Are you ok with merging with the current state of the resolution section (there has been a slight rework), or do you think further rework is needed before merging?
|
Hi @NewMexicoKid @gruetter @rrrutledge (mentioning you as you spent quite some time on this PR already). We have reworked the maturity levels of the InnerSource patterns. The new levels make it more explicit what quality standards are expected for each level. With that we will also try to get PRs merged into master faster. Status of this pattern: We have currently categorized the Pattern in this PR as maturity level Level 2 - Structured. For that level we have two requirements:
How to get this PR merged?
I have no time to work on this, what to do? As this PR is open for a while, it would be completely understandable if your priorities have shifted and you don't time to work on this anymore. In that case please just let us know in a comment below. Then we can decide what to do with this PR on our own. Thank you for your help! |
|
Thanks @spier for adding this update. |
|
Thanks for this message, @lenucksi. I'm un-opinionated about what happens to my comments :) |
| * Create a tool with a central view of internally available software, but be aware that people are more inclined to google externally than look internally. | ||
|
|
||
| ## Resulting Context | ||
| Developers do select the best component regardless of whether it is open source or internally developed. Internally developed software components are then more widely reused. |
NewMexicoKid
Sep 20, 2020
Collaborator
Suggest: Developers select the best component regardless of whether it is open source or internally developed, but they do so with full knowledge of the inner source component, its capabilities, and reasons why it is recommended. Internally developed software components are then more widely and consistently used within the company.
Followed up on review suggestions and reworked slightly
|
Pattern looks good now and ready to merge, IMHO. I have not yet heard of a company which successfully adopted the core of the solution (mandate considering IS SW before OSS). The pattern conforms to the common structure, though. Therefore, I think the proper maturity level is 2-structured, @spier , @lenucksi . I'll update the PR tag accordingly. |
| Open Source trumps InnerSource | ||
|
|
||
| ## Statement of Problem | ||
| * People find the InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with the open source component. |
gruetter
Sep 21, 2020
Collaborator
As a tangent: we've seen projects chose expensive COTS over superior InnerSource software, too.
|
|
||
| ## Context | ||
| * People look for software through external search engines. | ||
| * Different Business Lines (BLs) are selecting different SW components to do the same function, resulting in inconsistencies in the user experience. |
gruetter
Sep 21, 2020
Collaborator
An additional effect possibly worth mentioning is that this will also result in more effort for procurement and supplier management.
| * Different Business Lines (BLs) are selecting different SW components to do the same function, resulting in inconsistencies in the user experience. | ||
|
|
||
| ## Forces | ||
| * There is a perception that the open source components are higher quality and more reusable. The channels to get any needed changes are more obvious with open source than with internal components. Can easily grab the open source whereas internally developed component has less visibility and ease of availability. (This could be separate Pattern). All things equal, they gravitate towards open source. |
gruetter
Sep 21, 2020
Collaborator
I'm not sold on the channels-are-more-obvious argument. In fact, if both the open source and InnerSource project do an equally good job of explaining how to collaborate with them, the InnerSource project might have an advantage (e. g. being able to see the shared calendar of the maintainers).
gruetter
Sep 21, 2020
Collaborator
Also, would it make sense to elaborate on where the perception of higher quality comes from? In german, we have a saying that goes something like this: "The prophet doesn't count in is own country".
NewMexicoKid
Sep 21, 2020
Collaborator
The perception usually comes from a lack of information, a bias in believing that open source = many more developers and users = higher quality (this is sometimes the case but not always).
| * Open source should be voluntary; mandating people to use internally developed software goes against open source principles. | ||
| * Internally developed components should have advantages over competing open source. If you can clearly demonstrate this, it can be persuasive. | ||
| * Part of the reason this is a problem: if different teams are picking different open source components, the situation makes interoperability and integration more difficult; and this could potentially impact the user experience (inconsistency in behaviors). | ||
| * Depending on the regulations within a company, it might be easier to use a corporate licensed, InnerSource component than an open source component which is licensed in a way that requires the company to disclose IP. |
gruetter
Sep 21, 2020
Collaborator
Proposal: Using corporate licensed InnerSource components instead of using open source components with strong copyleft license avoids having to disclose IP.
| * Internally developed components should have advantages over competing open source. If you can clearly demonstrate this, it can be persuasive. | ||
| * Part of the reason this is a problem: if different teams are picking different open source components, the situation makes interoperability and integration more difficult; and this could potentially impact the user experience (inconsistency in behaviors). | ||
| * Depending on the regulations within a company, it might be easier to use a corporate licensed, InnerSource component than an open source component which is licensed in a way that requires the company to disclose IP. | ||
| * There may be many silos in the company; it would then be difficult to reach the developer base across those silos. |
| ## Resolution | ||
| * Corporate requirement that internally developed components should be evaluated before we go outside to search for open source component. | ||
| If the open source component is now more mature, replace the internally developed with the open source. Create some extrinsic rewards to encourage them (initially). | ||
| Make it easier to find the internal component (discoverability and visibility). |
| Make the process simple and aligned with well known open source methods. | ||
| * Provide an internal instance of GitHub Enterprise or an well publicized external GitHub organization repo to allow employees to easily find internally developed solutions. | ||
| Assign maintainers to make sure proper open source processes are being followed within the leading repos. | ||
| Provide “value add” services linked to the formal repo solution such as automated CI/CD services, IaaS/PaaS, NPM organization/server linkages, ChatOps, etc. |
gruetter
Sep 21, 2020
Collaborator
"formal repo solution"
Am I right assuming that you mean the mandate by governance to evaluate InnerSource components, first, @NewMexicoKid ? If so, I propose to change to
"Make InnerSource components more attractive by providing "value add" services, such as ...
| * Provide an internal instance of GitHub Enterprise or an well publicized external GitHub organization repo to allow employees to easily find internally developed solutions. | ||
| Assign maintainers to make sure proper open source processes are being followed within the leading repos. | ||
| Provide “value add” services linked to the formal repo solution such as automated CI/CD services, IaaS/PaaS, NPM organization/server linkages, ChatOps, etc. | ||
| * Create a tool with a central view of internally available software, but be aware that people are more inclined to google externally than look internally. |
gruetter
Sep 21, 2020
Collaborator
I feel this is a bit of an overlap to the 2nd bullet point here (Make it easier to find ...). I propose to merge these two bullet points into one and link to the "InnerSource Portal" pattern.
| ## Sketch | ||
| See figure 1 in https://drive.google.com/open?id=0B7_9iQb93uBQNlJ0YU5wWmpWYUU | ||
|
|
||
| ## Resolution |
gruetter
Sep 21, 2020
Collaborator
@rrrutledge : Are you ok with merging with the current state of the resolution section (there has been a slight rework), or do you think further rework is needed before merging?
|
Thanks a lot for the review and work towards resolving open discussions @gruetter, @NewMexicoKid and @rrrutledge!
The contribution handbook has this as a verification requirement for
What are the key elements that have been validated in separate contexts here if there is no successful instance of deployment? I've also added a few review comments and commit suggestion after reading the current result. This is a very interesting pattern. And as a last element: Independent of this being merged as |
|
|
||
| ## Forces | ||
| * There is a perception that the open source components are higher quality and more reusable. The channels to get any needed changes are more obvious with open source than with internal components. Can easily grab the open source whereas internally developed component has less visibility and ease of availability. (This could be separate Pattern). All things equal, they gravitate towards open source. | ||
| * Open source should be voluntary; mandating people to use internally developed software goes against open source principles. |
lenucksi
Sep 22, 2020
Member
Could any of you two (@gruetter @NewMexicoKid) suggest any possible commit suggestion to modify this or resolve this discussion?
| * It can be hard to find stuff in github (especially if names are cryptic and keywords aren't used). See [Poor Naming Conventions](https://github.com/paypal/InnerSourcePatterns/pull/59). | ||
|
|
||
| ## Sketch | ||
| See figure 1 in https://drive.google.com/open?id=0B7_9iQb93uBQNlJ0YU5wWmpWYUU |
lenucksi
Sep 22, 2020
Member
What do you think about the following:
- Add this .jpg to the repo maybe in /assets/ or something similar such that it can be rendered with the pattern? Also, who created the image and are there possibly any copyrights attached to it that we need to take into account?
- Should there be some phrasing adding the insight from the image into the text?
| Developers select the best component regardless of whether it is open source or internally developed, but they do so with full knowledge of the inner source component, its capabilities, and reasons why it is recommended. Internally developed software components are then more widely and consistently used within the company. | ||
|
|
||
| ## Author | ||
| As told to Padma Sudarsan, 2016-09-30 |
lenucksi
Sep 22, 2020
Member
We've had quite a few discussions and edits around this. Are there suggestions on who should be included as co-authors to this?
|
|
||
| ## Context | ||
| * People look for software through external search engines. | ||
| * Different Business Lines (BLs) are selecting different SW components to do the same function, resulting in inconsistencies in the user experience. |
lenucksi
Sep 22, 2020
Member
I've referenced @rrrutledge point into #170.
I've seen @gruetter and @NewMexicoKid agreeing on the possible need to mention the procurement and supplier management point. Can any of you two create a commit suggestion or a commit around this?
|
|
||
| ## Patlet | ||
|
|
||
| People find the InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with the open source component. |
lenucksi
Sep 22, 2020
Member
I've slightly changed the phrasing here to make it easier to understand. This reflects my understanding of the rest of the pattern. Please correct if I got the point of the pattern wrong.
| People find the InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with the open source component. | |
| People find an InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with an equivalent open source component. |
| People find the InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with the open source component. | ||
|
|
||
| ## Statement of Problem | ||
| * People find the InnerSource project but, even if the InnerSource component meets their needs better than the respective open source component, they choose the open source component over the InnerSource component. |
lenucksi
Sep 22, 2020
Member
This is pretty much equivalent to the Patlet can we deduplicate or remove parts here?
| ## Resolution | ||
| * Corporate governance mandates that internally developed components are to be evaluated before open source component are selected. | ||
| * Make it easier to find the internal component (See [InnerSource Portal](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/master/patterns/2-structured/innersource-portal.md)). | ||
| * Provide an internal instance of GitHub Enterprise or a well publicized external GitHub organization repo to allow employees to easily find internally developed solutions. |
lenucksi
Sep 22, 2020
Member
I think this could be phrased clearer, I do not get the full point here. Do you refer to list of suggested OSS / InnerSource solutions? Possibly along the lines of an internal tech radar? Should the external (publicly visible?) GitHub org also list InnerSource solutions?
People find the InnerSource project but, after all things are considered, even if the InnerSource component meets their needs, they still go with the open source component.
NEXT STEP: Needs to be revised and reviewed
NOTES: Needs further clarification - 2016-10-27