Skip to content
Merged
Show file tree
Hide file tree
Changes from 40 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
2656ba4
Merge pull request #1 from InnerSourceCommons/master
dterol23 Mar 12, 2021
dd4792e
Title and patlet filled in
dterol23 Mar 12, 2021
680001a
Title changed
dterol23 Mar 19, 2021
3ec654b
Draft content for problem, context and forces
dterol23 Mar 29, 2021
c90ae3c
Initial solution described
dterol23 Mar 30, 2021
3982427
Initial content for resulting context
dterol23 Mar 30, 2021
9ad0f23
Initial content for Rationale section
dterol23 Mar 30, 2021
bd6b2f1
Default guiding text removed
dterol23 Mar 30, 2021
0725837
Optional tags removed
dterol23 Mar 30, 2021
6d94592
Minor content clean up during review before pull request
dterol23 Apr 16, 2021
c0789e2
Add co-author
dterol23 Apr 16, 2021
3778a2a
Mailto link fixed
dterol23 Apr 16, 2021
456563f
Merge remote-tracking branch 'upstream/master' into master
dterol23 Apr 16, 2021
200d5c4
Shorter title
dterol23 Apr 21, 2021
41f6b60
Harmonize use of Organization and Legal Entity terms
dterol23 Apr 21, 2021
f69722a
Harmonize terminology around assessment framework
dterol23 Apr 21, 2021
93f2582
Update patterns/1-initial/source-code-inventory.md
dterol23 Apr 21, 2021
5ea79cd
Markdown linter fix
dterol23 Apr 21, 2021
ef4fc23
Merge branch 'master' of github.com:dterol23/InnerSourcePatterns into…
dterol23 Apr 21, 2021
9e56f8e
Harmonization around open source and innersource terms
dterol23 Apr 21, 2021
fe03725
Clarify scanning tools
dterol23 Apr 21, 2021
a4d0b4a
Patlet reworded to make it stronger and more clear
dterol23 Apr 21, 2021
1c57a76
Mockup snapshots added
dterol23 Apr 21, 2021
a32763c
Add formatted side by side mockups
dterol23 Apr 21, 2021
b54e1c6
References to related patterns added
dterol23 Apr 21, 2021
bb1696a
Acknowledgement added
dterol23 Apr 21, 2021
5c68fb2
Problem section rephreased in prose and questions added
dterol23 Apr 21, 2021
1a285b1
Absolute path used in img links
dterol23 Apr 21, 2021
fcdf80e
Img link moved from markdown to html
dterol23 Apr 21, 2021
f539f30
Move back to mardkwon syntax for imgs
dterol23 Apr 21, 2021
eba1bdf
Merge branch 'master' of github.com:dterol23/InnerSourcePatterns into…
dterol23 Apr 21, 2021
4bde80c
Fix img mardkdown table format
dterol23 Apr 21, 2021
a9f7421
Img extension changed to uppercase to fix links
dterol23 Apr 21, 2021
58d6464
Switching to relative links instead.
spier Apr 21, 2021
3d37be5
Switching to relative links instead.
spier Apr 21, 2021
ae1ffff
Changing to titlecase
spier Apr 21, 2021
585e9ed
Align markdown formatting
spier Apr 21, 2021
a95c162
Fix spell organization-level spelling
dterol23 Apr 22, 2021
be95507
Extend organization spell fix to rest of the file
dterol23 Apr 22, 2021
b9bd29a
Clarify live term to refer live dashboard
dterol23 Apr 22, 2021
849278d
Removing extra bracket
spier Apr 22, 2021
4e651dc
Shortening the link text
spier Apr 22, 2021
f3b3241
Enhance wording of reference to portal pattern
dterol23 Apr 23, 2021
7314e14
Clarification on API for custom extension
dterol23 Apr 23, 2021
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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
109 changes: 109 additions & 0 deletions patterns/1-initial/source-code-inventory.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
## Title

Unified Source Code Inventory

## Patlet

In a large organization with different legal entities is often hard to get full visibility into all software assets, in particular all source code. This situation reduces the opportunities to increase business value and keep liability costs, such as software maintenance, under control across the organization as a whole. An organization-level source code inventory addresses these issues while exploiting opportunities to identify and support valuable InnerSource assets.

## Problem

Given situations when InnerSource stakeholders do not value source code at the same level as other organization's assets; when source code strategies are ad-hoc and different among legal entities with little consolidation at organization-level; then it becomes harder both to select and support the right InnerSource project candidates as well as maximize business value of such a key asset.

Can you get consistent answers within the organization to questions like?

* How would you find all source code touched by anyone in your legal entity?
* How would you find out who else can also access each of the above?
* For new source code, what is your default level of access?
* How would you know nothing is missing from your inventory?
* What valuable insights or actions have you gained from your inventory?

## Context

* You work on Legal Entity within a complex Organization under continuous change (e.g., new acquisitions or changing business priorities).
* You cannot find all source code touched, shared and consumed within the Organization.
* You do not have a clear policy on default sharing level when creating a new project (e.g., Open Source, InnerSource or Closed Source).
* You cannot scan significant parts of the Organization's source code looking for duplication, similarity or code smells.
* You do not know the existing ratios of Open Source, innerSource and Closed Source and their trend.
* You cannot measure the diversity of contributions and resulting value for a given project.
* You cannot identify and optimize tech stack diversity.
* You cannot identify technical debt and determine the priorities for retirement (e.g., dead APIs/source).

## Forces

* Fragmentation of source code hosting systems in the organization.
* Ad-hoc source code strategies scattered across the different Legal Entities in the organization.
* Continuously changing map of the relationships between: projects, repositories, products, tech stacks, domains, solutions, platforms, services, components, sub-systems, people, authors, teams, external repositories.
* Diverse software culture of teams across the organization (e.g., more open to collaboration or more siloed).

## Solutions

### Set up an organization-level source code inventory live dashboard

* Combination of manual and automated input data sources to a single source of truth including an API for custom extension
Copy link
Member

@spier spier Apr 17, 2021

Choose a reason for hiding this comment

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

What do you mean by "including an API for custom extension"?
Maybe this should be a dedicated bullet in the Solution?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

What it means is that together with the backend and frontend implementing the inventory dashboard, there must be a way to add new custom data sources so other teams can merge their inputs. In my experience, fragmentation of hosting can be significant so trying to solve everything from the central team will be challenging. I make it a subbullet for better explanation. Please, review.

* Key meta-data about each repository:
* Legal Entity
* URL
* Version control system (e.g., GIT or SVN).
* Hosting vendor (e.g., GitHub, Gitlab or BitBucket) and hosting type (e.g., on-prem, private cloud or public cloud).
* Sharing level (e.g., Open Source, InnerSource, Closed Source).
* Visualization in place to list all assets with options to filter based on meta-data
* Enable access to automated source code static analysis tools (e.g., identify duplicated or similar code, flag code smells, benchmark test coverage).

Mockup dashboard | Mockup questionnaire
:-------------------------:|:-------------------------:
![Mockup dashboard](../../assets/img/source-code-inventory-mockup-dashboard.PNG) | ![Mockup questionnaire](../../assets/img/source-code-inventory-mockup-questionnaire.PNG)

### Define a Source Code Strategy Assessment Framework

* Help to define a source code strategy including an explicit definition of policies at Organization and Legal Entity levels for:
* Inventory
* Sharing
* Consumption
* Contribution
* Ecosystem
* Example of such a framework: [https://github.com/trieshard/source-strategy-assessment/blob/master/framework.md](https://github.com/trieshard/source-strategy-assessment/blob/master/framework.md)

## Resulting Context

### For the Organization, Legal Entity and Project maintainers

* We have explicit policies at Organization and Legal Entity level on source code strategy (e.g., where to create new repository or how to select the right sharing level).
* We can find all source code touched, shared and consumed within the Organization or Legal Entity and take actions as needed.
* We can measure the diversity of contributions and resulting business value for our project.
* We can identify technical debt and determine the priorities for retirement (e.g., dead APIs/source).

### For InnerSource governance

* We can scan significant parts of our Organization's source code looking for opportunities of reuse, duplication, similarity or code smells.
* We know the ratios of Open Source, InnerSource and Closed Source within the Organization so we can steer as needed.
* We can identify and optimize tech stack diversity.
* We can create awareness and culture shift on certain Legal Entities as needed (e.g., ratio of Open Source and InnerSource below average).

## Rationale

It creates a dynamic and extendable single source of truth for repositories to capture, visualize and act on source code repositories across the Organization. That helps to create awareness and focus efforts on the right direction. The Source Code Strategy Assessment Framework helps teams to understand the value of intentional explicit policies on how to manage source code. It helps to create both continuous improvement cycles and references within the Organization of what others are doing.

## Known Instances

This is under test at scale at:

* Philips

## References

* Organization and Legal Entity terms as defined in [InnerSource License Pattern Glossary](../2-structured/innersource-license.md#glossary))
* Explore aligned deployment of this pattern in combination with the [InnerSource Portal pattern](../2-structured/innersource-portal.md).

## Status

* Initial

## Author(s)

* [David Terol](https://github.com/dterol23)
* [Simao Williams](mailto://me@simaos.net)

## Acknowledgements

* [Sebastian Spier](https://github.com/spier)