-
Notifications
You must be signed in to change notification settings - Fork 196
Create transitioning-contractor-code-to-innersource-model #377
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
Merged
Changes from all commits
Commits
Show all changes
28 commits
Select commit
Hold shift + click to select a range
0c65e69
Create transitioning-contractor-code-to-InnerSource-model
claredillon c165cbf
Renaming file to .md
spier 8ea750e
Changing caps in filename + Fixing some spacing
spier 17791fa
Removing some trailing spaces
spier c7d924b
Fix spelling of Contractor
spier 2949d13
Adding details about Known Instance
spier c908382
Removing "optional"
spier be3807c
Removing "optional"
spier dd34d96
Removing "optional"
spier 1e744bf
Adding Zack as author
spier 0d93fbd
Adding list formatting for Authors section
spier d88b732
Fixing linter issue
spier c9976bc
Adding further Forces
spier cc8cc61
Grammar fix
spier 066c82c
Formatting Known Instances as a list
spier 81716e1
Update patterns/1-initial/transitioning-contractor-code-to-innersourc…
claredillon b355f23
Update patterns/1-initial/transitioning-contractor-code-to-innersourc…
claredillon 5338257
Update patterns/1-initial/transitioning-contractor-code-to-innersourc…
claredillon be14878
Update patterns/1-initial/transitioning-contractor-code-to-innersourc…
claredillon da77109
Update patterns/1-initial/transitioning-contractor-code-to-innersourc…
claredillon a77d489
Fix linter issue
spier c7a61fb
Fix linter issue
spier 24bc694
Update patterns/1-initial/transitioning-contractor-code-to-innersourc…
claredillon ab05786
Update patterns/1-initial/transitioning-contractor-code-to-innersourc…
claredillon 45cedad
Update transitioning-contractor-code-to-innersource-model.md
claredillon 2494f3a
Fix linter issue
spier 6562551
Fix linter issue
spier 712c53c
Wording fix.
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
83 changes: 83 additions & 0 deletions
83
patterns/1-initial/transitioning-contractor-code-to-innersource-model.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,83 @@ | ||
## Title | ||
|
||
Transitioning Contractor Code to InnerSource Model | ||
|
||
## Patlet | ||
|
||
Contract developers are often not motivated to engage in InnerSource activities, which may be beyond the scope of their contract. This pattern describes how you can focus on transitioning the contractor project after the fact to an InnerSource project by setting expectations for specific InnerSource-related deliverables as part of the overall project delivery. | ||
|
||
## Problem | ||
|
||
Contractor developers are often not motivated (through forces described below) to not engage in InnerSource activities. Once delivered, and even if the code is made visible, their projects are often less likely to be part of successful InnerSourced engagements. | ||
|
||
## Context | ||
|
||
This problem exists where an organization either: | ||
|
||
- out-sources the development of a well defined project or | ||
- engages external firms for staff augmentation and has mixed teams of permanent employees with a large percentage of contract staff. This issue may occur less often in a mixed team where InnerSource principles and ways of working are already established within the organization, but the forces described below are still often at play. | ||
|
||
## Forces | ||
|
||
Contractor Motivation and Constraints: | ||
|
||
- Contracts with third-party developers tend to be focused on delivering an end result in the fastest possible fashion. As a result, all InnerSource activities (e.g. responding to third-party PRs) are considered to be distractions or something that will “slow down” delivery. | ||
- Concern that accepting code from other parts of the business might introduce security risks, scope creep or other issues that would subsequently have to be resolved by the contract team. | ||
- Concern that accepting PRs from other parts of the company may “muddy the waters” when it comes to assessing what parts of the project were completed/delivered by the contracted developers. | ||
- Contractors may have concerns about loss of control over the projects technical details if other teams are contributing significantly. | ||
- Even when motivations align (a project can be completed faster or with higher quality by engaging in InnerSource) contractors might still be unclear if they can because it is not explicitly listed as allowed in the contract terms. | ||
|
||
All of the above can mean that even if an individual contract developer wants to engage in InnerSource, there are system-level constraints pushing them not to. | ||
|
||
It should be noted that the above scenario is indirectly impacted by: | ||
|
||
- The norms around defining Statements of Work for third party contractors | ||
- Pressures to reduce contractor costs during procurement | ||
- Ability to tie contributions to payment at a granular level. | ||
|
||
It could also be noted that the contractor motivations in this instance is almost like a more extreme instance of the often reported organizational/budgetary constraints that might exist for some internal business units. | ||
|
||
## Solutions | ||
|
||
At the outset of the project, clearly define: | ||
|
||
- That the code will be made visible by default to all developers within the organization. | ||
- That the architecture of the code should be modular and ready for component reuse. | ||
- How the project will be transitioned to an InnerSource project. This could be similar to a transition of ownership plan for an open source project which should include: | ||
- Identification of new a maintainer team | ||
- An announcement to stakeholders regarding the transition | ||
- Written documentation describing functionality, architecture, and common processes like releasing, patching, deploying, testing, etc. | ||
- A prescribed number of hours on the contract set aside for the contractor to meet with the identified long term maintainer (normally from the company who hired the contractor) for an overview of responsibilities and Q & A. | ||
- (untested) A 30 day warranty pattern could be applied and so the contractor would provide 30 days of direct transition support to the new maintainers | ||
|
||
It is noted that this practice can work very well where there is a high trust relationship between the contracting team and the contractors. Perhaps they have worked closely together before, or have a pre-existing relationship. Further patterns that explore how to build trust between teams might enhance this pattern. | ||
|
||
## Resulting Context | ||
|
||
This particular pattern does not attempt to change the initial behavior of the contract development team (in terms of their potential lack of engagement with the InnerSource process). However, the end result is that the project does become part of the InnerSourced projects for the company after the fact. | ||
|
||
## Known Instances | ||
|
||
* **GitHub** has seen this approach work with their US government agency customers. | ||
|
||
## Status | ||
|
||
Initial | ||
|
||
## Author(s) | ||
|
||
- Clare Dillon | ||
- Zack Koppert | ||
|
||
## Acknowledgements | ||
|
||
Particular thanks to Zack Koppert for sharing his experiences in this area and to Gil Yehuda for raising the issue in the InnerSource Slack channel. | ||
|
||
This pattern was extracted from a conversation on the topic held with the following folks: | ||
|
||
- Brittany Istenes | ||
- Clare Dillon | ||
- Cristina Coffey | ||
- Derek Murawsky | ||
- Gil Yehuda | ||
- Zack Koppert |
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.