Skip to content

Commit ad59360

Browse files
committed
Adapting heading level in these patterns to h2 (##)
1 parent 53ea867 commit ad59360

3 files changed

Lines changed: 36 additions & 36 deletions

File tree

patterns/1-initial/balancing-openness-and-security.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Title
1+
## Title
22

33
Balancing Openness and Security
44

@@ -7,41 +7,41 @@ Balancing Openness and Security
77
While InnerSource flourishes in environments with a high degree of shared code, Security/Legal prefers the limitation of source code access to only those that need it.
88
By making Security/Legal part of the team, introducing explicit sharing levels and security policies for shared repositories, as well as defining what qualifies as sensitive information, code sharing can be facilitated while minimizing the associated risks.
99

10-
# Problem
10+
## Problem
1111

1212
A successful InnerSource program needs openness and transparency (e.g. access to code, issues, documentation, and roadmap), while good security practice is to minimize access, following the [principle of least privilege][principle-of-least-privilege]. How to balance and address these seemingly contradicting requirements?
1313

14-
# Story
14+
## Story
1515

1616
Most organizations developing proprietary software will have source code that they do not want to leave the organization, as this may harm their business. Think what would happen when the major competitors would have access to their latest features and would know what they are working on next.
1717

1818
Even when the source code management system is not compromised from the outside, malicious employees or interns could leak code to the competition. Or think about gaining access to sensitive systems and services using credentials that are hard-coded in source code. Or injection of malicious code into a product’s codebase.
1919

2020
Restricting access typically reduces the risk of these things from happening, but at the same time hampers collaboration and re-use.
2121

22-
# Context
22+
## Context
2323

2424
- The organization has an InnerSource Program Office (ISPO), or a similar group, steering the success of the InnerSource initiative in the organization. One of their goals is to stimulate maximum openness and transparency in the organization.
2525
- The organization has a Security Team constraining unnecessary data access to prevent the organization from data-leakage and malicious code injection.
2626
- The Security Team, ISPO, and Engineering teams are not regularly talking with each other.
2727
- "Closed Source" is the default in the organization when creating new repositories, i.e. only the team owning/maintaining the code has access to the given repo.
2828
- "Shared Source" within the organization isn’t common practice. Organizational teams aren’t familiar with what code or information should or shouldn’t be placed in shared repositories.
2929

30-
# Forces
30+
## Forces
3131

3232
- A successful InnerSource program needs openness and transparency (e.g. access to code, issues, documentation, and roadmap)
3333
- Good security practice is to minimize access, following the [principle of least privilege][principle-of-least-privilege].
3434
- The Security Team is more familiar with security principles at conceptual level than security practices at operation level. Some of the security policy is good at concept but hard to execute at operation level.
3535
- Engineering Teams focus more on service/product development or knowledge sharing than on measures for data protection. While it is easy for Engineering Teams to decide to close or open the repository, they are usually not willing to spend time on judging how to reach a balance between both. Or to refactor their code in order to be able to share more.
3636
- No one-fit-all guideline or rules to judge what data or process is to be secured or not. That much depends on data sensitivity and overall security policy/infrastructure.
3737

38-
# Solutions
38+
## Solutions
3939

4040
To reduce the misalignment and possible misunderstanding between the teams involved, it is key to bring everybody together so that they can express their goals and concerns, and develop shared language together.
4141

4242
After that they can decide as a group how to drive the execution of the specific goals, and what to do to reduce the risks that were identified.
4343

44-
## Setup
44+
### Setup
4545

4646
Start by bringing (representatives from) Engineering, Security, Legal, and the ISPO together, to discuss the goals of the InnerSource initiative, as well as any security concerns.
4747

@@ -55,13 +55,13 @@ Some helpful practices are:
5555
- **SHARED** - inner source: accessible for all software developers in the organization
5656
- **CLOSED** - closed source: only accessible to named individuals in the organization
5757

58-
## Execution
58+
### Execution
5959

6060
How to allow for a greater amount of SHARED code in the organizations depends a lot on the specific business domain, related regulations, and concerns identified in the initial meetings of the InnerSource task force as mentioned above.
6161

6262
Following are some practices that have proven to be helpful in reducing security concerns and allowing for a greater amount of SHARED code.
6363

64-
### Security Training and SCM Setup
64+
#### Security Training and SCM Setup
6565

6666
- Employee training about security awareness and individual responsibility
6767
- Enhanced security measures or policies on source code management (SCM) system to prevent malicious access to shared repositories and reduce the impact of the same:
@@ -76,12 +76,12 @@ Following are some practices that have proven to be helpful in reducing security
7676
- downloading source code from new devices
7777
- downloading a great amount of source code in the monitoring period.
7878

79-
### Split out the 'secret sauce' into separate repos
79+
#### Split out the 'secret sauce' into separate repos
8080

8181
Separate highly specific, differentiating code (the 'secret sauce') from code that is considered commodity in the organization (e.g. infrastructure, platform, and UI components).
8282
By placing them in separate repositories, you increase your chances of offering the commodity code as SHARED repos, while the 'secret sauce' may stay CLOSED.
8383

84-
### Prevent sensitive information in shared repositories
84+
#### Prevent sensitive information in shared repositories
8585

8686
Build up agreed security requirement of InnerSource, such as:
8787

@@ -92,7 +92,7 @@ Build up agreed security requirement of InnerSource, such as:
9292
- Leverage secrets scanning tools to scan the target repositories (including code, test cases, and helper scripts) for confidential data such as accounts, passwords, access tokens, keys, and other sensitive data.
9393
- Keep repositories CLOSED, but expose metadata about the projects (i.e. through an [InnerSource Portal][innersource-portal]), and create some kind of access request workflow. This way you could still give people access to the code, but not open it to everyone by default. *(Note: The full model is described under **Extension: An Additional Sharing Level**)*
9494

95-
### Extension: An Additional Sharing Level
95+
#### Extension: An Additional Sharing Level
9696

9797
In some cases, introducing additional sharing levels might be appropriate. Use cases include:
9898

@@ -118,7 +118,7 @@ Repositories with RESTRICTED sharing level are included in the [central catalog]
118118
- RESTRICTED repos will likely get fewer contributions due to the additional step to access the code. Where possible, INTERNAL repos should be preferred.
119119
- It is possible to use a tool that automatically adds the `README.md` and some other metadata to an internal repository in GitHub, allowing the GitHub search feature to include this data in the search results.
120120

121-
# Sketch
121+
## Sketch
122122

123123
```
124124
Example Repository Sharing Levels
@@ -137,7 +137,7 @@ Example Repository Sharing Levels
137137
└──────┘
138138
```
139139

140-
# Resulting Context
140+
## Resulting Context
141141

142142
InnerSource adoption in an organization will often [start as an experiment][start-as-an-experiment], with a small number of SHARED repositories.
143143

@@ -149,32 +149,32 @@ With the increased confidence and lessons learned from this experiment, the task
149149

150150
Most importantly, the changes implemented through this pattern lead to more code being shared between teams, and closed source will no longer be the obvious default.
151151

152-
# Known Instances
152+
## Known Instances
153153

154154
* Philips
155155
* Verizon
156156

157-
# Status
157+
## Status
158158

159159
- Initial
160160

161-
# Authors
161+
## Authors
162162

163163
- Bart Golsteijn
164164
- Jack Yang
165165
- Sebastian Spier
166166

167-
# Acknowledgements
167+
## Acknowledgements
168168

169169
- Conley Rogers
170170

171-
# Alias
171+
## Alias
172172

173173
- Secure Discoverability
174174
- Secure Code Sharing
175175
- Secure InnerSource
176176

177-
# Notes (internal)
177+
## Notes (internal)
178178

179179
*These notes are meant for internal use within the InnerSource Commons Patterns Working Group only.*
180180

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Title
1+
## Title
22

33
Code Consumers
44

55
## Patlet
66

77
When a team opens their code for InnerSource reuse, they lose visibility into who is consuming it, making it hard to communicate vulnerabilities, gauge adoption, or retire deprecated components. Lightweight mechanisms such as dependency scanning, voluntary registration, or opt-in mailing lists restore that visibility without adding friction for consumers.
88

9-
# Problem
9+
## Problem
1010

1111
There's several reasons why we might want to know who's using (consuming) our code. We can't do the following:
1212

@@ -16,18 +16,18 @@ There's several reasons why we might want to know who's using (consuming) our co
1616
* encourage others to use a project - by showing how many users there already are
1717
* survey users for feedback
1818

19-
# Context
19+
## Context
2020

2121
This is a general issue that affects potentially all InnerSource (and open source!) projects.
2222
The act of opening code allows people to use it without letting you know.
2323

24-
# Forces
24+
## Forces
2525

2626
* The harder it is to download/integrate the project, the less it will be adopted (forcing people to give information when they use it adds barriers)
2727
* Not all projects may want you to know what they're using (tightly closed source/top secret downstream project)
2828
* Putting in callback/call home routines into projects may introduce distrust in downstream projects and users
2929

30-
# Solutions
30+
## Solutions
3131

3232
The following are potential solutions that have been proposed to this problem:
3333

@@ -37,21 +37,21 @@ The following are potential solutions that have been proposed to this problem:
3737
* Audit code clones/artifact downloads
3838
* Incentivise/Offer users a mailing list/update stream to which they can subscribe
3939

40-
# Resulting Context
40+
## Resulting Context
4141

4242
TBD
4343

44-
# Known Instances
44+
## Known Instances
4545

4646
TBD
4747

48-
# Authors
48+
## Authors
4949

5050
* Georg Grütter (Robert Bosch GmbH)
5151
* Raimund Hook (EXFO Inc)
5252
* Katrina Novakovic (RedHat)
5353

54-
# Status
54+
## Status
5555

5656
* Initial
5757
* Drafted at the 2019 Spring InnerSource Commons Summit in Galway - 10 April 2019

patterns/1-initial/explicit-shared-ownership.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
# Title
1+
## Title
22

33
Explicit Shared Ownership
44

55
## Patlet
66

77
A software component that several teams depend on has grown to the point where owners are no longer capable of taking full ownership. There is confusion who to involve for changes. Sharing ownership explicitly and making expected behavior visible removes ambiguity. Writing a contributions document creates a natural way to evolve ownership.
88

9-
# Problem
9+
## Problem
1010

1111
An organization is already using InnerSource best practices in several teams. The architecture of the software offered has grown organically.
1212

1313
While talking about code ownership and accountability, teams notice that there is a component that is in a worrying state: Developed by an original team of authors it has grown it's userbase way beyond what the original team can handle. From time to time others step up to help out, however there is no formal process established. As a result, conflicts arise around who should do the work, and who should decide on project direction.
1414

1515
Simply forking the component would lead to a lot of duplication and wasted effort. Therefore the involved teams are looking for a less intrusive solution to the issue.
1616

17-
# Context
17+
## Context
1818

1919
- Teams are working independently but are providing one common platform as a service.
2020

2121
- The software they are working on has been evolving for a long time. Engineers working on sub-modules have changed over time.
2222

2323
- One component is in widespread use but ownership is unclear.
2424

25-
# Forces
25+
## Forces
2626

2727
- Ownership of one component is unclear.
2828

@@ -31,13 +31,13 @@ Simply forking the component would lead to a lot of duplication and wasted effor
3131
- There may be people dependent on the module that are not yet known.
3232
There often is fear around maintenance efforts arising from unwanted attribution to the project.
3333

34-
# Solution
34+
## Solution
3535

3636
Use the issue/ pull-request mechanics that work so well for code modifications to modify the way the component is developed:
3737

3838
A volunteer creates an issue in the component's repository highlighting the apparent unclarity or even lack of ownership. Subsequently a volunteer (can be the same person) creates a suggestion for how the project should be developed going forward including a proposed list of initial [Trusted Committers](../2-structured/trusted-committer.md). This suggestion is posted to the project's documentation (e.g. it's `README.md` file) as a pull request. This pull request is left open and shared with all people affected by the change. Feedback can be given and integrated asynchronously. Development of the final state is transparent for everyone.
3939

40-
# Resulting Context
40+
## Resulting Context
4141

4242
There is an initial team of [Trusted Committers](../2-structured/trusted-committer.md) committed to the component.
4343

@@ -47,7 +47,7 @@ The entire decision process backing the result is transparent and can be influen
4747

4848
There is a proven way to adjust the setup in the future.
4949

50-
# Status
50+
## Status
5151

5252
Initial (early draft)
5353

0 commit comments

Comments
 (0)