diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 31b823e78..64c007274 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,7 +1,7 @@
blank_issues_enabled: true
contact_links:
- name: Slack
- url: https://innersourcecommons-inviter.herokuapp.com
+ url: https://innersourcecommons.org/slack
about: Join our Community on Slack for help and a casual chat.
- name: Patterns Book
url: https://patterns.innersourcecommons.org
diff --git a/.github/config.yml b/.github/config.yml
new file mode 100644
index 000000000..bac200892
--- /dev/null
+++ b/.github/config.yml
@@ -0,0 +1,44 @@
+# Configuration for welcome - https://github.com/behaviorbot/welcome
+
+# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome
+
+# Comment to be posted to on first time issues
+newIssueWelcomeComment: >
+ [![Welcome Banner](https://zenodo.org/api/iiif/v2/0c0188d3-d03c-4830-a6e3-00405f5c22fa:8ff47a85-7250-4d86-8e48-2f346b48b2c1:BannerWelcome.jpg/full/750,/0/default.jpg)](https://zenodo.org/record/3695300)
+
+ :tada: Welcome to _The InnerSource Commons_ community, and in particular to our patterns! :tada:
+ We're really excited to have your input into the project! :sparkling_heart:
+
+
If you haven't done so already, please check out our [Contributing Guidelines](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/CONTRIBUTING.md).
+ If you need to connect more synchronously with members of _The InnerSource Commons_ community, come chat with us in our [Slack workspace](https://innersourcecommons.org/slack).
+
+# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
+
+# Comment to be posted to on PRs from first time contributors in your repository
+newPRWelcomeComment: >
+ [![Thank You Banner](https://zenodo.org/api/iiif/v2/0c0188d3-d03c-4830-a6e3-00405f5c22fa:7fbd97cf-283b-480c-b8e1-11866e26245c:BannerThanks.jpg/full/750,/0/default.jpg)](https://zenodo.org/record/3695300)
+
+ :sparkling_heart: Thanks for opening this pull request! :sparkling_heart:
+ _The InnerSource Commons_ community really appreciates your time and effort to contribute to the project.
+ Please make sure you have read our [Contributing Guidelines](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/CONTRIBUTING.md).
+
+ If you are submitting a new pattern, the following things will help get your pull request across the finish line! :checkered_flag:
+
+ - Check you have used our [pattern template](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/meta/pattern-template.md) and removed any placeholder text and sections that your pattern did not need.
+
+ - We will run a number of automated checks on your PR. Please review the output of those checks on the PR itself, and see if any issues got flagged that you can fix yourself.
+
+ - Make sure you have added your new pattern to the list of patterns in the main [README.md](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/README.md). If you are unsure where to add your pattern, no worries. Just let us know on the PR and we will help you.
+
+
This project has a small number of maintainers, volunteering their time to this project. So please be patient and we will get back to you as soon as we can.
+ If we don't acknowledge this pull request after 7 days, feel free to chat to us about it in our [Slack workspace](https://innersourcecommons.org/slack).
+
+# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge
+
+# Comment to be posted to on pull requests merged by a first time user
+firstPRMergeComment: >
+ [![Congratulations Banner](https://zenodo.org/api/iiif/v2/0c0188d3-d03c-4830-a6e3-00405f5c22fa:32fbdb89-ae1b-434e-830c-88ade86724cc:BannerCongratulations.jpg/full/750,/0/default.jpg)](https://zenodo.org/record/3695300)
+
+ Congrats on merging your first pull request! :tada:
+ We here at _The InnerSource Commons_ are proud of you! :sparkling_heart:
+ Thank you so much for your contribution :gift:
diff --git a/lint/pattern-template.js b/.github/lint-pattern-syntax/pattern-template.js
similarity index 100%
rename from lint/pattern-template.js
rename to .github/lint-pattern-syntax/pattern-template.js
diff --git a/lint/pattern-template.yml b/.github/lint-pattern-syntax/pattern-template.yml
similarity index 100%
rename from lint/pattern-template.yml
rename to .github/lint-pattern-syntax/pattern-template.yml
diff --git a/.github/vale/Vocab/Base/accept.txt b/.github/vale/Vocab/Base/accept.txt
new file mode 100644
index 000000000..799a7d044
--- /dev/null
+++ b/.github/vale/Vocab/Base/accept.txt
@@ -0,0 +1,6 @@
+Manoj
+Gawande
+Dinesh
+Ramadoss
+Amit
+Chauhan
\ No newline at end of file
diff --git a/.github/vale/Vocab/Base/reject.txt b/.github/vale/Vocab/Base/reject.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/.github/workflows/i18n-consistency-checker.yaml b/.github/workflows/i18n-consistency-checker.yaml
new file mode 100644
index 000000000..2f173fada
--- /dev/null
+++ b/.github/workflows/i18n-consistency-checker.yaml
@@ -0,0 +1,104 @@
+name: i18n check consistency and notify on GitHub Issues
+
+on:
+ pull_request:
+ branches:
+ - master
+ paths:
+ - .github/workflows/i18n-consistency-check.yml
+ schedule:
+ - cron: '0 0 1 * *'
+ workflow_dispatch:
+
+jobs:
+ consistency-check:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ language: [ja, zh]
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: '0'
+ - name: Check consistency
+ id: check-consistency
+ run: |
+ # Set the issue header
+ issue="\
+ # i18n Contents Consistency Issue\\n\
+ \\n\
+ The following files may have consistency issues with the English version. Please check and update the files.\\n\
+ \\n\
+ This issue is created when there is an update to content/en. It compares the git update history to let you know what updates are overdue. The issue should be closed when the update is complete.\\n"
+
+ for file in $(find patterns/2-structured -name '*.md'); do
+
+ # Get the translated file name and check if it exists
+ i18n_filename=$(echo "$file" | sed 's/patterns\/2-structured/translation\/${{matrix.language}}\/patterns/g')
+ if [[ ! -e "$i18n_filename" ]]; then
+ continue
+ fi
+ echo $file
+ echo $i18n_filename
+ # Loop through all the files in the English directory
+ # Get the last updated date of the original file and the translated file
+ original_updated_at=$(date -d "$(git log -1 --format=%cd --date=iso $file)" +%s)
+ i18n_content_updated_at=$(date -d "$(git log -1 --format=%cd --date=iso $i18n_filename)" +%s)
+
+ # print the last updated date of the original file and the translated file
+
+ # Check if the translated file is updated after the original file
+ if [[ $(($original_updated_at - $i18n_content_updated_at)) -ge 1 ]]; then
+ # Get the title of the content
+ content_header=$(echo "$(cat "$file")" | grep -E '^title+' | sort -r | head -n1)
+ content_title=$(echo "$content_header" | sed 's/title: //g')
+
+ # Get the days since the translated file is overdue
+ days_since_overdue_updates=$(($(( $(date +%s) - $original_updated_at))/ 60 / 60 / 24))
+ # Get the diff between the original file and the translated file
+ original_last_update_hash=$(git log -1 --format=%H $file)
+ # Get the parent hash of the original last update hash
+ parent_hash=$(git log -1 --format=%P $original_last_update_hash)
+ # Get the diff between the original file and the translated file
+
+ result=$(echo "$(git diff ${parent_hash} HEAD $file)" | sed '1,4 s/^/# /')
+ echo -e "$result"
+
+ # Add the contents to the issue.md file
+ issue+="$content_title ($file)
\\n\\n"
+ issue+="- Original File(en): [$file](https://github.com/$GITHUB_REPOSITORY/blob/master/$file)\\n"
+ issue+="- Translated File(${{matrix.language}}): [$i18n_filename](https://github.com/$GITHUB_REPOSITORY/blob/master/$i18n_filename)\\n"
+ issue+="- [Diff on GitHub](https://github.com/yuhattor/innersourcecommons.org/compare/$i18n_last_update_hash...$original_last_update_hash)\\n"
+ issue+="- Days since overdue updates: $days_since_overdue_updates days\\n"
+ issue+="\`\`\`diff\\n"
+ issue+="$result"
+ issue+="\\n\`\`\`\\n"
+ issue+=" \\n"
+ echo -e "$issue" >> issue.md
+ issue=""
+ fi
+ done
+ - name: Create Issue
+ run: |
+ # Declare the flags
+ declare -A flags=(
+ ["ja"]="🇯🇵 Japanese"
+ ["zh"]="🇨🇳 Chinese"
+ )
+
+ # Set the issue title
+ issue_title="${flags[${{matrix.language}}]}: Content Consistency Issue"
+
+ # Get the existing issue ID
+ existing_issue_id=$(gh issue list -S "state:open type:issue title:$issue_title" | cut -f1)
+
+ # If the issue.md file exists, create a new issue or comment on the existing issue
+ if [ -f issue.md ]; then
+ if expr "$existing_issue_id" : '^[0-9]*$' >/dev/null; then
+ gh issue comment "$existing_issue_id" -F issue.md -R $GITHUB_REPOSITORY
+ else
+ gh issue create -t "$issue_title" -F issue.md -R $GITHUB_REPOSITORY -l "Type - Translation"
+ fi
+ fi
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/lint-patterns.yml b/.github/workflows/lint-patterns.yml
index a2bb125ec..408619ea7 100644
--- a/.github/workflows/lint-patterns.yml
+++ b/.github/workflows/lint-patterns.yml
@@ -1,4 +1,6 @@
# from: https://github.com/marketplace/actions/markdown-linting-action
+# To test this locally, switch to the root of the repo and run:
+# markdownlint -r config/lint/pattern-template.js -c config/lint/pattern-template.yml patterns/2-structured/*.md patterns/2-structured/project-setup/*.md patterns/3-validated/*.md
name: Pattern Syntax Validation
on:
@@ -8,7 +10,7 @@ on:
pull_request:
paths:
- ".github/workflows/lint-patterns.yml"
- - "lint/*"
+ - ".github/lint-pattern-syntax/*"
- "patterns/2-structured/*.md"
- "patterns/2-structured/project-setup/*.md"
- "patterns/3-validated/*.md"
@@ -23,6 +25,6 @@ jobs:
- name: Lint pattern files (markdown)
uses: avto-dev/markdown-lint@v1
with:
- rules: './lint/pattern-template.js'
- config: './lint/pattern-template.yml'
+ rules: './.github/lint-pattern-syntax/pattern-template.js'
+ config: './.github/lint-pattern-syntax/pattern-template.yml'
args: 'patterns/2-structured/*.md patterns/2-structured/project-setup/*.md patterns/3-validated/*.md'
diff --git a/.github/workflows/vale.yml b/.github/workflows/vale.yml
new file mode 100644
index 000000000..870c1097f
--- /dev/null
+++ b/.github/workflows/vale.yml
@@ -0,0 +1,26 @@
+name: Spelling & Styles
+
+on:
+ push:
+ branches:
+ - main
+ paths:
+ - '**.md'
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ vale:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Vale Linting
+ uses: errata-ai/vale-action@reviewdog
+ with:
+ files: '["patterns/2-structured/", "patterns/3-validated/"]'
+ vale_flags: "--glob=*.md"
+ filter_mode: added
+ debug: true
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..3f936ba7d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+# We want to ignore our vale StylesPath
+.github/vale/*
diff --git a/.lycheeignore b/.lycheeignore
index 33c6a3f7f..473a94f74 100644
--- a/.lycheeignore
+++ b/.lycheeignore
@@ -4,8 +4,9 @@ https://example.com/link/to/your/trusted/committer/documentation.md
https://github.com/rcs/rcs-viewer/pull/81
http://creativecommons.org/licenses
https://isc-inviter.herokuapp.com
+https://innersourcecommons-inviter.herokuapp.com
fearlesschangepatterns.com
https://ulir.ul.ie/bitstream/handle/10344/4443/Stol_2014_inner.pdf
.*@andrew.clegg.*
https://m.dotdev.co/how-to-write-a-readme-that-rocks-bc29f279611a
-https://innersourcecommons-inviter.herokuapp.com
+https://www.chathamhouse.org/about-us/chatham-house-rule
\ No newline at end of file
diff --git a/.vale.ini b/.vale.ini
new file mode 100644
index 000000000..142bd22dd
--- /dev/null
+++ b/.vale.ini
@@ -0,0 +1,12 @@
+StylesPath = .github/vale
+MinAlertLevel = suggestion
+
+Packages = https://github.com/InnerSourceCommons/isc-styles/releases/latest/download/ISC.zip
+
+Vocab = Base
+
+[*]
+BasedOnStyles = ISC
+
+; If you **don't** want to check for the correct spelling of "InnerSource", comment this in
+; ISC.InnerSource = NO
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3fdfbefef..8d58bb70e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -29,7 +29,7 @@ We are happy to support you in contributing to the InnerSource patterns or to ju
You can best reach out to us **via Slack**:
-Join the InnerSource Commons [Slack instance](https://isc-inviter.herokuapp.com/) and enter the `#innersource-patterns` channel there.
+Join the InnerSource Commons [Slack instance](https://innersourcecommons.org/slack) and enter the `#innersource-patterns` channel there.
## License of Contributions
diff --git a/README.md b/README.md
index df64936f4..5dece7439 100644
--- a/README.md
+++ b/README.md
@@ -57,6 +57,7 @@ Our mission
* [Core Team](patterns/2-structured/core-team.md) - *Even when an InnerSource project is widely needed, contributions and usage may be hindered because the project is difficult to work with. Establish a core team that is dedicated to take care of the project's fundamental items. Their work enables contributors to add and use the features that provide value to their scenarios.*
* [Document your Guiding Principles](patterns/2-structured/document-your-guiding-principles.md) - *The usual InnerSource explanation of "applying open source best practices inside an organisation" does not work well with people lacking an open source background. As a remedy the most important principles of InnerSource get documented and published widely.*
* [Extensions for Sustainable Growth](/patterns/2-structured/extensions-for-sustainable-growth.md) - *An InnerSource project is receiving too many contributions, making maintenance difficult. By offering an extension mechanism outside of the core project, the maintainers enable scaling of project capabilities with minimal cost and maintenance overhead.*
+* [Standard Release Process](patterns/2-structured/release-process.md) - *Teams may hesitate to adopt an InnerSource project if they are unsure of its maturity. To address this, consistent release notes and published artifacts are crucial. These practices showcase a strong dedication to the project, instilling confidence and assuring users of ongoing commitment to sustainable and well-managed software.*
* [Group Support](patterns/2-structured/group-support.md) - *What happens if a team or individual no longer supports an InnerSource project? Keep the project alive by forming a group of interested individuals.*
### Maturity Level 1: Initial
@@ -66,7 +67,7 @@ Our mission
* [Overcoming Project Management Time Pressures](patterns/1-initial/overcoming-project-management-time-pressures.md) - *Project management believes timeline pressure and commitments on feature content does not allow for developers to spend the time needed to develop shareable code and provide support.*
* [Introducing Metrics in InnerSource](patterns/1-initial/introducing-metrics-in-innersource.md) - *Involve all stakeholders in designing and interpreting metrics to measure the current status in terms of health and performance of the InnerSource initiative.*
* [Shared Code Repo Different from Build Repo](patterns/1-initial/shared-code-repo-different-from-build-repo.md) - *Deal with the overhead of having shared code in a separate repository that isn't the same as the project-specific one that is tied to production builds.*
-* [InnerSource Portal - Hygiene](patterns/1-initial/innersource-portal-hygiene.md) - *Allow generation of an official badge for projects intending to be recognised as InnerSource project within your company.*
+* [InnerSource Portal - Hygiene](patterns/1-initial/innersource-portal-hygiene.md) - *Allow generation of an official badge for projects intending to be recognized as InnerSource project within your company.*
* [Reluctance to Receive Contributions](patterns/1-initial/reluctance-to-accept-contributions.md) - *Core owner of shared asset is reluctant to take contributions due to the required maintenance that comes with them. Summary pattern that lays out four children patterns with three to be defined.*
* [Include Product Owners](patterns/1-initial/include-product-owners.md) - *Engaging and educating Product Owners about InnerSource can help them modify their actions (e.g., in the space of KPIs) to help InnerSource collaboration work better.*
* [Assisted Compliance](patterns/1-initial/assisted_compliance.md) - *Helping repo owners be compliant by writing their CONTRIBUTING.md for them as a pull request.*
@@ -74,10 +75,9 @@ Our mission
* [Transparent Governance Levels](patterns/1-initial/governance-levels.md) - *There are projects in multiple stages of InnerSource adoption. Contributors get confused when working with projects that are at different stages.*
* [Contained InnerSource](patterns/1-initial/contained-innersource.md) - *Apply InnerSource methods to facilitate collaboration in a cross-divisional project but don't invest in soliciting contributions from outside of that project.*
* [Good First Project](patterns/1-initial/good-first-project.md) - *An InnerSource program has been launched at an organization, and to get off to a successful start it requires some good first projects that lend themselves to InnerSource-style development. Assessing the InnerSource-readiness (fitness) of the candidate projects can help in selecting projects that have the potential to help demonstrate the power of InnerSource.*
-* [InnerSource Guidance Group](patterns/1-initial/innersource-guidance-group.md) - *A highly divergent set of development standards in different teams can slow down collaboration betweens these teams. A InnerSource Guidance Group that establishes broad governance and behavioral guidelines can help to reduce these frictions.*
+* [InnerSource Guidance Group](patterns/1-initial/innersource-guidance-group.md) - *A highly divergent set of development standards in different teams can slow down collaboration between these teams. A InnerSource Guidance Group that establishes broad governance and behavioral guidelines can help to reduce these frictions.*
* [Unified Source Code Inventory](patterns/1-initial/source-code-inventory.md) - *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.*
-* [Explicit Shared Ownership](patterns/1-initial/explicit-shared-ownership.md) - *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 behaviour visible removes ambiguity. Writing a contributions document creates a natural way to evolve ownership.*
-* [Standarized Release Process](patterns/1-initial/release-process.md) - *Teams may be reluctant to use InnerSource projects that they are unfamiliar with when there is no clear release process apparent in the repository. Providing clear release notes and a published artifact (binary, docker image, jar, etc) gives people confidence you are publishing a quality product.*
+* [Explicit Shared Ownership](patterns/1-initial/explicit-shared-ownership.md) - *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.*
* [Overcoming the Not-Invented-Here Mindset](/patterns/1-initial/not-invented-here.md) - *Perfectly good solutions are being rejected because of "Not Invented Here" (NIH). Engineers and their managers will choose to implement functionality themselves first, even if an alternative exists. A shift towards a culture of "Proudly Found Elsewhere" can help reduce the negative impact of NIH.*
* [Balancing Openness and Security](/patterns/1-initial/balancing-openness-and-security.md) - *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. 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.*
* [Crossing the InnerSource Chasm](/patterns/1-initial/crossing-chasm.md) - *Early InnerSource experiments have been successful. Methods that were successful convincing early teams stop working though when scaling the initiative. This chasm can be crossed by using different methods to reach people at different stages of the innovation curve.*
diff --git a/book/en/toc.md b/book/en/toc.md
index 94183385e..6a0999c44 100644
--- a/book/en/toc.md
+++ b/book/en/toc.md
@@ -26,7 +26,7 @@ Instead edit toc_template.md
* [Core Team](../../patterns/2-structured/core-team.md) - Even when an InnerSource project is widely needed, contributions and usage may be hindered because the project is difficult to work with. Establish a core team that is dedicated to take care of the project's fundamental items. Their work enables contributors to add and use the features that provide value to their scenarios.
* [Cross-Team Project Valuation](../../patterns/2-structured/crossteam-project-valuation.md) - It's hard to sell the value of cross-team InnerSource projects that don't provide a direct impact on company revenue. Here's a data-driven way to represent your project that both articulates its value and amplifies it.
* [Dedicated Community Leader](../../patterns/2-structured/dedicated-community-leader.md) - Select people with both communications and technical skills to lead the communities to ensure success in starting an InnerSource initiative.
-* [Document your Guiding Principles](../../patterns/2-structured/document-your-guiding-principles.md) - The usual InnerSource explanation of "applying open source best practices inside an organisation" does not work well with people lacking an open source background. As a remedy the most important principles of InnerSource get documented and published widely.
+* [Document your Guiding Principles](../../patterns/2-structured/document-your-guiding-principles.md) - The usual InnerSource explanation of "applying open source best practices inside an organization" does not work well with people lacking an open source background. As a remedy the most important principles of InnerSource get documented and published widely.
* [Extensions for Sustainable Growth](../../patterns/2-structured/extensions-for-sustainable-growth.md) - An InnerSource project is receiving too many contributions, making maintenance difficult. By offering an extension mechanism outside of the core project, the maintainers enable scaling of project capabilities with minimal cost and maintenance overhead.
* [Gig Marketplace](../../patterns/2-structured/gig-marketplace.md) - Establish a marketplace by creating an intranet website that lists specific InnerSource project needs as "Gigs" with explicit time and skill requirements. This will enable managers to better understand their employee’s time commitment and professional benefits thereby increasing the likelihood of garnering approval to make InnerSource contributions.
* [Group Support](../../patterns/2-structured/group-support.md) - What happens if a team or individual no longer supports an InnerSource project? Keep the project alive by forming a group of interested individuals.
@@ -36,9 +36,10 @@ Instead edit toc_template.md
* [Maturity Model](../../patterns/2-structured/maturity-model.md) - Teams have started adopting InnerSource. The practice is spreading to multiple departments. However, the understanding of what constitutes an InnerSource project varies. The solution is to provide a maturity model to allow for teams to go through a self check and discover patterns and practices that they are not yet aware of.
* [Praise Participants](../../patterns/2-structured/praise-participants.md) - After an inner source contribution, it's important to thank the contributor for their time and effort. This pattern gives guidance that not only effectively acknowledges the contribution but also engenders further engagement from the contributor and others.
* [Repository Activity Score](../../patterns/2-structured/repository-activity-score.md) - Potential contributors want to find active InnerSource projects in need of their help. By calculating a repository activity score for each project, a ranked list of projects can be created (e.g. on the InnerSource Portal), so that potential contributors can more easily determine which project they want to contribute to.
-* [Review Committee](../../patterns/2-structured/review-committee.md) - The InnerSource working model is a radical departure from more traditional approaches, for developers and managers alike. By establishing a review committee as an interface between the InnerSource initiative and all senior managers of business units participating in it, the latter are more likely to familiarise themselves with the initiative and support it, as it affords them a certain level of oversight and control without fostering micromanagement.
+* [Review Committee](../../patterns/2-structured/review-committee.md) - The InnerSource working model is a radical departure from more traditional approaches, for developers and managers alike. By establishing a review committee as an interface between the InnerSource initiative and all senior managers of business units participating in it, the latter are more likely to familiarize themselves with the initiative and support it, as it affords them a certain level of oversight and control without fostering micromanagement.
* [Service vs. Library](../../patterns/2-structured/service-vs-library.md) - Teams in a DevOps environment may be reluctant to work across team boundaries on common code bases due to ambiguity over who will be responsible for responding to service downtime. The solution is to realize that often it's possible to either deploy the same service in independent environments with separate escalation chains in the event of service downtime or factor a lot of shared code out into one library and collaborate on that.
* [Standard Base Documentation](../../patterns/2-structured/project-setup/base-documentation.md) - New contributors to an InnerSource project have a hard time figuring out who maintains the project, what to work on, and how to contribute. Providing documentation in standard files like README.md/CONTRIBUTING.md enables a self service process for new contributors, so that they can find the answers to the most common questions on their own.
+* [Standard Release Process](../../patterns/2-structured/release-process.md) - Teams may hesitate to adopt an InnerSource project if they are unsure of its maturity. To address this, consistent release notes and published artifacts are crucial. These practices showcase a strong dedication to the project, instilling confidence and assuring users of ongoing commitment to sustainable and well-managed software.
* [Start as an Experiment](../../patterns/2-structured/start-as-experiment.md) - Start your InnerSource initiative as a time limited experiment to make it easier for managers unfamiliar with InnerSource to endorse and support the initiative.
* [Transparent Cross-Team Decision Making using RFCs](../../patterns/2-structured/transparent-cross-team-decision-making-using-rfcs.md) - InnerSource projects that want to achieve high participation rates and make the best possible decisions for everybody involved need to find ways to create participatory systems throughout the full software lifecycle. Publishing internal Requests for Comments (RFCs) documents allows for discussions early on in the design process, and increases the chances to build solutions with a high degree of commitment from all involved parties.
* [Trusted Committer](../../patterns/2-structured/trusted-committer.md) - Many InnerSource projects will find themselves in a situation where they consistently receive feedback, features, and bug-fixes from contributors. In these situations, project maintainers seek ways to recognize and reward the work of the contributor above and beyond single contributions.
diff --git a/meta/FAQ.md b/meta/FAQ.md
index 9e39ab137..084afc5b4 100644
--- a/meta/FAQ.md
+++ b/meta/FAQ.md
@@ -17,5 +17,5 @@ This is a list of frequently asked questions about InnerSource Patterns.
## I'd like to consult with the InnerSource Patterns community; do I need to have participating members sign NDAs?
-* The vast majority of InnerSource Patterns meetings and all conversations in the InnerSource Commons [Slack](https://isc-inviter.herokuapp.com/) are held under the [Chatham House Rule](https://www.chathamhouse.org/chatham-house-rule) that should provide sufficient protection to enable a productive discussion.
+* The vast majority of InnerSource Patterns meetings and all conversations in the InnerSource Commons [Slack](https://innersourcecommons.org/slack) are held under the [Chatham House Rule](https://www.chathamhouse.org/about-us/chatham-house-rule) that should provide sufficient protection to enable a productive discussion.
* To answer the question directly: No, you don't have to get NDAs signed :)
diff --git a/meta/README.md b/meta/README.md
index f2e801aef..f478310dd 100644
--- a/meta/README.md
+++ b/meta/README.md
@@ -12,6 +12,7 @@ The topics below cover information about how we define, operate, and upkeep this
* [Style Guide](./pattern-style-guide.md) - Recommended conventions to use when writing patterns
* [Glossary](./glossary.md) - Defines essential terms that are commonly used when writing new patterns.
* [Board Reports](./boardreports) - The Patterns Working Group submits a report to the Board of the InnerSource Commons Foundation on a quarterly basis. This folder contains all reports that the Patterns Working Group has created.
+* [Scripts](./scripts) - Scripts that help us with the maintenance of our patterns.
## Unfinished documentation
diff --git a/meta/boardreports/2023-02.md b/meta/boardreports/2023-02.md
index d9945fd74..b5deb781f 100644
--- a/meta/boardreports/2023-02.md
+++ b/meta/boardreports/2023-02.md
@@ -2,7 +2,7 @@
## Meta
-* Reporting Period: November 1st, 2022 - January 31st, 2022
+* Reporting Period: November 1st, 2022 - January 31st, 2023
* [merged PRs](https://github.com/InnerSourceCommons/InnerSourcePatterns/pulls?q=is%3Apr+closed%3A2022-11-01..2023-01-31+is%3Amerged)
* [opened issues](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues?q=is%3Aissue+created%3A2022-11-01..2023-01-31+is%3Aopen)
diff --git a/meta/boardreports/2023-05.md b/meta/boardreports/2023-05.md
new file mode 100644
index 000000000..74b7db5d1
--- /dev/null
+++ b/meta/boardreports/2023-05.md
@@ -0,0 +1,109 @@
+# InnerSource Patterns WG - Report for Board Meeting 2023-05
+
+## Meta
+
+* Reporting Period: 2023-02..2023-04
+* [merged PRs](https://github.com/InnerSourceCommons/InnerSourcePatterns/pulls?q=is%3Apr+closed%3A2023-02..2023-04+is%3Amerged)
+* [opened issues](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues?q=is%3Aissue+created%3A2023-02..2023-04+is%3Aopen)
+
+## Engagement
+
+The [patterns book] is the way InnerSource practices are captured and shared. Recent web analytics:
+
+* stable traffic on the patterns book (tracking_id: `G-QL1S8MW5D9`)
+ * 18,361 views total (previous report was 12,143 page)
+ * that is 50% more traffic, so quite significant!
+ * not sure where the increase in traffic comes from (didn't have time for a deep-dive)
+* Most popular patterns:
+ * Core Team
+ * 30 Day Warranty
+ * InnerSource Portal
+ * Common Requirements
+ * Maturity Model
+* traffic for translations:
+ * Japanese - 979 views total (somewhat continuous traffic but with spikes - probably around events of the Japanese community)
+ * Chinese - 545 views total (most traffic around the time when the book was released at end of 2023/01)
+
+## Changes
+
+Changes are contributed via the [InnerSourcePatterns] repository:
+
+* new visual and other improvements for the [Communication Tooling](https://patterns.innersourcecommons.org/p/communication-tooling) pattern - thank you @spier
+* adding known instances to various patterns (BBVA, GitHub, Bosch) - thank you @rahermur, @zkoppert, @gruetter
+* improvements to [Modular Code](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/patterns/1-initial/modular-code.md) pattern. - thank you @fioddor
+ * This is a case of a pattern that is around for years and still did not make it into our book. We suspect that many orgs are using this approach and might not even consider this an enabler for InnerSource. Might be too obvious! We have filed an issue to improve the pattern further and get it published in our book. So please [contribute](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues/529)!
+* New **Structured** patterns:
+ * [Group Support](https://patterns.innersourcecommons.org/p/group-support) - great work @rrrutledge
+* New **Initial** patterns:
+ * none
+* Last [Trusted Committer](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/TRUSTED-COMMITTERS.md) added was [@yuhattor](https://github.com/yuhattor) (added 2022-07-21)
+* Trusted Committer candidates in the pipeline: No
+
+## Next Goals (same as previous Board report)
+
+The overall goals of this group are:
+
+1. Increase number of people consuming the patterns. ("easier to discover", pattern of month, categories)
+2. Increase the number and quality of patterns.
+ 1. Increase the number of people thinking to contribute. ("patterns in wild", "known instances")
+ 2. Increase probability of successful contribution. ("reduce review time", "lower barrier of entry")
+ 3. Optimise the existing content. (level-up more patterns, "known instances" again)
+
+All goals will be progressed but we are prioritising effort towards 2.iii.
+
+Specifically we want to get existing **Initial (L1)** patterns improved to **Structured (L2)**, so that we can publish them in the book.
+
+We had a [discussion](https://github.com/InnerSourceCommons/InnerSourcePatterns/pull/486#discussion_r1029921121) about this and created a short-list of those patterns (details below).
+
+We now have a [script](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/meta/scripts/find_upgradeable_patterns.rb) that identifies patterns that could be upgrade, based on the number of Known Instances only:
+
+```
+$ ruby find_upgradeable_patterns.rb
+## Initial => Structured
+## 1-Initial patterns primed for upgrade to 2-Structured (based on Known Instances only)
+1 | ../../patterns/1-initial/innersource-guidance-group.md
+1 | ../../patterns/1-initial/innersource-customer-interview-questions.md
+2 | ../../patterns/1-initial/balancing-openness-and-security.md
+1 | ../../patterns/1-initial/source-code-inventory.md
+1 | ../../patterns/1-initial/incubator-pipeline.md
+1 | ../../patterns/1-initial/include-product-owners.md
+1 | ../../patterns/1-initial/introducing-metrics-in-innersource.md
+1 | ../../patterns/1-initial/modular-code.md
+1 | ../../patterns/1-initial/contained-innersource.md
+1 | ../../patterns/1-initial/transitioning-contractor-code-to-innersource-model.md
+1 | ../../patterns/1-initial/governance-levels.md
+
+## Structured => Validated
+## 2-Structured patterns primed for upgrade to 3-Validated (based on Known Instances only)
+3 | ../../patterns/2-structured/30-day-warranty.md
+5 | ../../patterns/2-structured/transparent-cross-team-decision-making-using-rfcs.md
+3 | ../../patterns/2-structured/document-your-guiding-principles.md
+4 | ../../patterns/2-structured/trusted-committer.md
+3 | ../../patterns/2-structured/core-team.md
+3 | ../../patterns/2-structured/maturity-model.md
+5 | ../../patterns/2-structured/innersource-portal.md
+3 | ../../patterns/2-structured/gig-marketplace.md
+3 | ../../patterns/2-structured/project-setup/base-documentation.md
+3 | ../../patterns/2-structured/project-setup/communication-tooling.md
+```
+
+### Shortlisted Patterns
+
+Here you find more detail about the possible execution of this approach.
+It is more information than what the Board needs. It may however help you to understand how we are reasoning about our patterns.
+
+We identified these patterns as "low-hanging fruits", as they contain a **Known Instance** already, and that info is often hard to get.
+
+We believe we can contact the respective authors/organizations, and ask them to review the patterns against the [Structured (L2) Requirements](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/meta/contributor-handbook.md#requirements-level-2---structured). The upside for those orgs is to get their pattern (and brand) published in our book.
+
+We expect that with one round of review (or rather a single PR) we can get these patterns published in our book.
+
+* **(in progress)** (Comcast) [release-process.md](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/patterns/1-initial/release-process.md) - We kept this pattern in Initial to give the community time to review/harden this pattern before it goes into the book. - See [#524](https://github.com/InnerSourceCommons/InnerSourcePatterns/pull/524)
+* **(in progress)** (Flutter, Europace) [governance-levels.md](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/patterns/1-initial/governance-levels.md) - Proposed by Europace (Isabel) but further improved by Rob.
+* (??? Tim Yao, Georg Grütter) [contained-innersource.md](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/patterns/1-initial/contained-innersource.md) - This pattern has been around for a long time. It can try to contact the two authors and see if they want to bring it over the finish line.
+* (Philips) [source-code-inventory.md](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/patterns/1-initial/source-code-inventory.md)
+* (Philips, Verizon) [balancing-openness-and-security.md](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/patterns/1-initial/balancing-openness-and-security.md)
+* (GitHub) [transitioning-contractor-code-to-innersource-model.md](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/patterns/1-initial/transitioning-contractor-code-to-innersource-model.md)
+
+[patterns book]: https://patterns.innersourcecommons.org/
+[InnerSourcePatterns]: https://github.com/InnerSourceCommons/InnerSourcePatterns/
diff --git a/meta/contributor-handbook.md b/meta/contributor-handbook.md
index ffb60ad9d..592bfd160 100644
--- a/meta/contributor-handbook.md
+++ b/meta/contributor-handbook.md
@@ -47,6 +47,7 @@ To achieve a given maturity level, a pattern has to satisfy the requirements for
- The pattern links to related patterns of this level or higher.
- Links from the pattern to outside resources are working and are referencing a trusted resource - whether links are working is verified by [Check: Links](https://github.com/InnerSourceCommons/InnerSourcePatterns/actions/workflows/link-checker.yml)
- The pattern is added to at least one phase of the [InnerSource Program Mind Map](../pattern-categorization/README.md).
+ - Spelling & Styles checks pass - see [Check: Spelling & Styles](https://github.com/InnerSourceCommons/InnerSourcePatterns/actions/workflows/vale.yml)
- Artifacts:
- The patterns are stored as markdown files in [/patterns/2-structured][patterns-structured].
@@ -64,7 +65,6 @@ To achieve a given maturity level, a pattern has to satisfy the requirements for
- Uses & has no conflicts with working group terminology (defined by [Glossary](glossary.md) / implicit usage)
- Fits & has no conflicts with existing patterns (of this maturity level)
- Thorough review by at least two [trusted committers](../TRUSTED-COMMITTERS.md)
- - Spell Checking passes - *Oops! We have not yet developed this*
- Artifacts:
- The patterns are stored as markdown files in [/patterns/3-validated][patterns-validated].
diff --git a/meta/pattern-template.md b/meta/pattern-template.md
index 703c8778d..0464effe2 100644
--- a/meta/pattern-template.md
+++ b/meta/pattern-template.md
@@ -75,7 +75,7 @@ Often, this is yourself.
If you need to, find someone in the InnerSource Commons to be the nominal author (As Told To).
Could also be no-one if you do not want to take on authorship (common with a donut looking for a solution).
-## Acknowledgements (optional)
+## Acknowledgments (optional)
Include those who assisted in helping with this pattern - both for attribution and for possible future follow up.
Though optional, most patterns should list who helped in their creation.
diff --git a/meta/scripts/Gemfile b/meta/scripts/Gemfile
new file mode 100644
index 000000000..1cd3261e2
--- /dev/null
+++ b/meta/scripts/Gemfile
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+
+git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
+
+gem 'commonmarker'
diff --git a/meta/scripts/find_upgradeable_patterns.rb b/meta/scripts/find_upgradeable_patterns.rb
new file mode 100644
index 000000000..b80bde4fb
--- /dev/null
+++ b/meta/scripts/find_upgradeable_patterns.rb
@@ -0,0 +1,84 @@
+require 'rubygems'
+require 'bundler/setup'
+Bundler.require(:default)
+
+require 'pp'
+
+# ------------------------------------------------------------------------------------------------------------
+# This script scans all patterns in /patterns/1-initial and /patterns/2-structured.
+# Based on the number of Known Instances in the pattern, it suggests which patterns that might be ready to be leveled-up.
+#
+# The number of Known Instances are only one of the [requirement](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/meta/contributor-handbook.md#requirements-level-2---structured)
+# for our patterns to reach the next level. Therefore reading the pattern and the level requirements in detail is still required
+# to decide whether or not a pattern can be pushed to the next level.
+
+# NOTE: This script and `/book/scripts/generate_toc.rb` have some overlap in how they are parsing markdown.
+# However the overlap seemed minimal, so I opted not to do any deduplication of code.
+# ------------------------------------------------------------------------------------------------------------
+
+# Count Known Instances in a pattern
+# - return 0 if the section does not exist, or does not contain the expected list structure
+# - return
+def count_known_instances(file)
+ section_nodes = collect_section_nodes(file, "Known Instances")
+ list_nodes = []
+ # pick the first list in the "Known Instances" section, and return the number of elements in that list.
+ # CAUTION: this assumes a certain structure across all patterns. Therefore fairly brittle.
+ list_nodes = section_nodes.select {|n| n.type == :list}
+
+ known_instances_count = 0
+ known_instances_count = list_nodes.first.count if !list_nodes.first.nil?
+
+ return known_instances_count
+end
+
+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
+
+
+# Main block
+
+puts "## Initial => Structured"
+puts "## 1-Initial patterns primed for upgrade to 2-Structured (based on Known Instances only)"
+l1_patterns = Dir["../../patterns/1-initial/*.md"]
+
+l1_patterns.each do |file|
+ known_instances_count = count_known_instances(file)
+ puts "#{known_instances_count} | #{file}" if known_instances_count >= 1
+end
+
+puts "\n"
+puts "## Structured => Validated"
+puts "## 2-Structured patterns primed for upgrade to 3-Validated (based on Known Instances only)"
+l2_patterns = Dir["../../patterns/2-structured/*.md", "../../patterns/2-structured/project-setup/*.md"]
+
+l2_patterns.each do |file|
+ known_instances_count = count_known_instances(file)
+ puts "#{known_instances_count} | #{file}" if known_instances_count >= 3
+end
diff --git a/pattern-categorization/innersource-program-mind-map.html b/pattern-categorization/innersource-program-mind-map.html
index 8679b97f0..8555997b1 100644
--- a/pattern-categorization/innersource-program-mind-map.html
+++ b/pattern-categorization/innersource-program-mind-map.html
@@ -23,6 +23,6 @@
+ })(() => window.markmap,null,{"type":"heading","depth":1,"payload":{"lines":[0,1]},"content":"InnerSource Program","children":[{"type":"heading","depth":2,"payload":{"lines":[2,3]},"content":"Begin","children":[{"type":"heading","depth":3,"payload":{"lines":[4,5]},"content":"Program Setup","children":[{"type":"heading","depth":4,"payload":{"lines":[6,7]},"content":"Management hesitates to invest in InnerSource","children":[{"type":"heading","depth":5,"payload":{"lines":[8,9]},"content":"Start as an Experiment"}]},{"type":"heading","depth":4,"payload":{"lines":[10,11]},"content":"Slow community growth hinders InnerSource","children":[{"type":"heading","depth":5,"payload":{"lines":[12,13]},"content":"Dedicated Community Leader"}]},{"type":"heading","depth":4,"payload":{"lines":[14,15]},"content":"InnerSource principles are not intuitive for everybody","children":[{"type":"heading","depth":5,"payload":{"lines":[16,17]},"content":"Document your Guiding Principles"}]}]},{"type":"heading","depth":3,"payload":{"lines":[18,19]},"content":"Project Setup","children":[{"type":"heading","depth":4,"payload":{"lines":[20,21]},"content":"Hard to assess a project quickly","children":[{"type":"heading","depth":5,"payload":{"lines":[22,23]},"content":"Standard Base Documentation"}]},{"type":"heading","depth":4,"payload":{"lines":[24,25]},"content":"Ad-hoc communication hinders project growth","children":[{"type":"heading","depth":5,"payload":{"lines":[26,27]},"content":"Communication Tooling"}]},{"type":"heading","depth":4,"payload":{"lines":[28,29]},"content":"Intransparent roadmap and direction of the project","children":[{"type":"heading","depth":5,"payload":{"lines":[30,31]},"content":"Issue Tracker Use Cases"}]}]}]},{"type":"heading","depth":2,"payload":{"lines":[32,33]},"content":"Adopt","children":[{"type":"heading","depth":3,"payload":{"lines":[34,35]},"content":"Valuation Challenges","children":[{"type":"heading","depth":4,"payload":{"lines":[36,37]},"content":"How to measure a project's business value","children":[{"type":"heading","depth":5,"payload":{"lines":[38,39]},"content":"Cross-Team Project Valuation"}]},{"type":"heading","depth":4,"payload":{"lines":[40,41]},"content":"Can we rely on the project for an extended period?","children":[{"type":"heading","depth":5,"payload":{"lines":[42,43]},"content":"Standard Release Process"},{"type":"heading","depth":5,"payload":{"lines":[44,45]},"content":"Standard Base Documentation"}]}]},{"type":"heading","depth":3,"payload":{"lines":[46,47]},"content":"Cultural Challenges","children":[{"type":"heading","depth":4,"payload":{"lines":[48,49]},"content":"Unrecognized effort","children":[{"type":"heading","depth":5,"payload":{"lines":[50,51]},"content":"Praise Participants"},{"type":"heading","depth":5,"payload":{"lines":[52,53]},"content":"Trusted Committer"}]}]},{"type":"heading","depth":3,"payload":{"lines":[54,55]},"content":"Technical Challenges","children":[{"type":"heading","depth":4,"payload":{"lines":[56,57]},"content":"Not meeting everyone's needs","children":[{"type":"heading","depth":5,"payload":{"lines":[58,59]},"content":"Common Requirements"}]},{"type":"heading","depth":4,"payload":{"lines":[60,61]},"content":"Fear of shared support responsibility","children":[{"type":"heading","depth":5,"payload":{"lines":[62,63]},"content":"Service vs. Library"}]},{"type":"heading","depth":4,"payload":{"lines":[64,65]},"content":"Project is difficult to contribute to and use","children":[{"type":"heading","depth":5,"payload":{"lines":[66,67]},"content":"Core Team"}]}]},{"type":"heading","depth":3,"payload":{"lines":[68,69]},"content":"Organizational Challenges","children":[{"type":"heading","depth":4,"payload":{"lines":[70,71]},"content":"Discouragement of contributing resource","children":[{"type":"heading","depth":5,"payload":{"lines":[72,73]},"content":"Contracted Contributor"}]},{"type":"heading","depth":4,"payload":{"lines":[74,75]},"content":"Rejection of accepting contribution","children":[{"type":"heading","depth":5,"payload":{"lines":[76,77]},"content":"30 Day Warranty"}]},{"type":"heading","depth":4,"payload":{"lines":[78,79]},"content":"Radical change of management","children":[{"type":"heading","depth":5,"payload":{"lines":[80,81]},"content":"Review Committee"}]},{"type":"heading","depth":4,"payload":{"lines":[82,83]},"content":"Fear of shared support responsibility","children":[{"type":"heading","depth":5,"payload":{"lines":[84,85]},"content":"Service vs. Library"}]},{"type":"heading","depth":4,"payload":{"lines":[86,87]},"content":"Not enough maintainers to scale","children":[{"type":"heading","depth":5,"payload":{"lines":[88,89]},"content":"Trusted Committer"}]},{"type":"heading","depth":4,"payload":{"lines":[90,91]},"content":"Difficult cross-team coordination","children":[{"type":"heading","depth":5,"payload":{"lines":[92,93]},"content":"Transparent Cross-Team Decision Making using RFCs"}]},{"type":"heading","depth":4,"payload":{"lines":[94,95]},"content":"Project without an owner/maintainer","children":[{"type":"heading","depth":5,"payload":{"lines":[96,97]},"content":"Core Team"},{"type":"heading","depth":5,"payload":{"lines":[98,99]},"content":"Group Support"}]}]},{"type":"heading","depth":3,"payload":{"lines":[100,101]},"content":"Cross Legal Entities Challenges","children":[{"type":"heading","depth":4,"payload":{"lines":[102,103]},"content":"Concern on legal liabilities or cross-company accounting","children":[{"type":"heading","depth":5,"payload":{"lines":[104,105]},"content":"InnerSource License"}]}]}]},{"type":"heading","depth":2,"payload":{"lines":[106,107]},"content":"Grow","children":[{"type":"heading","depth":3,"payload":{"lines":[108,109]},"content":"Discovery Challenges","children":[{"type":"heading","depth":4,"payload":{"lines":[110,111]},"content":"Can't find matching projects","children":[{"type":"heading","depth":5,"payload":{"lines":[112,113]},"content":"Gig Marketplace"},{"type":"heading","depth":5,"payload":{"lines":[114,115]},"content":"InnerSource Portal"}]},{"type":"heading","depth":4,"payload":{"lines":[116,117]},"content":"Difficult to find active projects","children":[{"type":"heading","depth":5,"payload":{"lines":[118,119]},"content":"Repository Activity Score"}]}]}]},{"type":"heading","depth":2,"payload":{"lines":[120,121]},"content":"Scale","children":[{"type":"heading","depth":3,"payload":{"lines":[122,123]},"content":"Self Education/Improvement Challenges","children":[{"type":"heading","depth":4,"payload":{"lines":[124,125]},"content":"Not aware of InnerSource best practices","children":[{"type":"heading","depth":5,"payload":{"lines":[126,127]},"content":"Maturity Model"}]},{"type":"heading","depth":4,"payload":{"lines":[128,129]},"content":"Lack of open source knowledge","children":[{"type":"heading","depth":5,"payload":{"lines":[130,131]},"content":"Document your Guiding Principles"}]}]},{"type":"heading","depth":3,"payload":{"lines":[132,133]},"content":"Technical Challenges","children":[{"type":"heading","depth":4,"payload":{"lines":[134,135]},"content":"Increasing maintenance overhead","children":[{"type":"heading","depth":5,"payload":{"lines":[136,137]},"content":"Extensions for Sustainable Growth"}]}]}]}]},null)