Skip to content

Extending Governance Levels #357

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 27 commits into from
Nov 24, 2022
Merged
Changes from 10 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
87 changes: 42 additions & 45 deletions patterns/1-initial/governance-levels.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,75 +2,72 @@

Transparent Governance Levels
Copy link
Member

Choose a reason for hiding this comment

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

For a discussion about alternative names for this pattern see
#357 (comment)

Btw I suggest that we work out all other content of this pattern first, and the handle the name as the very last thing. Naming is so hard! :)


## Context
## Patlet

Several teams are using different InnerSource patterns and all calling it "InnerSource", so the term is not precise enough to usefully describe a set of working practices without confusion.

Several teams are using InnerSource patterns and best practices. However the
degree to which they welcome not only contributions but give equal collaboration
rights to contributors differ. As a result there are unmatched expectations,
confusion and frustration when teams collaborate across team boundaries.
Estabilishing a more accurate common language that is understood across all teams allows anyone to communicate intent or set expectations efficiently without ambiguity.

## Problem

For two projects InnerSource best practices have been adopted. Project A
has a shared ownership model with [Trusted Committers](../2-structured/trusted-committer.md) from multiple teams.
Project B is fully owned by one team, only contributions are coming from
multiple teams. New contributors to either project are regularly confused about
the level of influence they can gain to the respective project. This leads to
long discussions, escalations and time lost on clarifications.
Several teams are using InnerSource practices. However the degree to which they welcome contributions and give equal collaboration rights to contributors differ. Despite these differences, all teams refer to their way of working as "InnerSource" without any additional qualifiers.

The result is confusion and frustration when teams collaborate as the expectation of what InnerSource means in practice is different in each team. This confusion also affects strategy planning and decisions on future InnerSource intent as the term is too vague which leads to long discussions and time lost on clarifications.

## Story

For two projects InnerSource best practices have been adopted. Project A has a shared ownership model with [Trusted Committers](../2-structured/trusted-committer.md) from multiple teams. Project B is fully owned by one team with contributions from multiple teams. New users of either project are regularly confused about the level of influence they can gain in the respective project. This leads to long discussions, escalations and time lost on clarifications.

Project C is currently closed source and used only by team 1. Team 2 want to use project C and the leadership of the two teams negotiates options which include InnerSource practices. Agreement takes longer than expected because the "InnerSource" term did not describe a target state that could be agreed without ambiguity, and the teams had to document bespoke sub-options for their leadership to consider before a decision could be made.

## Context

InnerSource concepts are estabilished within an organisation with multiple projects and teams adopting InnerSource. Internal InnerSource practices are not prescribed in detail and teams/projects have the autonomy to optimise for their local circumstances.

## Forces

- For project A shared ownership works well, members coming from multiple teams
are working together.
- For project B the backing team would like to retain a certain level of
ownership and control. Sharing ownership with other Trusted Committers outside
of the original team is not an option.
- Contributors want clarity on the level of influence they can gain in an
InnerSource project they are involved with.
- Writing detailed guidelines into each contributions file leads to a lot of
text that is hard to understand for engineers.
- Projects adopt different InnerSource patterns and practices to optimise for their context.
- Contributors want clarity on the level of influence they can gain in an InnerSource project they are involved with.
- Leaders want clarity on InnerSource project intentions to understand the expected cost and benefits.
- Writing a detailed description of a set of InnerSource practices requires significant effort to write and to read.

## Solution

Establish standardised building blocks which can be used by projects to signify
how much influence they are willing to share. Those building blocks can then be
used in contributing files.
The solution is to create a universally understood language to describe standard building blocks for InnerSource in your organisation:

Examples of building blocks:
1. Identify the common recurring InnerSource operating models that exist in your teams and projects.
2. Document each model in detail, and give each a distinctive name.
3. Promote the use of these names to describe projects until the name's meaning is understood across the whole organisation.

* **Bug reports and issues welcome**: People outside the core development team are
welcome to read the code. They can submit feature requests and bug reports for
things they would like to see changed.
Examples of common InnerSource operating models (1) are:

* **Contributions welcome**: People outside the core development team may use the
code, make modifications and feed those modifications back into the projects.
Trusted committers are willing to mentor those contributions to a state where
they can be accepted or communicate clearly why the proposed change cannot be
made.
- **Bug Reports and Issues Welcome**: People outside the core development team may use the code. They can submit feature requests and bug reports for things they would like to see changed.
- **Contributions Welcome**: People outside the core development team may use the code. They can also make modifications and submit them to core team for inclusion.
- **Shared Ownership**: Members of different teams collaborate on the project as equal peers. Everyone has the ability to merge code. Everyone has an equal say on the project direction. Everyone has an equal say in who else to add to this group.

* **Shared write access**: In addition to the above people outside the core
development team may gain write access to the source repository. Influence on
roadmap decisions as well as influence on who else gains write access is
restricted to the core development team.
Examples of promoting the names (3) are:

* **Shared ownership**: Members of different teams collaborate on the project as
equal peers. Everyone has the ability to merge code. Everyone has an equal say
on the project direction. Everyone has an equal say in who else to add to this
group.
- Using the names within project documentation and contributing guides.
- Labelling projects with the names in an [InnerSource Portal](../2-structured/innersource-portal.md).
- Presenting the names as a menu of adoption options for new InnerSource projects.
- Including the names and models in any internal InnerSource training or promotion.

## Resulting Context

Teams can adopt InnerSource best practices in a step-by-step way. By documenting
individual steps contributor confusion is avoided.
- Cross team communication occurs efficiently without confusion using terms that are universally understood and centrally documented.
- Organisation leaders understand the nuances within practising InnerSource and make better informed and more precise decisions that are easier to communicate.
- Increased standardisation of InnerSource practices within the organisation as the named and documented building blocks are used by teams as a menu for adoption.
- Teams can adopt InnerSource best practices in a step-by-step way which makes adoption easier and less intimidating.

## Known Instances

TBD
Flutter Entertainment define an "[Inner Source Pyramid](https://innersource.flutter.com/how/)" to describe 3 different InnerSource models: Readable Source, Guest Contributions and Maintainers in Multiple Teams. Each name is centrally documented. The use of these names is encouraged via repeated usage, direct training and categorisation of each InnerSource project.

## Status

Initial (Early draft)
Initial

## Authors

* Isabel Drost-Fromm
- Isabel Drost-Fromm
- Rob Tuley