Skip to content
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

Generate landing pages for pattern adopters #624

Draft
wants to merge 31 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
0da4547
Add example of an adopters file, to test the relative links and rende…
spier Nov 24, 2023
4beb17a
Fix link
spier Nov 24, 2023
3efc0a9
Add another example (Airbus)
spier Nov 24, 2023
ba11dae
Adding some more examples
spier Nov 24, 2023
18982bf
[WIP] Adding unfinished script
spier Nov 24, 2023
82a93f0
Add minimal explanation to the adopters files
spier Nov 24, 2023
9f6fd59
Small script change
spier Nov 24, 2023
9c100ad
Try overview page that shows all adopters
spier Nov 25, 2023
cc194e5
Format adopters as sub-pages
spier Nov 25, 2023
c983b52
Remove group to simplify URL structure
spier Nov 25, 2023
c770328
Move adopters menu entry to the top
spier Nov 25, 2023
585fd2f
Add newline at end of adopter files
spier Nov 25, 2023
5cc5ac6
Explain how to make changes
spier Nov 25, 2023
245e842
Add contribution information to all files
spier Nov 25, 2023
2a75076
Testing overview page for adopters
spier Nov 25, 2023
21d5441
Add intro text for Adopters section
spier Nov 25, 2023
75c1d52
Cleanup Readme (overview)
spier Nov 25, 2023
569da1d
Remove extra newline at end of adopter files
spier Nov 25, 2023
df5e439
Experiment with cover image
spier Nov 25, 2023
0950850
Try hero image instead
spier Nov 25, 2023
328e970
Move cover image. Add description
spier Nov 25, 2023
e538533
Make the outline invisible
spier Nov 25, 2023
3e5dea5
Fix bug
spier Nov 25, 2023
b9987d0
Move list of all adopters (org names) to a separate file
spier Nov 25, 2023
0ebbc00
Now really make the outline invisible :)
spier Nov 25, 2023
65a2e5f
Sort list of adopters
spier Nov 25, 2023
dc133e1
List all adopters in ToC
spier Nov 25, 2023
0f07fba
Fix broken links
spier Nov 25, 2023
abd7a50
Simplify text
spier Nov 25, 2023
a6012ad
Move adopters further down in the toc (so that patterns are shown first)
spier Nov 28, 2023
b5c81cc
Try empty adopters group
spier Nov 28, 2023
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
3 changes: 3 additions & 0 deletions adopters/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Gemfile.lock
/vendor/
.bundle
7 changes: 7 additions & 0 deletions adopters/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem 'commonmarker'
34 changes: 34 additions & 0 deletions adopters/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
description: The organizations that are using these InnerSource Patterns.
cover: https://todaysveterinarybusiness.com/wp-content/uploads/sites/2/2020/03/Innovation-Station.jpg
coverY: 232
layout:
cover:
visible: true
size: hero
outline:
visible: false
---

# Adopters

Each pattern in this book has been contributed by an organization. That confirms that a single organization is using a given approach.

However the idea of a pattern is that they provide repeatable, proven solution that other organizations can apply in their own context.
Therefore these patterns become more powerful, when multiple organizations confirm that they have implemented a pattern.

This provides a great low-friction way for all readers of this book to contribute!

## Share your pattern adoption

If you see a pattern in this book that you are using at your organization, please do the following:

- on a given pattern page, click the 'Edit on GitHub' button
- add your own organization to the 'Known Instances' section
- then submit your changes as a Pull Request

## Showcase your InnerSource approach

Once the Pull Request with your changes has been merged, you will not only be listed on the pattern itself, but you will also get a dedicated page for your organization, showcasing all the patterns that you are using.

See the pages below for all organization that have confirmed their adoption and implementation of some of our patterns.
27 changes: 27 additions & 0 deletions adopters/adopters.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Airbus
American Airlines
Analog Devices
BBC
BBVA AI Factory
Banco Santander
Bitergia
Bosch
Comcast
DAZN
DB Systel
Elbit Systems
Entelgy
Europace
Flutter Entertainment
GitHub
Google
IBM
Mercado Libre
Mercedes-Benz
Microsoft
Nike
PayPal
SAP
Uber
WellSky
Zylk
13 changes: 13 additions & 0 deletions adopters/airbus.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Airbus

These are the InnerSource Patterns that **Airbus** has adopted:

* [InnerSource License](../patterns/2-structured/innersource-license.md)
* [Repository Activity Score](../patterns/2-structured/repository-activity-score.md)
* [Start as an Experiment](../patterns/2-structured/start-as-experiment.md)
* [Maturity Model](../patterns/2-structured/maturity-model.md)
* [InnerSource Portal](../patterns/2-structured/innersource-portal.md)
* [Dedicated Community Leader](../patterns/2-structured/dedicated-community-leader.md)
* [Standard Base Documentation](../patterns/2-structured/project-setup/base-documentation.md)

If you work at **Airbus** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/american-airlines.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# American Airlines

These are the InnerSource Patterns that **American Airlines** has adopted:

* [InnerSource Portal](../patterns/2-structured/innersource-portal.md)

If you work at **American Airlines** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/analog-devices.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Analog Devices

These are the InnerSource Patterns that **Analog Devices** has adopted:

* [Standard Base Documentation](../patterns/2-structured/project-setup/base-documentation.md)

If you work at **Analog Devices** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/banco-santander.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Banco Santander

These are the InnerSource Patterns that **Banco Santander** has adopted:

* [InnerSource Portal](../patterns/2-structured/innersource-portal.md)

If you work at **Banco Santander** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/bbc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# BBC

These are the InnerSource Patterns that **BBC** has adopted:

* [Transparent Cross-Team Decision Making using RFCs](../patterns/2-structured/transparent-cross-team-decision-making-using-rfcs.md)

If you work at **BBC** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/bbva-ai-factory.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# BBVA AI Factory

These are the InnerSource Patterns that **BBVA AI Factory** has adopted:

* [Core Team](../patterns/2-structured/core-team.md)

If you work at **BBVA AI Factory** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/bitergia.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Bitergia

These are the InnerSource Patterns that **Bitergia** has adopted:

* [Maturity Model](../patterns/2-structured/maturity-model.md)

If you work at **Bitergia** and want to modify the list above, please follow [these instructions](./README.md).
12 changes: 12 additions & 0 deletions adopters/bosch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Bosch

These are the InnerSource Patterns that **Bosch** has adopted:

* [Review Committee](../patterns/2-structured/review-committee.md)
* [Start as an Experiment](../patterns/2-structured/start-as-experiment.md)
* [Document your Guiding Principles](../patterns/2-structured/document-your-guiding-principles.md)
* [Trusted Committer](../patterns/2-structured/trusted-committer.md)
* [Contracted Contributor](../patterns/2-structured/contracted-contributor.md)
* [Dedicated Community Leader](../patterns/2-structured/dedicated-community-leader.md)

If you work at **Bosch** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/comcast.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Comcast

These are the InnerSource Patterns that **Comcast** has adopted:

* [Standard Release Process](../patterns/2-structured/release-process.md)

If you work at **Comcast** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/dazn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# DAZN

These are the InnerSource Patterns that **DAZN** has adopted:

* [Transparent Cross-Team Decision Making using RFCs](../patterns/2-structured/transparent-cross-team-decision-making-using-rfcs.md)

If you work at **DAZN** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/db-systel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# DB Systel

These are the InnerSource Patterns that **DB Systel** has adopted:

* [InnerSource License](../patterns/2-structured/innersource-license.md)

If you work at **DB Systel** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/elbit-systems.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Elbit Systems

These are the InnerSource Patterns that **Elbit Systems** has adopted:

* [InnerSource Portal](../patterns/2-structured/innersource-portal.md)

If you work at **Elbit Systems** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/entelgy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Entelgy

These are the InnerSource Patterns that **Entelgy** has adopted:

* [Maturity Model](../patterns/2-structured/maturity-model.md)

If you work at **Entelgy** and want to modify the list above, please follow [these instructions](./README.md).
12 changes: 12 additions & 0 deletions adopters/europace.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Europace

These are the InnerSource Patterns that **Europace** has adopted:

* [Transparent Cross-Team Decision Making using RFCs](../patterns/2-structured/transparent-cross-team-decision-making-using-rfcs.md)
* [Document your Guiding Principles](../patterns/2-structured/document-your-guiding-principles.md)
* [Service vs. Library](../patterns/2-structured/service-vs-library.md)
* [Standard Base Documentation](../patterns/2-structured/project-setup/base-documentation.md)
* [Communication Tooling](../patterns/2-structured/project-setup/communication-tooling.md)
* [Issue Tracker Use Cases](../patterns/2-structured/project-setup/issue-tracker.md)

If you work at **Europace** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/flutter-entertainment.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Flutter Entertainment

These are the InnerSource Patterns that **Flutter Entertainment** has adopted:

* [Service vs. Library](../patterns/2-structured/service-vs-library.md)

If you work at **Flutter Entertainment** and want to modify the list above, please follow [these instructions](./README.md).
131 changes: 131 additions & 0 deletions adopters/generate_adopters.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
require 'rubygems'
require 'bundler/setup'
Bundler.require(:default)

require 'pp'

def collect_section_nodes(file, section_title)
markdown = open(file).readlines().join
doc = CommonMarker.render_doc(markdown)

title_found = false
section_nodes = []

doc.walk do |node|
if node.type == :header
if title_found == false
node.each do |subnode|
if subnode.type == :text and subnode.string_content == section_title
title_found = true
end
end
# stop the recursion once the next header is reached
# TODO: is this correct, or should we check if this is another `##` header, rather than any header?
else
break
end
# once the title has been found, collect all nodes up to the next header
elsif title_found == true
section_nodes << node
end
end

return section_nodes
end

# Extracts the value of a specific section from a markdown file
def extract_section(file, section_title)
markdown = open(file).readlines().join
doc = CommonMarker.render_doc(markdown)

title_found = false
section_nodes = []

# once the header in question is found, extract all the text nodes from the
# subsequent paragaph
doc.walk do |node|
if node.type == :header
node.each do |subnode|
if subnode.type == :text and subnode.string_content == section_title
title_found = true
end
end
elsif node.type == :paragraph && title_found == true
node.each do |subnode|
section_nodes += extract_text(subnode)
end
break # stop the recursion once the paragraph has been processed
end
end

section_content = section_nodes.join("")
return section_content
end

# extracts the pure text content from this CommonMarker node, and its children.
# returns an array of strings
def extract_text(node)
section_nodes = []
if node.type == :softbreak
section_nodes << " "
elsif node.type == :text or node.type == :code
section_nodes << node.string_content
else
node.each do |subnode|
section_nodes += extract_text(subnode)
end
end
return section_nodes
end

def generate_markdown_filename(org_name)
markdown_filename = org_name.downcase.tr(" ", "-").gsub(/[^\w.-]/, "")
markdown_filename = "#{markdown_filename}.md"
return markdown_filename
end

PATTERNS = Dir["../patterns/2-structured/*.md","../patterns/2-structured/project-setup/*.md", "../patterns/3-validated/*.md"]
ORGS = File.readlines('adopters.txt').map(&:chomp)

adopter_patterns = Hash.new()
pattern_titles = Hash.new()

# init with empty lists
ORGS.each do |org|
adopter_patterns[org] = []
end

PATTERNS.each do |file|
title = extract_section(file, "Title")
pattern_titles[file] = title

known_instances = collect_section_nodes(file, "Known Instances")
known_instances = known_instances.map{|n| extract_text(n)}.join(" ")

ORGS.each do |org|
if known_instances.include? org
adopter_patterns[org] << file
end
end
end

adopter_patterns.each do |org, patterns_files|
markdown_filename = generate_markdown_filename(org)

file_content = "# #{org}\n\n"
file_content += "These are the InnerSource Patterns that **#{org}** has adopted:\n\n"
file_content += patterns_files.map{|f| "* [#{pattern_titles[f]}](#{f})"}.join("\n")
file_content += "\n\n"
file_content += "If you work at **#{org}** and want to modify the list above, please follow [these instructions](./README.md).\n"

File.write(markdown_filename, file_content)

# print in format required for inclusion in the ToC
puts "* [#{org}](../../adopters/#{markdown_filename})"
end

# pp adopter_patterns

# puts adopter_patterns.map{|patterns| patterns.count}.reduce(&:+)


11 changes: 11 additions & 0 deletions adopters/github.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# GitHub

These are the InnerSource Patterns that **GitHub** has adopted:

* [30 Day Warranty](../patterns/2-structured/30-day-warranty.md)
* [Transparent Cross-Team Decision Making using RFCs](../patterns/2-structured/transparent-cross-team-decision-making-using-rfcs.md)
* [Standard Release Process](../patterns/2-structured/release-process.md)
* [Document your Guiding Principles](../patterns/2-structured/document-your-guiding-principles.md)
* [InnerSource Portal](../patterns/2-structured/innersource-portal.md)

If you work at **GitHub** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/google.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Google

These are the InnerSource Patterns that **Google** has adopted:

* [Transparent Cross-Team Decision Making using RFCs](../patterns/2-structured/transparent-cross-team-decision-making-using-rfcs.md)

If you work at **Google** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/ibm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# IBM

These are the InnerSource Patterns that **IBM** has adopted:

* [Extensions for Sustainable Growth](../patterns/2-structured/extensions-for-sustainable-growth.md)

If you work at **IBM** and want to modify the list above, please follow [these instructions](./README.md).
10 changes: 10 additions & 0 deletions adopters/mercado-libre.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Mercado Libre

These are the InnerSource Patterns that **Mercado Libre** has adopted:

* [Trusted Committer](../patterns/2-structured/trusted-committer.md)
* [InnerSource Portal](../patterns/2-structured/innersource-portal.md)
* [Standard Base Documentation](../patterns/2-structured/project-setup/base-documentation.md)
* [Communication Tooling](../patterns/2-structured/project-setup/communication-tooling.md)

If you work at **Mercado Libre** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/mercedes-benz.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Mercedes-Benz

These are the InnerSource Patterns that **Mercedes-Benz** has adopted:

* [InnerSource Portal](../patterns/2-structured/innersource-portal.md)

If you work at **Mercedes-Benz** and want to modify the list above, please follow [these instructions](./README.md).
7 changes: 7 additions & 0 deletions adopters/microsoft.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Microsoft

These are the InnerSource Patterns that **Microsoft** has adopted:

* [30 Day Warranty](../patterns/2-structured/30-day-warranty.md)

If you work at **Microsoft** and want to modify the list above, please follow [these instructions](./README.md).
Loading