Skip to content

Commit 5f68763

Browse files
authored
Merge pull request #80 from paypal/pattern-system
Establish pattern system
2 parents 4c3faa0 + d5b452d commit 5f68763

File tree

1 file changed

+289
-0
lines changed

1 file changed

+289
-0
lines changed

pattern-system.md

Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
1+
# InnerSource Pattern System
2+
3+
## About
4+
5+
This document shall serve to define a system with which we organize our
6+
patterns using a limited set of classifications.
7+
8+
## Related Work
9+
10+
### Design Patterns (Erich Gamma et. al.)
11+
12+
From the Authors of the classic GoF book "Design Patterns":
13+
14+
> Design patterns vary in their granularity and level of abstraction. Because
15+
> there are many design patterns, we need a way to organize them.
16+
17+
They classify patterns so that they "can refer to families of related patterns."
18+
The authors also suspect that this classification will make "learning the
19+
catalog" faster. They Classify patterns according to two criteria: Purpose and
20+
Scope. They introduce the following classes of purpose in their book:
21+
22+
- Creational,
23+
- Structural and
24+
- Behavioral.
25+
26+
Orthogonal to this, they distinguish two scope classes, related to object
27+
oriented SW development:
28+
29+
- Class and
30+
- Object.
31+
32+
The main ordering criterion in the books catalog is the Purpose and each
33+
pattern is "tagged" with the scope classification.
34+
35+
### Pattern-Oriented Software Architecture (Fram Buschmann et. al.)
36+
37+
Frank Buschmann also organizes the patterns in his (first) book using, what he
38+
calls "categories". Similarly to the GoF book he uses one category to organize
39+
the content of his book, in this case the level of abstraction the pattern
40+
applies on:
41+
42+
- Architectural Patterns,
43+
- Design Patterns and
44+
- Idioms.
45+
46+
The second criterion categorizes the problems solved by the patterns:
47+
48+
- _From Mud to Structure_,
49+
- _Distributed Systems_,
50+
- _Interactive Systems_,
51+
- _Adaptable Systems_,
52+
- _Structural Decomposition_,
53+
- ...
54+
55+
you get the point.
56+
57+
In addition to this, he postulates a number of properties, a pattern system
58+
must exhibit. According to Buschmann, a pattern system
59+
60+
- should be simple and easy to learn,
61+
- should consist of only a few classification criteria,
62+
- should use a classification criterion that the reflects _natural properties_
63+
of patterns (e. g. kinds of problems, not e. g. what pattern language a
64+
patterns belongs to),
65+
- should provide a _roadmap_ that leads users to a set of potentially
66+
applicable patterns and
67+
- it should be open to the integration of new patterns.
68+
69+
### Conclusion
70+
71+
I have used both books extensively and found their respective pattern systems
72+
very helpful in finding patterns for specific problems and for finding related
73+
patterns. I also think that the criterions for a useful pattern system
74+
postulated by Frank Buschmanns are sensible and might serve as a role model for
75+
our InnerSource pattern system.
76+
77+
### A pattern language for creating pattern languages (Takashi Iba)
78+
79+
Takashi Iba has published an article in the ACM Digital Library from PLoP 2016:
80+
[A pattern language for creating pattern languages: 364 patterns for pattern
81+
mining, writing, and symbolizing](https://dl.acm.org/citation.cfm?id=3158175&CFID=831673585&CFTOKEN=74341142&qualifier=LU1011674)
82+
- for those without ACM DL access, there is [an earlier draft of the paper from
83+
PLoP 2016](http://www.hillside.net/plop/2016/papers/three/26.3.pdf).
84+
85+
## Candiate Classifications
86+
87+
This section shall serve to collect individual proposals for systems of ISC
88+
patterns. Contribute away ;)
89+
90+
### Georg Grütter
91+
92+
I propose we use a classification of the problem, a pattern tries to solve as
93+
the main criteria for organizing our list of patterns. The following
94+
classifications come to mind:
95+
96+
- 1. Getting started with InnerSource
97+
- 2. Getting sustainable middle management buy-in and support
98+
- 3. Getting buy-in of developers
99+
- 4. Fostering contributions
100+
- 5. Interfacing with traditional, non-InnerSource projects
101+
102+
Tim: Could be tags, instead of (orthogonal) planes
103+
Ofer: Ideas for vectors: Timeline, adoption, ...
104+
105+
As an additional category, we might classify the solutions provided by the
106+
patterns into:
107+
108+
- organizational and
109+
- social.
110+
111+
#### Test run
112+
113+
- 30 Day Warranty;1/2/3/4/5
114+
- Common Requirements;1/4
115+
- Contracted Contributor;1/2/4
116+
- Dedicated Community Leader;1/4
117+
- Discover Your InnerSource;1/4/5
118+
- Improve Findability;? (similar to "Discover your InnerSource"?)
119+
- Junkyard Styled InnerSource;3/4
120+
- Modular Code;1/2/3/4/5
121+
- Review Committee;1/2
122+
123+
- Change Middle Management Mindset
124+
- Assisted Compliance
125+
- Include Product Owners
126+
- Start as Experiment
127+
- Not Invented Here
128+
- Change Developers Mindset
129+
- Overcoming Project Management Time Pressures
130+
- Open Source Trumps InnerSource
131+
- Get Contributions Despite Silo Thinking
132+
- Contained InnerSource
133+
134+
### Tim Yao
135+
136+
Another plane that would be useful is the plane of type of InnerSource.
137+
InnerSource programs can be structured to accomplish different goals: e.g.,
138+
139+
* P: Product Development
140+
* T: Tools Development
141+
* I: Innovation (Proof of concepts, demos)
142+
* S: Shared components development
143+
* C: Culture
144+
145+
Each of these programs have some unique characteristics. E.g., sometimes in
146+
Product Development, the open source characteristic of voluntariness has to be
147+
sacrificed to ensure that sufficient development resources are dedicated to
148+
meet customer commitments and schedules. Similarly, there might be a need to
149+
limit code visibility/transparency for certain very proprietary products while
150+
making use of InnerSource methods to facilitate joint development between
151+
different business lines.
152+
153+
#### Test run
154+
155+
- 30 Day Warranty;P/T/S
156+
- Common Requirements;P/I/S
157+
- Contracted Contributor;P/T/I/S
158+
- Dedicated Community Leader;P/T/I/C
159+
- Discover Your InnerSource;T/S
160+
- Improve Findability (s. above)
161+
- Junkyard Styled InnerSource;T/S/C
162+
- Modular Code;P/T/S
163+
- Review Committee;I/S/C
164+
165+
- Change Middle Management Mindset
166+
- Assisted Compliance
167+
- Include Product Owners
168+
- Start as Experiment
169+
- Not Invented Here
170+
- Change Developers Mindset
171+
- Overcoming Project Management Time Pressures
172+
- Open Source Trumps InnerSource
173+
- Get Contributions Despite Silo Thinking
174+
- Contained InnerSource
175+
176+
#### Pattern Classification vs. Pattern Language
177+
178+
One lesson from PLoP 2017 was that the GoF book presented not a pattern
179+
language but a (useful) collection of patterns. Ideally, while we may have
180+
different classification systems for our InnerSource patterns, I think we want
181+
to develop a Pattern Language--a group of patterns that work together to solve
182+
a larger problem (e.g., "How do I build a new InnerSource program appropriate
183+
for my company") vs. a collection of patterns that might not have a larger
184+
goal.
185+
186+
### Daniel Izquierdo
187+
188+
Another option would be to use the principles defined by Jim Jagielski in his
189+
talk "InnerSource 101 and The Apache Way"[1] as a way to characterize patterns:
190+
191+
* Culture
192+
* Communication
193+
* Transparency
194+
* Collaboration
195+
* Community
196+
* Meritocracy
197+
198+
And in addition, this would have some ortogonal techniques to work on building
199+
a proper transparency (for instance) that could go from the infrastructure to
200+
be used to monitoring the process and produce surveys, training and other
201+
actions.
202+
203+
Another potential characterization would be to use a similar structure as
204+
existing in the organizations. This would affect all of the departments in that
205+
organization. For instance, the 'Review Committee' pattern helps with the
206+
process of letting developers work on their own and still give control to
207+
middle management and business roles. Would it make sense to have another
208+
potential characterization based on the companies structure?
209+
210+
* IT/DevTeams
211+
* Marketing
212+
* Management
213+
* Legal
214+
* Business
215+
* Financial
216+
217+
#### Test run
218+
219+
- 30 Day Warranty
220+
- Common Requirements
221+
- Contracted Contributor
222+
- Dedicated Community Leader
223+
- Discover Your InnerSource
224+
- Improve Findability
225+
- Junkyard Styled InnerSource
226+
- Modular Code
227+
- Review Committee
228+
229+
- Change Middle Management Mindset
230+
- Assisted Compliance
231+
- Include Product Owners
232+
- Start as Experiment
233+
- Not Invented Here
234+
- Change Developers Mindset
235+
- Overcoming Project Management Time Pressures
236+
- Open Source Trumps InnerSource
237+
- Get Contributions Despite Silo Thinking
238+
- Contained InnerSource
239+
240+
241+
[1] https://es.slideshare.net/jimjag/apachecon-2017-innersource-and-the-apache-way
242+
243+
244+
245+
### Russ Rutledge
246+
247+
I like a lot of the other planes suggestions. Wanted to add one more - the point in the lifecycle of the InnerSource project. Does this pattern apply to:
248+
* Pre-launch (prepration to launch) an InnerSource project?
249+
* Launch (initial kick-off)?
250+
* Initial growth?
251+
* Broad adoption?
252+
* End-of-life?
253+
254+
#### Test run
255+
256+
- 30 Day Warranty
257+
- Common Requirements
258+
- Contracted Contributor
259+
- Dedicated Community Leader
260+
- Discover Your InnerSource
261+
- Improve Findability
262+
- Junkyard Styled InnerSource
263+
- Modular Code
264+
- Review Committee
265+
266+
- Change Middle Management Mindset
267+
- Assisted Compliance
268+
- Include Product Owners
269+
- Start as Experiment
270+
- Not Invented Here
271+
- Change Developers Mindset
272+
- Overcoming Project Management Time Pressures
273+
- Open Source Trumps InnerSource
274+
- Get Contributions Despite Silo Thinking
275+
- Contained InnerSource
276+
277+
278+
### Ofer Hermoni
279+
280+
tools
281+
security
282+
Culture change (probably need to separate into multiple categories)
283+
buy in
284+
trust
285+
etc.
286+
Processes / Methodology
287+
Coding practices
288+
289+

0 commit comments

Comments
 (0)