Skip to content

Commit ec2b346

Browse files
robtuleyspier
andauthored
Extending Governance Levels (#357)
Co-authored-by: Sebastian Spier <github@spier.hu>
1 parent cb5b50d commit ec2b346

File tree

2 files changed

+69
-45
lines changed

2 files changed

+69
-45
lines changed

assets/img/flutter-pyramid.svg

Lines changed: 3 additions & 0 deletions
Loading

patterns/1-initial/governance-levels.md

Lines changed: 66 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,75 +2,96 @@
22

33
Transparent Governance Levels
44

5-
## Context
5+
## Patlet
6+
7+
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.
68

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

1211
## Problem
1312

14-
For two projects InnerSource best practices have been adopted. Project A
15-
has a shared ownership model with [Trusted Committers](../2-structured/trusted-committer.md) from multiple teams.
16-
Project B is fully owned by one team, only contributions are coming from
17-
multiple teams. New contributors to either project are regularly confused about
18-
the level of influence they can gain to the respective project. This leads to
19-
long discussions, escalations and time lost on clarifications.
13+
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.
14+
15+
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.
16+
17+
## Stories
18+
19+
### Example of Confusion
20+
21+
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 other 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.
22+
23+
### Example of Delayed Decision
24+
25+
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 options for their leadership to consider before a decision could be made.
26+
27+
### Examples from Open Source
28+
29+
Like "InnerSource", Open Source is also a broad term.
30+
31+
There are projects on GitHub, published purely for the pleasure of the author with no intention of long term maintenance, not intention to fix bugs submitted by users. This would be the equivalent of "Bug Reports and Issues Welcome" - you can report the bug, but its on the owner to find the time to fix it.
32+
33+
There are projects where the roadmap is created in-house, hidden from public view. Where commit rights come and go with the contract of the employees of one company (e.g. MongoDB, Elastic, Tensorflow). Users are welcome to submit patches, they will even be mentored through. All development happens in the open, but control and strategy is never shared. This would be the equivalent of stage "Contributions Welcome".
34+
35+
There are projects that share write access, but do not share the power to decide who gets write access next. This applies to everyone who is only a committer at an Apache project. There are projects that are fully shared across multiple independent organisations (e.g. k8s, any Apache project) - those would be "Shared Ownership".
36+
37+
The same levels make sense inside of organisations.
38+
39+
## Context
40+
41+
- InnerSource concepts are established within an organisation with multiple projects and teams adopting InnerSource.
42+
- Internal InnerSource practices are not prescribed in detail.
43+
- Teams/projects have the autonomy to optimise for their local circumstances.
2044

2145
## Forces
2246

23-
- For project A shared ownership works well, members coming from multiple teams
24-
are working together.
25-
- For project B the backing team would like to retain a certain level of
26-
ownership and control. Sharing ownership with other Trusted Committers outside
27-
of the original team is not an option.
28-
- Contributors want clarity on the level of influence they can gain in an
29-
InnerSource project they are involved with.
30-
- Writing detailed guidelines into each contributions file leads to a lot of
31-
text that is hard to understand for engineers.
47+
- Projects adopt different InnerSource patterns and practices to optimise for their context.
48+
- Users want clarity on the level of influence they can gain in an InnerSource project when deciding whether or how to use it.
49+
- Leaders want clarity on InnerSource project intentions to understand the expected cost and benefits.
50+
- Writing a detailed description of a set of InnerSource practices requires significant effort.
3251

3352
## Solution
3453

35-
Establish standardised building blocks which can be used by projects to signify
36-
how much influence they are willing to share. Those building blocks can then be
37-
used in contributing files.
54+
The solution is to create a universally understood language to describe the InnerSource operating models that are used in your organisation.
55+
56+
We define **InnerSource operating model** as a description of how much influence the core development team of a project ist willing to share with contributing teams. Or in other terms, the level of influence a contributing team can gain in the respective project.
3857

39-
Examples of building blocks:
58+
The shared language for these InnerSource operating models can be established with these steps:
4059

41-
* **Bug reports and issues welcome**: People outside the core development team are
42-
welcome to read the code. They can submit feature requests and bug reports for
43-
things they would like to see changed.
60+
1. Identify the common recurring InnerSource operating models that exist in your teams and projects.
61+
2. Document each model in detail, and give each a distinctive name.
62+
3. Promote the use of these names to describe projects until the name's meaning is understood across the whole organisation.
4463

45-
* **Contributions welcome**: People outside the core development team may use the
46-
code, make modifications and feed those modifications back into the projects.
47-
Trusted committers are willing to mentor those contributions to a state where
48-
they can be accepted or communicate clearly why the proposed change cannot be
49-
made.
64+
Examples of common InnerSource operating models (1) are:
5065

51-
* **Shared write access**: In addition to the above people outside the core
52-
development team may gain write access to the source repository. Influence on
53-
roadmap decisions as well as influence on who else gains write access is
54-
restricted to the core development team.
66+
- **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.
67+
- **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.
68+
- **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.
5569

56-
* **Shared ownership**: Members of different teams collaborate on the project as
57-
equal peers. Everyone has the ability to merge code. Everyone has an equal say
58-
on the project direction. Everyone has an equal say in who else to add to this
59-
group.
70+
Examples of promoting the model names (3) are:
71+
72+
- Using the names within project documentation and contributing guides (see also [Standard Base Documentation](../2-structured/project-setup/base-documentation.md)).
73+
- Labelling projects with the names in an [InnerSource Portal](../2-structured/innersource-portal.md).
74+
- Presenting the names as a menu of adoption options for new InnerSource projects.
75+
- Including the names and models in any internal InnerSource training or promotion.
6076

6177
## Resulting Context
6278

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

6684
## Known Instances
6785

68-
TBD
86+
![InnerSource Pyramid used by Flutter Entertainment](../../assets/img/flutter-pyramid.svg)
87+
88+
Flutter Entertainment define an [InnerSource Pyramid](https://innersource.flutter.com/how/) to describe 3 different InnerSource operating 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.
6989

7090
## Status
7191

72-
Initial (Early draft)
92+
Structured
7393

7494
## Authors
7595

76-
* Isabel Drost-Fromm
96+
- Isabel Drost-Fromm
97+
- Rob Tuley

0 commit comments

Comments
 (0)