Skip to content

New Pattern: Core Team #345

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 19 commits into from
Aug 26, 2021
Merged
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 107 additions & 0 deletions patterns/2-structured/core-team.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
## Title

Core Team

## Patlet

Even when an InnerSource project is widely needed, contributions and usage may be stymied because the project is difficult to work with.
Establish a core team that is dedicated to take care of the project's fundamental items.
Their work enables contributors to add and use the features that provide value to their scenarios.

## Problem

* It is difficult to contribute to the project.
This could be due to things like:
* Can't run the project locally.
* Poor documentation.
* Convoluted code.
* Inadequate testing.
* It is difficult to use the project.
Some possible causes:
* Poor documentation (again).
* Frequent bugs.
* Unintuitive setup.

## Story

There's a central project that everyone depends on.
What a great candidate for InnerSource!
Unfortunately, the project has grown organically, with various contributions and additions slapped on haphazardly.
Now it's an icky, thick morass of code that no one understands and everyone is afraid to touch.
It's clearly due for an overhaul (e.g. refactoring, testing, documentation, etc.), but even though everyone needs and wants that work, no one takes the time to do it.

## Context

* Many teams need the project.
* Significant tech debt.
* Slow adoption and iteration on the project.
* Nobody is taking reponsibility for the project and contribution ecosystem as a whole.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* Nobody is taking reponsibility for the project and contribution ecosystem as a whole.
* Nobody is taking responsibility for the project and contribution ecosystem as a whole (i.e. the project has no clearly stated owner/maintainer).
  • one typo fix
  • added a clause that mentions owner/maintainer, as those words were the words that I was looking for when trying to understand the Context/Forces

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorporated this feedback. What do you think?


## Forces

* Everyone is busy.
* Each contributing team prioritizes work that results in an immediate payoff for that team.
* As the project grows the natural trend is for it to become more difficult to use and to modify.

## Solution

Form a core team whose job it is to maintain this project in a state so that others can easily onboard and contribute to it.This core team does the work that is necessary for a healthy usage and contribution ecosystem.
This critical work tends to not be prioritized as a contribution.
Catogories of this type of work include communication, local environment, and devops infrastructure.

Here are some specific examples:

* Production bugs.
* Documentation.
* Onboarding tutorials and examples.
* Automated testing.
* CI/CD.
* Local environment.
* Modularization.
* Versioning.
* Monitoring.
* Trailblazing new classes/categories of features.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pure formatting question:
Is there any particular reason to have periods after each list item here, even though those are not full sentences?
Same question for the list in the Problem section.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the Problem section the bullets are finishing the sentence that is started before the colon.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed them from this list.


Each of these items is very important to a healthy product ecosystem, yet is unlikely to be prioritized as a contribution.

The core team may be composed of a small number of people on a full-time or a part-time basis.
The choice depends on the amount of work needed, the availibility of resources, and the culture of the organization.
The most important consideration is to form the team in a way that allows the organization to empower and hold them accountable in the same way as any other team.

Due to their central role, core team members should nearly always fill the role of [Trusted Committers] as well.
While the [Trusted Committer] role focuses mostly on facilitating others' contribution and use of the project, a core team member regularly contributes to the project as well.
The core team doesn't have its own business agenda that determines its contibutions.
They decide what to contribute based on what will most help others to use and contribute to the project.

A good way to continually remind the core team of this goal is to have them report regularly on:

* number of active teams using the project
* number of off-team contributions to the project.

Continual focus on these metrics will naturally drive the core team to prioritize generally the right work to create a thriving InnerSource ecosystem around the project.

## Resulting Context

* It is easy to use and contribute to the project.
* Many teams use and contribute to the project.
* Core team has their success defined in terms of others' interaction with and response to their project.

## Rationale

Separating out a core team and tasking them in this way helps to fill the gaps that a successful project needs yet are left behind by contributors that are pursuing their own agenda only.
The core team fills those gaps and greases the wheels so that the contribution ecosystem remains healthy.

## Known Instances

Nike implented this pattern to manage the InnerSource effort around its reusable CI/CD pipelines.

## Status

Structured

## Author

[Russell R. Rutledge](https://github.com/rrrutledge)

[Trusted Committers]: https://innersourcecommons.org/learn/learning-path/trusted-committer/
[Trusted Committer]: https://innersourcecommons.org/learn/learning-path/trusted-committer/