diff --git a/.github/ISSUE_TEMPLATE/pattern-draft.md b/.github/ISSUE_TEMPLATE/pattern-draft.md
index 502501ef9..cc49492e8 100644
--- a/.github/ISSUE_TEMPLATE/pattern-draft.md
+++ b/.github/ISSUE_TEMPLATE/pattern-draft.md
@@ -7,8 +7,11 @@ assignees: ''
---
-This is the most basic template for a new pattern.
-See our full pattern syntax [here](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/meta/pattern-template.md).
+If you don't know how to get started, try to [draft an InnerSource Pattern with AI](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/meta/pattern-drafts-with-ai.md).
+Then you can paste the result into the issue below, do manual edits as you see fit and submit it.
+
+Below you see a basic template for a new pattern.
+For the full details, see our [pattern template](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/meta/pattern-template.md).
## Title
@@ -16,7 +19,8 @@ Short Title Here
## Patlet / Summary
-Concise 1-2 sentence description of the problem and solution.
+Concise 2 sentence description of the problem and solution.
+The 1st sentence describes the problem. The 2nd sentence describes the solution.
## Problem
@@ -59,7 +63,7 @@ May mention:
* A particular business
* Anonymized instances ex: "3 companies have proven that this is a good solution" or "A large financial services org...".
-## Status
+## Status
Initial
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 5ace4600a..75bc9cd61 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -4,3 +4,7 @@ updates:
directory: "/"
schedule:
interval: "weekly"
+ - package-ecosystem: "bundler"
+ directory: "/"
+ schedule:
+ interval: "weekly"
diff --git a/.github/vale/config/vocabularies/Base/accept.txt b/.github/vale/config/vocabularies/Base/accept.txt
new file mode 100644
index 000000000..cb05b5973
--- /dev/null
+++ b/.github/vale/config/vocabularies/Base/accept.txt
@@ -0,0 +1 @@
+Adyen
\ No newline at end of file
diff --git a/.github/workflows/all-patterns-listed.yml b/.github/workflows/all-patterns-listed.yml
new file mode 100644
index 000000000..c7748dccd
--- /dev/null
+++ b/.github/workflows/all-patterns-listed.yml
@@ -0,0 +1,46 @@
+# Check if all patterns are listed in README.md
+name: All Patterns Listed
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+
+jobs:
+ all-patterns-listed:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+
+ - name: Check if all patterns are listed in README.md
+ run: |
+ README="README.md"
+
+ # Ensure README.md exists
+ if [[ ! -f "$README" ]]; then
+ echo "Error: $README not found!"
+ exit 1
+ fi
+
+ missing=0
+
+ for file in patterns/*/*.md; do
+ if grep -qF "$file" "$README"; then
+ echo "✔ Found: $file"
+ else
+ echo "✘ Missing: $file"
+ echo "✘ Pattern file not listed in README.md: $file" >> $GITHUB_STEP_SUMMARY
+ missing=$((missing + 1))
+ fi
+ done
+
+ if [[ $missing -gt 0 ]]; then
+ echo "Some patterns are missing from $README."
+ exit 1
+ else
+ echo "All patterns are listed in $README."
+ exit 0
+ fi
diff --git a/.github/workflows/book.yml b/.github/workflows/book.yml
index 912ffefec..94638b3d9 100644
--- a/.github/workflows/book.yml
+++ b/.github/workflows/book.yml
@@ -18,7 +18,7 @@ jobs:
language: [en, ja, zh, pt-br, gl, es]
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- uses: ruby/setup-ruby@v1
with:
@@ -33,7 +33,7 @@ jobs:
echo "Generated book for: ${{ matrix.language }}" >> $GITHUB_STEP_SUMMARY
- name: Commit updated toc.md for the book
- uses: stefanzweifel/git-auto-commit-action@v5
+ uses: stefanzweifel/git-auto-commit-action@v7
with:
commit_message: Writing updated toc.md for the ${{ matrix.language }} book
branch: ${{ github.head_ref }}
diff --git a/.github/workflows/contributor-report.yaml b/.github/workflows/contributor-report.yaml
index 048e50671..81039ed71 100644
--- a/.github/workflows/contributor-report.yaml
+++ b/.github/workflows/contributor-report.yaml
@@ -28,7 +28,7 @@ jobs:
echo "END_DATE=$end_date" >> "$GITHUB_ENV"
- name: Run contributor action
- uses: github/contributors@v1
+ uses: github-community-projects/contributors@v1
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
START_DATE: ${{ env.START_DATE }}
@@ -37,7 +37,7 @@ jobs:
SPONSOR_INFO: "true"
- name: Create issue
- uses: peter-evans/create-issue-from-file@v5
+ uses: peter-evans/create-issue-from-file@v6
with:
title: "Monthly Metrics: Contributors ${{ env.START_DATE }}..${{ env.END_DATE }}"
token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/generate-mindmap.yml b/.github/workflows/generate-mindmap.yml
index cd0787254..bce021de0 100644
--- a/.github/workflows/generate-mindmap.yml
+++ b/.github/workflows/generate-mindmap.yml
@@ -26,34 +26,40 @@ jobs:
# Give the default GITHUB_TOKEN write permission to commit and push the changed files back to the repository.
contents: write
- strategy:
- matrix:
- folder: [".", "./gl", "./pt-br", "./es"]
-
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Use Node.js
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: 20
cache: 'npm'
cache-dependency-path: pattern-categorization/package-lock.json
- name: Install Node.js dependencies
run: npm install
- - name: Run Markmap
- run: npx markmap --no-toolbar ${{ matrix.folder }}/innersource-program-mind-map.md -o ${{ matrix.folder }}/innersource-program-mind-map.html
- - name: Screenshot Markmap Website
- id: screenshot-generator
- uses: swinton/screenshot-website@v1.x
- with:
- source: pattern-categorization/${{ matrix.folder }}/innersource-program-mind-map.html #strange syntax here. seems to not respect the working-directory default either
- destination: innersource-program-mind-map.png
- full-page: false
- - name: Copy Screenshot
- run: cp ${{ steps.screenshot-generator.outputs.path }} ${{ matrix.folder }}
- - name: Reduce Screenshot Size (PNG)
- run: npx optipng ${{ matrix.folder }}/innersource-program-mind-map.png
+ - name: Disable AppArmor
+ run: |
+ # Disable AppArmor for unprivileged user namespaces (required for 'pageres')
+ sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
+ - name: Generate mindmap and take screenshot
+ run: |
+ # Loops over the top-level folder and all immediate sub-folders, except for "node_modules"
+ for dir in . */; do
+ # Skip node_modules
+ [ "$(basename "$dir")" = "node_modules" ] && continue
+
+ echo "Creating mindmap PNG for: $dir"
+ (
+ # Create markmap HTML
+ npx markmap --no-open --no-toolbar $dir/innersource-program-mind-map.md -o $dir/innersource-program-mind-map.html
+
+ # Take the screenshot
+ npx pageres $dir/innersource-program-mind-map.html --overwrite --filename=$dir/innersource-program-mind-map 2560x1600
+
+ # Reduce Screenshot Size (PNG)
+ npx optipng -silent $dir/innersource-program-mind-map.png
+ )
+ done
- name: Commit Changes
- uses: stefanzweifel/git-auto-commit-action@v5
+ uses: stefanzweifel/git-auto-commit-action@v7
with:
commit_message: Re-creating markmap and screenshot
diff --git a/.github/workflows/i18n-consistency-checker.yaml b/.github/workflows/i18n-consistency-checker.yaml
index bf30f7cf7..f1e877210 100644
--- a/.github/workflows/i18n-consistency-checker.yaml
+++ b/.github/workflows/i18n-consistency-checker.yaml
@@ -17,7 +17,7 @@ jobs:
matrix:
language: [ja, zh, pt-br, gl, es]
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: '0'
- name: Check consistency and create issue
diff --git a/.github/workflows/link-checker-prs.yml b/.github/workflows/link-checker-prs.yml
index 985aa8ca1..f7175e260 100644
--- a/.github/workflows/link-checker-prs.yml
+++ b/.github/workflows/link-checker-prs.yml
@@ -15,13 +15,13 @@ jobs:
linkChecker:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Get changed files
id: changed-files
- uses: tj-actions/changed-files@v45
+ uses: tj-actions/changed-files@v47
- name: Filter markdown files only
run: |
@@ -29,7 +29,7 @@ jobs:
echo "MARKDOWN_FILES=$md_files" >> $GITHUB_ENV
- name: Restore lychee cache
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
@@ -41,6 +41,7 @@ jobs:
with:
args: --verbose --no-progress --cache --max-cache-age 1d $MARKDOWN_FILES
fail: true
+ failIfEmpty: false
jobSummary: true
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
diff --git a/.github/workflows/link-checker.yml b/.github/workflows/link-checker.yml
index a1da3b4c8..73f9a4705 100644
--- a/.github/workflows/link-checker.yml
+++ b/.github/workflows/link-checker.yml
@@ -15,10 +15,10 @@ jobs:
linkChecker:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Restore lychee cache
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
diff --git a/.github/workflows/lint-patterns.yml b/.github/workflows/lint-patterns.yml
index 1240082ff..b8a96f1e0 100644
--- a/.github/workflows/lint-patterns.yml
+++ b/.github/workflows/lint-patterns.yml
@@ -18,7 +18,7 @@ jobs:
validate:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Problem Matcher for markdownlint-cli
uses: xt0rted/markdownlint-problem-matcher@v3
- name: Lint pattern files (markdown)
diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml
index 7a00dcd49..15287c4d7 100644
--- a/.github/workflows/markdownlint.yml
+++ b/.github/workflows/markdownlint.yml
@@ -20,9 +20,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Use Node.js
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: 20
- name: Run Markdownlint
diff --git a/.github/workflows/pattern-metrics.yaml b/.github/workflows/pattern-metrics.yaml
index 40953cd4f..d340b3482 100644
--- a/.github/workflows/pattern-metrics.yaml
+++ b/.github/workflows/pattern-metrics.yaml
@@ -29,7 +29,7 @@ jobs:
echo "last_month=$first_day..$last_day" >> "$GITHUB_ENV"
- name: Check out the code so we can get the CODEOWNERS names
- uses: actions/checkout@v4
+ uses: actions/checkout@v6
with:
sparse-checkout: |
.github/CODEOWNERS
@@ -53,7 +53,7 @@ jobs:
echo "CODEOWNERS_FILTER=$CODEOWNERS_FILTER" >> "$GITHUB_ENV"
- name: Run issue-metrics tool for issues
- uses: github/issue-metrics@v2
+ uses: github-community-projects/issue-metrics@v3
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SEARCH_QUERY: 'repo:InnerSourceCommons/InnerSourcePatterns is:issue created:${{ env.last_month }} -reason:"not planned" ${{ env.CODEOWNERS_FILTER }}'
@@ -66,7 +66,7 @@ jobs:
mv ./issue_metrics.md ready_to_merge_issues_report.md
- name: Run issue-metrics tool for PRs
- uses: github/issue-metrics@v2
+ uses: github-community-projects/issue-metrics@v3
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SEARCH_QUERY: 'repo:InnerSourceCommons/InnerSourcePatterns is:pr created:${{ env.last_month }} -reason:"not planned" ${{ env.CODEOWNERS_FILTER }}'
@@ -80,7 +80,7 @@ jobs:
cat ready_to_merge_issues_report.md hr.md issue_metrics.md > all.md
- name: Create issue
- uses: peter-evans/create-issue-from-file@v5
+ uses: peter-evans/create-issue-from-file@v6
with:
title: "Monthly Metrics: New Issues + New Pull Requests ${{ env.last_month }}"
token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/vale.yml b/.github/workflows/vale.yml
index 92d6cfb70..0792228cf 100644
--- a/.github/workflows/vale.yml
+++ b/.github/workflows/vale.yml
@@ -18,7 +18,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Vale Linting
uses: errata-ai/vale-action@v2
diff --git a/.lycheeignore b/.lycheeignore
index cd4ffb2f6..3b44b7234 100644
--- a/.lycheeignore
+++ b/.lycheeignore
@@ -12,4 +12,6 @@ https://m.dotdev.co/how-to-write-a-readme-that-rocks-bc29f279611a
https://www.chathamhouse.org/about-us/chatham-house-rule
https://www.linkedin.com/in
# from source-code-inventory.md / no longer reachable but we want to keep the link in the pattern in case we find it again.
-https://github.com/trieshard/source-strategy-assessment/blob/master/framework.md
\ No newline at end of file
+https://github.com/trieshard/source-strategy-assessment/blob/master/framework.md
+https://dl.acm.org/doi/10.5555/3158161.3158175
+https://retromat.org/en/
\ No newline at end of file
diff --git a/.vale.ini b/.vale.ini
index 8b6d88db1..142bd22dd 100644
--- a/.vale.ini
+++ b/.vale.ini
@@ -3,6 +3,8 @@ MinAlertLevel = suggestion
Packages = https://github.com/InnerSourceCommons/isc-styles/releases/latest/download/ISC.zip
+Vocab = Base
+
[*]
BasedOnStyles = ISC
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8d58bb70e..3a2228ae2 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -7,7 +7,8 @@ For this working group to thrive, we welcome your contribution - be it small or
## How to Contribute?
Please consider contributing to the InnerSource Patterns.
-Here some suggestions on how you can contribute.
+
+*Here are some suggestions on how you can contribute.*
1. **Share your thoughts & spark discussion**: A fresh perspective, an interesting thought, or an early novel idea can spark discussions and yield unforeseeable results. We invite you to share your thoughts on InnerSource-related topics at any time by [creating an issue](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues/new) or [via Slack](#how-to-get-in-touch).
@@ -19,7 +20,7 @@ Here some suggestions on how you can contribute.
5. **Review open pull requests**: Even without knowing all the specifics of the patterns working group, your feedback on existing [pull requests](https://github.com/InnerSourceCommons/InnerSourcePatterns/labels/type%20-%20Content%20work) (especially those proposing changes to pattern contents) will be valuable to its authors: As somebody who wants to learn more about InnerSource, you can give input from the perspective of a future reader. As somebody with own InnerSource experiences, you can share your experience with the authors.
-6. **Contribute a new pattern**: A key contribution you can make is to document an InnerSource best practice you experienced or know about. We defined different maturity levels for the contents in this repository: First time contributors should aim for maturity levels `1: initial` (for unstructured experience reports or what we call donuts - patterns with missing pieces) and `2: structured` (for best practices adhering to the patterns format and following basic writing style conventions). Our [Contributor Handbook](meta/contributor-handbook.md) discusses all this in more detail. You don't feel ready yet to contribute a new pattern? Please start a discussion by [creating an issue](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues/new).
+6. **Contribute a new pattern**: A key contribution you can make is to document an InnerSource best practice you experienced or know about. We defined different maturity levels for the contents in this repository: First-time contributors should aim for maturity levels `1: initial` for unstructured experience reports. Our [Contributor Handbook](meta/contributor-handbook.md) discusses all this in more detail. You can also use the [Drafting InnerSource Pattern with AI](/meta/pattern-drafts-with-ai.md) instructions to quickly produce content for a new pattern. Are you ready to contribute a new pattern yet? Please start a discussion by [creating an issue](https://github.com/InnerSourceCommons/InnerSourcePatterns/issues/new).
7. **Be a patterns advocate**: The patterns will become better and cover more topics the more people contribute their perspective and experience. A colleague told you about a novel InnerSource best practice? Please invite her/him to contribute to this repository!
diff --git a/README.md b/README.md
index 1e41e6862..199e35b91 100644
--- a/README.md
+++ b/README.md
@@ -59,6 +59,7 @@ Our mission
* [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.*
* [Explicit Governance Levels](patterns/2-structured/governance-levels.md) - *Different teams within an organization use InnerSource practices in varying ways, leading to confusion and inefficiencies due to inconsistent expectations of collaboration and contribution rights. Establish centrally documented governance levels that define the extent of influence contributing teams can have on a project, improving clarity for contributors and host teams alike.*
+* [InnerSource Hackathon](patterns/2-structured/innersource-hackathon.md) - *Only InnerSource enthusiasts practice InnerSource during the early stages of adoption, while most engineering teams lack the time or motivation to try it. Hosting a company-wide hackathon focused on InnerSource contributions provides a safe space for engineers to experiment with InnerSource practices and produces tangible contributions to InnerSource projects.*
### Maturity Level 1: Initial
@@ -87,13 +88,17 @@ Our mission
* [Creating an InnerSource Strategy](/patterns/1-initial/creating_an_innersource_strategy.md) - *Sometimes, it is difficult to convince people of the relevance of InnerSource for your organization and/or to get support from management. Creating an InnerSource strategy, that connects your InnerSource approach and activities to the goals and the overall strategy of your organization, can help in this regard.*
* [Code of Conduct](/patterns/1-initial/code-of-conduct.md) - *Communications and interactions between collaborators are rude, not inclusive or offensive, harming and increasing the discussions without any value added. A Code of Conduct provides guidelines for establishing rules and expectations regarding behavior and interactions within the community to build stronger levels of collaboration.*
* [Trusted Committer and Contributor Retrospectives](/patterns/1-initial/cross-team-retrospectives.md) - *A host team working with contributors outside of their own line of management constantly runs into misunderstandings. As a result collaboration becomes brittle and frustrating. Setting aside time for regular retrospectives for the InnerSource team consisting of trusted committers and contributors can help make communication smooth.*
-* [InnerSource Hackathon](/patterns/1-initial/innersource-hackathon.md) - *In a company, initially only InnerSource enthusiasts are interested and practicing InnerSource during the early stages of InnerSource adoption; not all engineering teams are willing or have enough time and resources to adopt InnerSource. In this scenario, it is good to provide a safe space to try and adopt InnerSource through an InnerSource Hackathon event within the company.*
* [Managing Capacity for Reviewing Contributions](/patterns/1-initial/capacity-for-contributions.md) - *Reviewing InnerSource contributions takes time and effort. This should be reflected in capacity planning, especially for larger contributions. Expectations and available capacity should be transparent so that contributors understand when their contributions will be reviewed and, if accepted, released.*
* [InnerSource Ambassadors](/patterns/1-initial/innersource-ambassador.md) - *When driving InnerSource adoption through a large, decentralized organization it is hard to understand and address the local challenges that come up in different departments and regions. Local volunteers, called InnerSource Ambassadors, provide localized support by promoting InnerSource principles and acting as a communication bridge between their teams and the ISPO.*
* [Circle Communities](/patterns/1-initial/circle-communities.md) - *InnerSource adoption is slow in organizations due to limited understanding, engagement, and contextual relevance. Circle Communities address this by fostering synchronous conversations that build connections, close knowledge gaps, and cultivate collaboration and continuous learning.*
* [Internal Developer Platform](/patterns/1-initial/internal-developer-platform.md) - *As InnerSource adoption increases throughout an organisation, it is not unusual that project teams start to face inefficiencies in scaling their efforts due to fragmented tooling, environments, and workflows. An Internal Developer Platform (IDP) provides a way to tackle this type of challenges through a centralized, self-service system that standardizes development environments and integrates tools to enhance consistency, collaboration, and developer productivity.*
* [Document Architecture Decisions](/patterns/1-initial/document-architecture-decisions.md) - *InnerSource contributors often face challenges in grasping the system's design rationale, which can result in misalignment between maintainers, contributors, and stakeholders — potentially discouraging participation. To enhance decision-making and transparency, we recommend capturing architecture decisions and their consequences in a lightweight, accessible format to streamline onboarding, clarify decisions, and support long-term project sustainability.*
-* [InnerSource Incentives and Disincentives](/patterns/1-initial/incentives-and-disincentives.md) - *Lack of awareness for incentives as well well as disincentives for InnerSource contribution decrease the chances of an InnerSource project receiving contributions; this is addressed by sharing a comprehensive list of potential incentives and disincentives.
+* [InnerSource Incentives and Disincentives](/patterns/1-initial/incentives-and-disincentives.md) - *Lack of awareness for incentives as well well as disincentives for InnerSource contribution decrease the chances of an InnerSource project receiving contributions; this is addressed by sharing a comprehensive list of potential incentives and disincentives.*
+* [Walk the InnerSource talk](/patterns/1-initial/walk-the-innersource-talk.md) - *Teams across the organization are encouraged to adopt InnerSource principles such as working openly, sharing code, and collaborating transparently. But, if the team behind the InnerSource initiative doesn’t follow these practices themselves, it undermines credibility and adoption. Therefore, this team should lead by example: documenting their decisions as code, working in the open, and treating their work as an InnerSource project to build trust and show others how it’s done.*
+* [Require InnerSource before Open Source](/patterns/1-initial/innersource-before-open-source.md) - *Maintaining and managing open source projects can be challenging for organizations, due to a lack of internal infrastructure and people with the knowledge of the required collaboration practices. By requiring projects to be InnerSource before becoming open source, teams have time to establish the necessary internal support, governance, and collaboration skills needed for successful community engagement.*
+* [AI Code Generation Context](patterns/1-initial/ai-code-generation-context.md) - *AI tools generate code that diverges from project standards and architectural patterns. Provide an AI Code Generation Context within the repositories to guide AI tools in producing contributions that align with existing project conventions, reducing review friction and maintaining code consistency.*
+* [InnerSource as a Career Booster](patterns/1-initial/innersource-as-career-booster.md) - *Many employees wonder how contributing to InnerSource projects benefits their careers beyond their immediate team objectives. By engaging in InnerSource, individuals expand their skills, grow their network, increase visibility across the organization, and unlock new career opportunities.*
+* [Migrating from InnerSource to Open Source](patterns/1-initial/migrating-from-innersource-to-open-source.md) - *When an InnerSource project succeeds internally and meets criteria for external release, organizations often lack a structured approach for the transition. Establish a process that addresses legal, security, governance, and community readiness to transition the project to open source while maintaining its internal value.*
+
+**何から準備する?**
+
+* [実験として始める](../../translation/ja/patterns/start-as-experiment.md) - インナーソースイニシアチブを期間限定の実験として開始し、インナーソースに慣れていないマネージャーがイニシアチブを承認およびサポートしやすくします。
+
+* [正式なコミュニティリーダー](../../translation/ja/patterns/dedicated-community-leader.md) - インナーソースの取り組みを成功させるために、コミュニケーションとテクニカルの両方のスキルを持つ人をコミュニティのリーダーとして選ぶ。
+
+* [基本原則ガイダンスの文書化](../../translation/ja/patterns/document-your-guiding-principles.md) - 「オープンソースのベストプラクティスを組織内に適用する」という通常のインナーソースの説明は、オープンソースのバックグラウンドがない人々にはうまく機能しません。 解決策として、インナーソースの最も重要な原則を文書化し広く公開しましょう。
+
+**README.md、CONTRIBUTING.md、コミュニケーションツールなど用意するには?**
+
+* [スタンダード・ベース・ドキュメンテーション](../../translation/ja/patterns/base-documentation.md) - インナーソースプロジェクトへの新しいコントリビューターは、誰がプロジェクトを維持し、何に取り組み、どのようにコントリビューションすればよいかを理解するのに苦労しています。README.md/CONTRIBUTING.md のような標準ファイルでドキュメントを提供することで、新しいコントリビューターのためのセルフサービスなプロセスを可能にし、よくある質問に対する答えを自分自身で見つけることができるようにします。
-* [30日の保証期間](../../translation/ja/patterns/30-day-warranty.md) - 自分のチーム以外からのコントリビューションを受け入れる場合、チームが書いていないコードの責任を持つことに抵抗があることは自然なことでしょう。 「30日の保証期間」プラクティスを利用すると、コードにコントリビュートしたチームはコードを受け取ったチームに対してバグフィックスを提供することを承諾することになります。 そうすることで、両チーム間の信頼度が高まり、コントリビューションが受け入れられる可能性が高くなります。
-* [RFCを用いたチーム横断的な意思決定の透明化](../../translation/ja/patterns/transparent-cross-team-decision-making-using-rfcs.md) - 高い参加率を達成し、関係者全員にとって最良の意思決定を行いたいインナーソースプロジェクトは、ソフトウェアのライフサイクル全体を通して参加型のシステムを構築する方法を見つける必要があります。内部のRFC(Requests for Comments)ドキュメントを公開することで、設計プロセスの早い段階から議論を行うことができ、関係者全員が高いコミットメントを持ってソリューションを構築できる可能性が高まります。
-* [イシュートラッカーの使い方を多様化する](../../translation/ja/patterns/issue-tracker.md) - インナーソースのホストチームは、計画や進捗だけでなく、変更の背景も透明化することができていません。これは、プロジェクトのイシュートラッカーのユースケースを増やし、ブレーンストーミング、実装の議論、機能設計にも使えるようにすることで解決することができます。
-* [インナーソースポータル](../../translation/ja/patterns/innersource-portal.md) - 潜在的なコントリビューターは、彼らが興味を持っているインナーソースプロジェクトを簡単に見つけることができません。すべての利用可能なインナーソースプロジェクトの情報をインデックス化するイントラネットのウェブサイトを作成することにより、あなたはコントリビューターが彼らに興味があるかもしれないプロジェクトについて知ることができ、インナーソースプロジェクトのオーナーは、外部のオーディエンスを引き付けることができます。
-* [インナーソースライセンス](../../translation/ja/patterns/innersource-license.md) - 同じ組織に属する2つの法人は、ソフトウェアのソースコードを互いに共有したいと考えていますが、法的責任や会社間の会計処理の観点からの影響を懸念しています。
-* [ギグマーケットプレイス](../../translation/ja/patterns/gig-marketplace.md) - イントラネットのウェブサイトを作成し、特定のインナーソースプロジェクトのニーズを、時間とスキルの要件を明示した「ギグ」としてリストアップすることで、マーケットプレイスを確立する。 これにより、管理者がインナーソースのコントリビューションを行うための承認を与え可能性が増え、従業員の時間のコミットメントと専門的な利点をよりよく理解することができます。
-* [クロスチームプロジェクト評価](../../translation/ja/patterns/crossteam-project-valuation.md) - 会社の収益に直接的な影響を提供していないクロスチームのインナーソースプロジェクトの価値を評価して社内に売り込むことは困難です。 ここでは、あなたのプロジェクトの価値を明確に表現し、それを大きくするためのデータ駆動型の方法を紹介します
-* [コアチーム](../../translation/ja/patterns/core-team.md) - インナーソースのプロジェクトが広く必要とされていても、プロジェクトが難しいためにコントリビューションや活用に支障をきたす場合があります。プロジェクトの基本的な項目を専門に担当するコアチームを設立してください。コアチームの作業により、コントリビューターは自分のシナリオに価値をもたらす機能を追加し、使用することができます。
* [コミュニケーションツーリング](../../translation/ja/patterns/communication-tooling.md) - インナーソースのプロジェクトは、開発チームの外で使用されていますが、ユーザーはヘルプを得たり、プロジェクトチームと連絡を取ったりするのに苦労しています。 このアイデアは、ディスカッションが可視化され、アーカイブされ、検索可能になることを可能にする標準的なコミュニケーションツールを設定し、文書化することです。
-* [コントラクトコントリビューター](../../translation/ja/patterns/contracted-contributor.md) - インナーソースにコントリビュートしたい社員がいますが、彼らの直属の上司はその活動に抵抗を示しています。正式な契約と合意をすることによって救済することができるかもしれません。
+
+* [イシュートラッカーの使い方を多様化する](../../translation/ja/patterns/issue-tracker.md) - インナーソースのホストチームは、計画や進捗だけでなく、変更の背景も透明化することができていません。これは、プロジェクトのイシュートラッカーのユースケースを増やし、ブレーンストーミング、実装の議論、機能設計にも使えるようにすることで解決することができます。
+
+**インナーソースを本格導入しよう!**
+
+**インナーソースの価値を評価するには?**
+
+* [クロスチームプロジェクト評価](../../translation/ja/patterns/crossteam-project-valuation.md) - 会社の収益に直接的な影響を提供していないクロスチームのインナーソースプロジェクトの価値を評価して社内に売り込むことは困難です。 ここでは、あなたのプロジェクトの価値を明確に表現し、それを大きくするためのデータ駆動型の方法を紹介します。
+
+**感謝を伝えるには?**
+
* [コントリビューションの功労を称える](../../translation/ja/patterns/praise-participants.md) - インナーソースのコントリビューションの後、その時間と努力に対してコントリビューターに感謝することは重要です。 このパターンは、コントリビューションを効果的に認めるだけでなく、コントリビューターや他の人たちのさらなる関与を引き出すためのガイダンスを提供します。
+
+**技術的な問題に対しては?**
+
+* [共通要件](../../translation/ja/patterns/common-requirements.md) - 共有リポジトリにある共通のコードは、それを使いたいすべてのプロジェクトチームのニーズを満たしていません。これは、要件の調整とリファクタリングによって解決されます。
+
* [サービス対ライブラリ](../../translation/ja/patterns/service-vs-library.md) - DevOps環境のチームは、サービスのダウンタイムに対応する責任が誰にあるのかが曖昧になるため、チームの境界を越えて共通のコードベースで作業することに消極的になる場合があります。解決策としては、同じサービスを独立した環境で展開し、サービスダウン時のエスカレーション・チェーンを別々に構築するか、多くの共有コードを1つのライブラリに集約し、その上で共同作業を行うことが挙げられます。
-* [スタンダード・ベース・ドキュメンテーション](../../translation/ja/patterns/base-documentation.md) - インナーソースプロジェクトへの新しいコントリビューターは、誰がプロジェクトを維持し、何に取り組み、どのようにコントリビューションすればよいかを理解するのに苦労しています。README.md/CONTRIBUTING.md のような標準ファイルでドキュメントを提供することで、新しいコントリビューターのためのセルフサービスなプロセスを可能にし、よくある質問に対する答えを自分自身で見つけることができるようにします。
+
+* [コアチーム](../../translation/ja/patterns/core-team.md) - インナーソースのプロジェクトが広く必要とされていても、プロジェクトが難しいためにコントリビューションや活用に支障をきたす場合があります。プロジェクトの基本的な項目を専門に担当するコアチームを設立してください。コアチームの作業により、コントリビューターは自分のシナリオに価値をもたらす機能を追加し、使用することができます。
+
+**組織的な挑戦の仕方は?**
+
+* [コントラクトコントリビューター](../../translation/ja/patterns/contracted-contributor.md) - インナーソースにコントリビュートしたい社員がいますが、彼らの直属の上司はその活動に抵抗を示しています。正式な契約と合意をすることによって救済することができるかもしれません。
+
+* [30日の保証期間](../../translation/ja/patterns/30-day-warranty.md) - 自分のチーム以外からのコントリビューションを受け入れる場合、チームが書いていないコードの責任を持つことに抵抗があることは自然なことでしょう。 「30日の保証期間」プラクティスを利用すると、コードにコントリビュートしたチームはコードを受け取ったチームに対してバグフィックスを提供することを承諾することになります。 そうすることで、両チーム間の信頼度が高まり、コントリビューションが受け入れられる可能性が高くなります。
+
+* [レビュー委員会](../../translation/ja/patterns/review-committee.md) - インナーソースの作業モデルは、開発者と管理者のための、より伝統的なアプローチからの抜本的な変革です。インナーソースイニシアチブとそれに参加するビジネスユニットのすべてのシニアマネージャーの間のインタフェースとしてレビュー委員会を確立することにより、マイクロマネジメントを助長することなく、監視と制御の一定レベルを与えるように、イニシアチブに慣れ親しみ、それをサポートできるようになる可能性が高くなります。
+
* [トラステッドコミッター](../../translation/ja/patterns/trusted-committer.md) - 多くのInnerSourceプロジェクトは、コントリビューターからフィードバック、機能、バグフィックスを一貫して受け取る状況にあります。このような状況で、プロジェクトのメンテナーは、単一のコントリビューションを越えてコントリビューターの仕事を認識し、報酬を与える方法を模索します。
+
+* [RFCを用いたチーム横断的な意思決定の透明化](../../translation/ja/patterns/transparent-cross-team-decision-making-using-rfcs.md) - 高い参加率を達成し、関係者全員にとって最良の意思決定を行いたいインナーソースプロジェクトは、ソフトウェアのライフサイクル全体を通して参加型のシステムを構築する方法を見つける必要があります。内部のRFC(Requests for Comments)ドキュメントを公開することで、設計プロセスの早い段階から議論を行うことができ、関係者全員が高いコミットメントを持ってソリューションを構築できる可能性が高まります。
+
+**インナーソースライセンスとは?**
+
+* [インナーソースライセンス](../../translation/ja/patterns/innersource-license.md) - 同じ組織に属する2つの法人は、ソフトウェアのソースコードを互いに共有したいと考えていますが、法的責任や会社間の会計処理の観点からの影響を懸念しています。
+
+**インナーソースを成長させよう!**
+
+**組織内のインナーソースを探しやすくするには?**
+
+* [ギグマーケットプレイス](../../translation/ja/patterns/gig-marketplace.md) - イントラネットのウェブサイトを作成し、特定のインナーソースプロジェクトのニーズを、時間とスキルの要件を明示した「ギグ」としてリストアップすることで、マーケットプレイスを確立する。 これにより、管理者がインナーソースのコントリビューションを行うための承認を与え可能性が増え、従業員の時間のコミットメントと専門的な利点をよりよく理解することができます。
+
+* [インナーソースポータル](../../translation/ja/patterns/innersource-portal.md) - 潜在的なコントリビューターは、彼らが興味を持っているインナーソースプロジェクトを簡単に見つけることができません。すべての利用可能なインナーソースプロジェクトの情報をインデックス化するイントラネットのウェブサイトを作成することにより、あなたはコントリビューターが彼らに興味があるかもしれないプロジェクトについて知ることができ、インナーソースプロジェクトのオーナーは、外部のオーディエンスを引き付けることができます。
+
* [リポジトリアクティビティスコア](../../translation/ja/patterns/repository-activity-score.md) - 潜在的なコントリビューターは、彼らの助けを必要とするアクティブなインナーソースプロジェクトを見つけたいと思っています。各プロジェクトのリポジトリのアクティビティスコアを計算することで、プロジェクトのランク付けされたリストを作成することができます (参考: インナーソースポータル )、そのため、潜在的コントリビューターは、彼らがコントリビュートしたいプロジェクトをより簡単に決定できます。
-* [レビュー委員会](../../translation/ja/patterns/review-committee.md) - インナーソースの作業モデルは、開発者と管理者のための、より伝統的なアプローチからの抜本的な変革です。インナーソースイニシアチブとそれに参加するビジネスユニットのすべてのシニアマネージャーの間のインタフェースとしてレビュー委員会を確立することにより、マイクロマネジメントを助長することなく、監視と制御の一定レベルを与えるように、イニシアチブに慣れ親しみ、それをサポートできるようになる可能性が高くなります。
-* [共通要件](../../translation/ja/patterns/common-requirements.md) - 共有リポジトリにある共通のコードは、それを使いたいすべてのプロジェクトチームのニーズを満たしていません。これは、要件の調整とリファクタリングによって解決されます。
-* [基本原則ガイダンスの文書化](../../translation/ja/patterns/document-your-guiding-principles.md) - 「オープンソースのベストプラクティスを組織内に適用する」という通常のインナーソースの説明は、オープンソースのバックグラウンドがない人々にはうまく機能しません。 解決策として、インナーソースの最も重要な原則を文書化し広く公開しましょう。
-* [実験として始める](../../translation/ja/patterns/start-as-experiment.md) - インナーソースイニシアチブを期間限定の実験として開始し、インナーソースに慣れていないマネージャーがイニシアチブを承認およびサポートしやすくします。
+
+**インナーソースを拡大させよう!**
+
+**インナーソースの拡大を評価するには?**
+
* [成熟度モデル](../../translation/ja/patterns/maturity-model.md) - チームはインナーソースを採用し始めました。このプラクティスは、複数の部門に広がっています。しかし、インナーソースプロジェクトを構成する概念への理解は様々です。解決策は、チームがセルフチェックを経て、まだ気づいていないパターンやプラクティスを発見できるよう、成熟度モデルを提供することです。
+
+**インナーソースプロジェクトを持続的に成長させていくためには?**
+
* [持続可能な成長のためのエクステンション](../../translation/ja/patterns/extensions-for-sustainable-growth.md) - インナーソースプロジェクトは多くのコントリビューションを受けており、メンテナンスが難しくなっています。メンテナは、プロジェクトのコア部分から離れた拡張機構を提供することで、最小のコストとメンテナンスオーバーヘッドでプロジェクトの能力をスケールアップすることを可能にします。
-* [正式なコミュニティリーダー](../../translation/ja/patterns/dedicated-community-leader.md) - インナーソースの取り組みを成功させるために、コミュニケーションとテクニカルの両方のスキルを持つ人をコミュニティのリーダーとして選ぶ。
-## 付録
+## Appendix
* [パターンテンプレート](../../meta/pattern-template.md)
* その他
* [README テンプレート](../../translation/ja/templates/README-template.md)
* [CONTRIBUTING テンプレート](../../translation/ja/templates/CONTRIBUTING-template.md)
-## リソース
+## Resources
* [GitHub](https://github.com/InnerSourceCommons/InnerSourcePatterns)
* [InnerSource Commons](http://innersourcecommons.org)
diff --git a/book/ja/toc_template.md b/book/ja/toc_template.md
index 0bc3a7019..2e02fb037 100644
--- a/book/ja/toc_template.md
+++ b/book/ja/toc_template.md
@@ -17,18 +17,91 @@ Instead edit toc_template.md

-## パターン
+## パターン
-<>
+
+
+**何から準備する?**
+
+* [実験として始める](../../translation/ja/patterns/start-as-experiment.md) - インナーソースイニシアチブを期間限定の実験として開始し、インナーソースに慣れていないマネージャーがイニシアチブを承認およびサポートしやすくします。
+
+* [正式なコミュニティリーダー](../../translation/ja/patterns/dedicated-community-leader.md) - インナーソースの取り組みを成功させるために、コミュニケーションとテクニカルの両方のスキルを持つ人をコミュニティのリーダーとして選ぶ。
+
+* [基本原則ガイダンスの文書化](../../translation/ja/patterns/document-your-guiding-principles.md) - 「オープンソースのベストプラクティスを組織内に適用する」という通常のインナーソースの説明は、オープンソースのバックグラウンドがない人々にはうまく機能しません。 解決策として、インナーソースの最も重要な原則を文書化し広く公開しましょう。
+
+**README.md、CONTRIBUTING.md、コミュニケーションツールなど用意するには?**
+
+* [スタンダード・ベース・ドキュメンテーション](../../translation/ja/patterns/base-documentation.md) - インナーソースプロジェクトへの新しいコントリビューターは、誰がプロジェクトを維持し、何に取り組み、どのようにコントリビューションすればよいかを理解するのに苦労しています。README.md/CONTRIBUTING.md のような標準ファイルでドキュメントを提供することで、新しいコントリビューターのためのセルフサービスなプロセスを可能にし、よくある質問に対する答えを自分自身で見つけることができるようにします。
+
+* [コミュニケーションツーリング](../../translation/ja/patterns/communication-tooling.md) - インナーソースのプロジェクトは、開発チームの外で使用されていますが、ユーザーはヘルプを得たり、プロジェクトチームと連絡を取ったりするのに苦労しています。 このアイデアは、ディスカッションが可視化され、アーカイブされ、検索可能になることを可能にする標準的なコミュニケーションツールを設定し、文書化することです。
+
+* [イシュートラッカーの使い方を多様化する](../../translation/ja/patterns/issue-tracker.md) - インナーソースのホストチームは、計画や進捗だけでなく、変更の背景も透明化することができていません。これは、プロジェクトのイシュートラッカーのユースケースを増やし、ブレーンストーミング、実装の議論、機能設計にも使えるようにすることで解決することができます。
+
+**インナーソースを本格導入しよう!**
+
+**インナーソースの価値を評価するには?**
+
+* [クロスチームプロジェクト評価](../../translation/ja/patterns/crossteam-project-valuation.md) - 会社の収益に直接的な影響を提供していないクロスチームのインナーソースプロジェクトの価値を評価して社内に売り込むことは困難です。 ここでは、あなたのプロジェクトの価値を明確に表現し、それを大きくするためのデータ駆動型の方法を紹介します。
+
+**感謝を伝えるには?**
+
+* [コントリビューションの功労を称える](../../translation/ja/patterns/praise-participants.md) - インナーソースのコントリビューションの後、その時間と努力に対してコントリビューターに感謝することは重要です。 このパターンは、コントリビューションを効果的に認めるだけでなく、コントリビューターや他の人たちのさらなる関与を引き出すためのガイダンスを提供します。
+
+**技術的な問題に対しては?**
+
+* [共通要件](../../translation/ja/patterns/common-requirements.md) - 共有リポジトリにある共通のコードは、それを使いたいすべてのプロジェクトチームのニーズを満たしていません。これは、要件の調整とリファクタリングによって解決されます。
+
+* [サービス対ライブラリ](../../translation/ja/patterns/service-vs-library.md) - DevOps環境のチームは、サービスのダウンタイムに対応する責任が誰にあるのかが曖昧になるため、チームの境界を越えて共通のコードベースで作業することに消極的になる場合があります。解決策としては、同じサービスを独立した環境で展開し、サービスダウン時のエスカレーション・チェーンを別々に構築するか、多くの共有コードを1つのライブラリに集約し、その上で共同作業を行うことが挙げられます。
+
+* [コアチーム](../../translation/ja/patterns/core-team.md) - インナーソースのプロジェクトが広く必要とされていても、プロジェクトが難しいためにコントリビューションや活用に支障をきたす場合があります。プロジェクトの基本的な項目を専門に担当するコアチームを設立してください。コアチームの作業により、コントリビューターは自分のシナリオに価値をもたらす機能を追加し、使用することができます。
+
+**組織的な挑戦の仕方は?**
+
+* [コントラクトコントリビューター](../../translation/ja/patterns/contracted-contributor.md) - インナーソースにコントリビュートしたい社員がいますが、彼らの直属の上司はその活動に抵抗を示しています。正式な契約と合意をすることによって救済することができるかもしれません。
+
+* [30日の保証期間](../../translation/ja/patterns/30-day-warranty.md) - 自分のチーム以外からのコントリビューションを受け入れる場合、チームが書いていないコードの責任を持つことに抵抗があることは自然なことでしょう。 「30日の保証期間」プラクティスを利用すると、コードにコントリビュートしたチームはコードを受け取ったチームに対してバグフィックスを提供することを承諾することになります。 そうすることで、両チーム間の信頼度が高まり、コントリビューションが受け入れられる可能性が高くなります。
+
+* [レビュー委員会](../../translation/ja/patterns/review-committee.md) - インナーソースの作業モデルは、開発者と管理者のための、より伝統的なアプローチからの抜本的な変革です。インナーソースイニシアチブとそれに参加するビジネスユニットのすべてのシニアマネージャーの間のインタフェースとしてレビュー委員会を確立することにより、マイクロマネジメントを助長することなく、監視と制御の一定レベルを与えるように、イニシアチブに慣れ親しみ、それをサポートできるようになる可能性が高くなります。
+
+* [トラステッドコミッター](../../translation/ja/patterns/trusted-committer.md) - 多くのInnerSourceプロジェクトは、コントリビューターからフィードバック、機能、バグフィックスを一貫して受け取る状況にあります。このような状況で、プロジェクトのメンテナーは、単一のコントリビューションを越えてコントリビューターの仕事を認識し、報酬を与える方法を模索します。
+
+* [RFCを用いたチーム横断的な意思決定の透明化](../../translation/ja/patterns/transparent-cross-team-decision-making-using-rfcs.md) - 高い参加率を達成し、関係者全員にとって最良の意思決定を行いたいインナーソースプロジェクトは、ソフトウェアのライフサイクル全体を通して参加型のシステムを構築する方法を見つける必要があります。内部のRFC(Requests for Comments)ドキュメントを公開することで、設計プロセスの早い段階から議論を行うことができ、関係者全員が高いコミットメントを持ってソリューションを構築できる可能性が高まります。
+
+**インナーソースライセンスとは?**
+
+* [インナーソースライセンス](../../translation/ja/patterns/innersource-license.md) - 同じ組織に属する2つの法人は、ソフトウェアのソースコードを互いに共有したいと考えていますが、法的責任や会社間の会計処理の観点からの影響を懸念しています。
+
+**インナーソースを成長させよう!**
+
+**組織内のインナーソースを探しやすくするには?**
+
+* [ギグマーケットプレイス](../../translation/ja/patterns/gig-marketplace.md) - イントラネットのウェブサイトを作成し、特定のインナーソースプロジェクトのニーズを、時間とスキルの要件を明示した「ギグ」としてリストアップすることで、マーケットプレイスを確立する。 これにより、管理者がインナーソースのコントリビューションを行うための承認を与え可能性が増え、従業員の時間のコミットメントと専門的な利点をよりよく理解することができます。
+
+* [インナーソースポータル](../../translation/ja/patterns/innersource-portal.md) - 潜在的なコントリビューターは、彼らが興味を持っているインナーソースプロジェクトを簡単に見つけることができません。すべての利用可能なインナーソースプロジェクトの情報をインデックス化するイントラネットのウェブサイトを作成することにより、あなたはコントリビューターが彼らに興味があるかもしれないプロジェクトについて知ることができ、インナーソースプロジェクトのオーナーは、外部のオーディエンスを引き付けることができます。
+
+* [リポジトリアクティビティスコア](../../translation/ja/patterns/repository-activity-score.md) - 潜在的なコントリビューターは、彼らの助けを必要とするアクティブなインナーソースプロジェクトを見つけたいと思っています。各プロジェクトのリポジトリのアクティビティスコアを計算することで、プロジェクトのランク付けされたリストを作成することができます (参考: インナーソースポータル )、そのため、潜在的コントリビューターは、彼らがコントリビュートしたいプロジェクトをより簡単に決定できます。
+
+**インナーソースを拡大させよう!**
+
+**インナーソースの拡大を評価するには?**
+
+* [成熟度モデル](../../translation/ja/patterns/maturity-model.md) - チームはインナーソースを採用し始めました。このプラクティスは、複数の部門に広がっています。しかし、インナーソースプロジェクトを構成する概念への理解は様々です。解決策は、チームがセルフチェックを経て、まだ気づいていないパターンやプラクティスを発見できるよう、成熟度モデルを提供することです。
+
+**インナーソースプロジェクトを持続的に成長させていくためには?**
+
+* [持続可能な成長のためのエクステンション](../../translation/ja/patterns/extensions-for-sustainable-growth.md) - インナーソースプロジェクトは多くのコントリビューションを受けており、メンテナンスが難しくなっています。メンテナは、プロジェクトのコア部分から離れた拡張機構を提供することで、最小のコストとメンテナンスオーバーヘッドでプロジェクトの能力をスケールアップすることを可能にします。
+
+## Appendix
* [パターンテンプレート](../../meta/pattern-template.md)
* その他
* [README テンプレート](../../translation/ja/templates/README-template.md)
* [CONTRIBUTING テンプレート](../../translation/ja/templates/CONTRIBUTING-template.md)
-## リソース
+## Resources
* [GitHub](https://github.com/InnerSourceCommons/InnerSourcePatterns)
* [InnerSource Commons](http://innersourcecommons.org)
diff --git a/book/scripts/Gemfile b/book/scripts/Gemfile
index b6ad7dc6a..433c50155 100644
--- a/book/scripts/Gemfile
+++ b/book/scripts/Gemfile
@@ -4,4 +4,4 @@ source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
-gem 'commonmarker', "0.18.2"
+gem 'commonmarker', "0.23.10"
diff --git a/meta/boardreports/2020-12.md b/meta/boardreports/2020-12.md
index 54c08e1fd..32d050863 100644
--- a/meta/boardreports/2020-12.md
+++ b/meta/boardreports/2020-12.md
@@ -46,7 +46,7 @@
- Process existing content from pull requests and Google group into our repository
- Evaluate ideas to further facilitate collection of pattern content (e.g. through automation), channel ongoing discussions into pattern-work and attract more contributors, e.g. by lowering the barriers of entry for them.
- Onboard further trusted committers
-- Review the current list of trusted committers. Some of them don’t seem to be active anymore and likely receive a lot of github notifcations and emails from us that they don't need. (do we have an offboarding process for TCs?)
+- Review the current list of trusted committers. Some of them don’t seem to be active anymore and likely receive a lot of github notifications and emails from us that they don't need. (do we have an offboarding process for TCs?)
- Level up some patterns to higher maturity levels. e.g. the [InnerSource Portal](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/master/patterns/2-structured/innersource-portal.md) has multiple known instances and even a reference implementation now, so it could be brought to maturity "Validated" relatively easily.
## Last Committer Addition
diff --git a/meta/boardreports/2021-01.md b/meta/boardreports/2021-01.md
index 4447d4b02..b2d436666 100644
--- a/meta/boardreports/2021-01.md
+++ b/meta/boardreports/2021-01.md
@@ -60,7 +60,7 @@
- Level up some patterns to higher maturity levels. e.g. the [InnerSource Portal](https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/master/patterns/2-structured/innersource-portal.md) has multiple known instances and even a reference implementation now, so it could be brought to maturity "Validated" relatively easily.
- Process / Maintenance
- Onboard further trusted committers
- - Review the current list of trusted committers. Some of them don’t seem to be active anymore and likely receive a lot of github notifcations and emails from us that they don't need. (do we have an offboarding process for TCs?)
+ - Review the current list of trusted committers. Some of them don’t seem to be active anymore and likely receive a lot of github notifications and emails from us that they don't need. (do we have an offboarding process for TCs?)
- Process existing content from PRs and Google group into our repository (once that is done we can focus on the contribution process via the GitHub repo exclusively)
## Last Committer Addition
diff --git a/meta/pattern-drafts-with-ai.md b/meta/pattern-drafts-with-ai.md
new file mode 100644
index 000000000..0608cf779
--- /dev/null
+++ b/meta/pattern-drafts-with-ai.md
@@ -0,0 +1,36 @@
+# Drafting InnerSource Pattern with AI
+
+Our AI friends can help us to brainstorm and write new InnerSource patterns.
+Usual precaution should apply, as always with AI ;)
+
+## How to use this
+
+- Paste the below prompt into ChatGPT or your AI agent of choice.
+- Add a description of the **problem** you are looking to solve, as well as the intended **solution** (if you already have one in mind).
+- Let AI do its magic.
+- Then populate the missing sections and adapt the pattern manually as you see fit.
+- Finally, submit your work as a pull request to our repo. For more details on contributing, see our [Contributing Guide](../CONTRIBUTING.md).
+
+You might also want to instruct the AI to return the answer as a markdown file, that you can more easily copy and paste into a GitHub Pull Request.
+
+## Prompt
+
+```
+I want to write a new InnerSource Pattern.
+
+The pattern needs to follow this template:
+https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/meta/pattern-template.md
+
+Further instructions:
+- Each headline in the template starts a new section, with a distinct semantic purpose.
+- Therefore the names of the headlines should be kept as they are. The headlines in the final pattern should appear in the same order as in the template.
+- The value of these sections should be "TBD": Known Instances, Author
+- The value of the Status section should be "Initial".
+- These sections should be removed: Acknowledgments
+- The section "Related Patterns" should contain markdown links to relevant patterns from https://patterns.innersourcecommons.org, including an explanation of how these patterns relate to this new pattern.
+- The word "(optional)" should be removed from the headlines.
+
+This is the concept that I want to explain in the pattern:
+
+
+```
diff --git a/meta/pattern-system.md b/meta/pattern-system.md
index a3a473520..1f7be8ea5 100644
--- a/meta/pattern-system.md
+++ b/meta/pattern-system.md
@@ -78,12 +78,12 @@ our InnerSource pattern system.
Takashi Iba has published an article in the ACM Digital Library from PLoP 2016:
[A pattern language for creating pattern languages: 364 patterns for pattern
-mining, writing, and symbolizing](https://dl.acm.org/citation.cfm?id=3158175&CFID=831673585&CFTOKEN=74341142&qualifier=LU1011674)
+mining, writing, and symbolizing](https://dl.acm.org/doi/10.5555/3158161.3158175)
- for those without ACM DL access, there is [an earlier draft of the paper from
PLoP 2016](http://www.hillside.net/plop/2016/papers/three/26.3.pdf).
-## Candiate Classifications
+## Candidate Classifications
This section shall serve to collect individual proposals for systems of ISC
patterns. Contribute away ;)
@@ -196,7 +196,7 @@ talk "InnerSource 101 and The Apache Way"[1] as a way to characterize patterns:
* Community
* Meritocracy
-And in addition, this would have some ortogonal techniques to work on building
+And in addition, this would have some orthogonal techniques to work on building
a proper transparency (for instance) that could go from the infrastructure to
be used to monitoring the process and produce surveys, training and other
actions.
@@ -244,7 +244,7 @@ potential characterization based on the companies structure?
I like a lot of the other planes suggestions. Wanted to add one more - the point in the lifecycle of the InnerSource project. Does this pattern apply to:
-* Pre-launch (prepration to launch) an InnerSource project?
+* Pre-launch (preparation to launch) an InnerSource project?
* Launch (initial kick-off)?
* Initial growth?
* Broad adoption?
diff --git a/meta/pattern-template.md b/meta/pattern-template.md
index 0464effe2..903fa7224 100644
--- a/meta/pattern-template.md
+++ b/meta/pattern-template.md
@@ -4,9 +4,10 @@ Short Title Here
## Patlet
-Concise 1-2 sentence description of the problem and solution.
-Readers may quickly review dozens of these patlets to discover and browse the larger library of patterns.
-From http://wiki.c2.com/?PatLet
+Concise 2 sentence description of the problem and solution.
+The 1st sentence describes the problem. The 2nd sentence describes the solution.
+Readers may quickly review dozens of these patlets (aka summaries) to discover and browse the larger library of patterns.
+From [http://wiki.c2.com/?PatLet](http://wiki.c2.com/?PatLet).
## Problem
@@ -82,5 +83,5 @@ Though optional, most patterns should list who helped in their creation.
## Alias (optional)
-If this pattern is also known under a different name than what is listed unter **Title**, please list those alternative titles here.
+If this pattern is also known under a different name than what is listed under **Title**, please list those alternative titles here.
e.g. if the pattern is named after the problem it solves, a helpful alias might be one that describes the solution that is applied.
diff --git a/pattern-categorization/README.md b/pattern-categorization/README.md
index eb79446cd..fda2576e8 100644
--- a/pattern-categorization/README.md
+++ b/pattern-categorization/README.md
@@ -14,7 +14,7 @@ In the mind map you will see patterns categorized from left to right in increasi
graph LR
L0(L0 InnerSource Program) --> L1(L1 Phase) --> L2(L2 Problem Category)
L2(L2 Problem Category) --> L3(L3 Specific Problem) --> L4("L4 Pattern (Solution)")
-````
+```
The logic for these levels is:
@@ -35,7 +35,7 @@ To test your changes locally, you can also generate the mind map yourself like t
We are using `node 20.x` at the moment.
```
-# install the markmap CLI
+# install the required dependencies (including the markmap CLI)
npm install -g markmap-cli
# then generate the mindmap (it will open in your browser automatically)
diff --git a/pattern-categorization/es/innersource-program-mind-map.html b/pattern-categorization/es/innersource-program-mind-map.html
index 0569c543f..f76f7cbb1 100644
--- a/pattern-categorization/es/innersource-program-mind-map.html
+++ b/pattern-categorization/es/innersource-program-mind-map.html
@@ -1,32 +1,43 @@
-
+
-
-
-
+
+
+
Markmap
-
+ if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
+ document.documentElement.classList.add("markmap-dark");
+ }
+ })(() => window.markmap,null,{"content":"Programa InnerSource","children":[{"content":"Comenzar","children":[{"content":"Configuración del Programa","children":[{"content":"La gerencia duda en invertir en InnerSource","children":[{"content":"Comenzar como un Experimento","children":[],"payload":{"tag":"h5","lines":"8,9"}}],"payload":{"tag":"h4","lines":"6,7"}},{"content":"El crecimiento lento de la comunidad obstaculiza InnerSource","children":[{"content":"Líder de Comunidad Dedicado","children":[],"payload":{"tag":"h5","lines":"12,13"}}],"payload":{"tag":"h4","lines":"10,11"}},{"content":"Los principios de InnerSource no son intuitivos para todos","children":[{"content":"Documenta tus Principios Rectores","children":[],"payload":{"tag":"h5","lines":"16,17"}}],"payload":{"tag":"h4","lines":"14,15"}}],"payload":{"tag":"h3","lines":"4,5"}},{"content":"Configuración del Proyecto","children":[{"content":"Difícil evaluar un proyecto rápidamente","children":[{"content":"Documentación Base Estándar","children":[],"payload":{"tag":"h5","lines":"22,23"}}],"payload":{"tag":"h4","lines":"20,21"}},{"content":"La comunicación ad-hoc obstaculiza el crecimiento del proyecto","children":[{"content":"Herramientas de Comunicación","children":[],"payload":{"tag":"h5","lines":"26,27"}}],"payload":{"tag":"h4","lines":"24,25"}},{"content":"Hoja de ruta y dirección del proyecto no transparentes","children":[{"content":"Casos de Uso del Gestor de Tareas","children":[],"payload":{"tag":"h5","lines":"30,31"}}],"payload":{"tag":"h4","lines":"28,29"}}],"payload":{"tag":"h3","lines":"18,19"}}],"payload":{"tag":"h2","lines":"2,3"}},{"content":"Adoptar","children":[{"content":"Desafíos de Valoración","children":[{"content":"Cómo medir el valor comercial de un proyecto","children":[{"content":"Valoración de Proyectos Transversales","children":[],"payload":{"tag":"h5","lines":"38,39"}}],"payload":{"tag":"h4","lines":"36,37"}},{"content":"¿Podemos confiar en el proyecto por un período prolongado?","children":[{"content":"Proceso Estándar de Publicación","children":[],"payload":{"tag":"h5","lines":"42,43"}},{"content":"Documentación Base Estándar","children":[],"payload":{"tag":"h5","lines":"44,45"}}],"payload":{"tag":"h4","lines":"40,41"}}],"payload":{"tag":"h3","lines":"34,35"}},{"content":"Desafíos Culturales","children":[{"content":"Esfuerzo no reconocido","children":[{"content":"Reconocimiento a los Participantes","children":[],"payload":{"tag":"h5","lines":"50,51"}},{"content":"Trusted Committer","children":[],"payload":{"tag":"h5","lines":"52,53"}}],"payload":{"tag":"h4","lines":"48,49"}}],"payload":{"tag":"h3","lines":"46,47"}},{"content":"Desafíos Técnicos","children":[{"content":"No satisfacer las necesidades de todos","children":[{"content":"Requerimientos Comunes","children":[],"payload":{"tag":"h5","lines":"58,59"}}],"payload":{"tag":"h4","lines":"56,57"}},{"content":"Miedo a la responsabilidad compartida de soporte","children":[{"content":"Servicio vs Librería","children":[],"payload":{"tag":"h5","lines":"62,63"}}],"payload":{"tag":"h4","lines":"60,61"}},{"content":"Proyecto difícil de contribuir y usar","children":[{"content":"Equipo Central","children":[],"payload":{"tag":"h5","lines":"66,67"}}],"payload":{"tag":"h4","lines":"64,65"}}],"payload":{"tag":"h3","lines":"54,55"}},{"content":"Desafíos Organizacionales","children":[{"content":"Desaliento de recursos para contribuir","children":[{"content":"Colaborador Contratado","children":[],"payload":{"tag":"h5","lines":"72,73"}}],"payload":{"tag":"h4","lines":"70,71"}},{"content":"Rechazo a aceptar contribuciones","children":[{"content":"Garantía de 30 Días","children":[],"payload":{"tag":"h5","lines":"76,77"}}],"payload":{"tag":"h4","lines":"74,75"}},{"content":"Cambio radical de gestión","children":[{"content":"Comité de Revisión","children":[],"payload":{"tag":"h5","lines":"80,81"}}],"payload":{"tag":"h4","lines":"78,79"}},{"content":"Miedo a la responsabilidad compartida de soporte","children":[{"content":"Servicio vs Librería","children":[],"payload":{"tag":"h5","lines":"84,85"}}],"payload":{"tag":"h4","lines":"82,83"}},{"content":"No hay suficientes mantenedores para escalar","children":[{"content":"Trusted Committer","children":[],"payload":{"tag":"h5","lines":"88,89"}}],"payload":{"tag":"h4","lines":"86,87"}},{"content":"Difícil coordinación entre equipos","children":[{"content":"Toma de Decisiones Transparente entre Equipos usando RFCs","children":[],"payload":{"tag":"h5","lines":"92,93"}}],"payload":{"tag":"h4","lines":"90,91"}},{"content":"Proyecto sin propietario/mantenedor","children":[{"content":"Equipo Central","children":[],"payload":{"tag":"h5","lines":"96,97"}},{"content":"Grupo de Soporte","children":[],"payload":{"tag":"h5","lines":"98,99"}}],"payload":{"tag":"h4","lines":"94,95"}}],"payload":{"tag":"h3","lines":"68,69"}},{"content":"Desafíos entre Entidades Legales","children":[{"content":"Preocupación por responsabilidades legales o contabilidad entre empresas","children":[{"content":"Licencia InnerSource","children":[],"payload":{"tag":"h5","lines":"104,105"}}],"payload":{"tag":"h4","lines":"102,103"}}],"payload":{"tag":"h3","lines":"100,101"}}],"payload":{"tag":"h2","lines":"32,33"}},{"content":"Crecer","children":[{"content":"Desafíos de Descubrimiento","children":[{"content":"No se pueden encontrar proyectos coincidentes","children":[{"content":"Mercado de Gigs","children":[],"payload":{"tag":"h5","lines":"112,113"}},{"content":"Portal InnerSource","children":[],"payload":{"tag":"h5","lines":"114,115"}}],"payload":{"tag":"h4","lines":"110,111"}},{"content":"Difícil encontrar proyectos activos","children":[{"content":"Puntuación de Actividad del Repositorio","children":[],"payload":{"tag":"h5","lines":"118,119"}}],"payload":{"tag":"h4","lines":"116,117"}}],"payload":{"tag":"h3","lines":"108,109"}}],"payload":{"tag":"h2","lines":"106,107"}},{"content":"Escalar","children":[{"content":"Desafíos de Autoeducación/Mejora","children":[{"content":"No estar al tanto de las mejores prácticas de InnerSource","children":[{"content":"Modelo de Madurez","children":[],"payload":{"tag":"h5","lines":"126,127"}}],"payload":{"tag":"h4","lines":"124,125"}},{"content":"Falta de conocimiento de código abierto","children":[{"content":"Documenta tus Principios Rectores","children":[],"payload":{"tag":"h5","lines":"130,131"}}],"payload":{"tag":"h4","lines":"128,129"}}],"payload":{"tag":"h3","lines":"122,123"}},{"content":"Desafíos Técnicos","children":[{"content":"Aumento de la sobrecarga de mantenimiento","children":[{"content":"Extensiones para un Crecimiento Sostenible","children":[],"payload":{"tag":"h5","lines":"136,137"}}],"payload":{"tag":"h4","lines":"134,135"}}],"payload":{"tag":"h3","lines":"132,133"}}],"payload":{"tag":"h2","lines":"120,121"}}],"payload":{"tag":"h1","lines":"0,1"}},null)
diff --git a/pattern-categorization/es/innersource-program-mind-map.png b/pattern-categorization/es/innersource-program-mind-map.png
index 875bf8ae9..b28152956 100644
Binary files a/pattern-categorization/es/innersource-program-mind-map.png and b/pattern-categorization/es/innersource-program-mind-map.png differ
diff --git a/pattern-categorization/gl/innersource-program-mind-map.html b/pattern-categorization/gl/innersource-program-mind-map.html
index 3bbec6851..e423ecdbe 100644
--- a/pattern-categorization/gl/innersource-program-mind-map.html
+++ b/pattern-categorization/gl/innersource-program-mind-map.html
@@ -1,32 +1,43 @@
-
+
-
-
-
+
+
+
Markmap
-
+ if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
+ document.documentElement.classList.add("markmap-dark");
+ }
+ })(() => window.markmap,null,{"content":"Programa InnerSource","children":[{"content":"Comezo","children":[{"content":"Configuración do programa","children":[{"content":"O persoal directivo dubida se apostar por InnerSource","children":[{"content":"Comezar como un experimento","children":[],"payload":{"tag":"h5","lines":"8,9"}}],"payload":{"tag":"h4","lines":"6,7"}},{"content":"O crecemento lento da comunidade é unha rémora para InnerSource","children":[{"content":"Líder da comunidade experto en InnerSource","children":[],"payload":{"tag":"h5","lines":"12,13"}}],"payload":{"tag":"h4","lines":"10,11"}},{"content":"Os principios InnerSource non son intuitivos para todos","children":[{"content":"Documente os seus principios reitores","children":[],"payload":{"tag":"h5","lines":"16,17"}}],"payload":{"tag":"h4","lines":"14,15"}}],"payload":{"tag":"h3","lines":"4,5"}},{"content":"Organización do proxecto","children":[{"content":"É difícil avaliar rapidamente un proxecto","children":[{"content":"Documentación base estándar","children":[],"payload":{"tag":"h5","lines":"22,23"}}],"payload":{"tag":"h4","lines":"20,21"}},{"content":"A comunicación ad-hoc obstaculiza o crecemento do proxecto","children":[{"content":"Ferramentas de comunicación","children":[],"payload":{"tag":"h5","lines":"26,27"}}],"payload":{"tag":"h4","lines":"24,25"}},{"content":"A folla de ruta e dirección do proxecto son pouco transparentes","children":[{"content":"Casos de uso cun sistema de seguimento de incidencias","children":[],"payload":{"tag":"h5","lines":"30,31"}}],"payload":{"tag":"h4","lines":"28,29"}}],"payload":{"tag":"h3","lines":"18,19"}}],"payload":{"tag":"h2","lines":"2,3"}},{"content":"Aplicación","children":[{"content":"Desafíos da valoración","children":[{"content":"Como medir o valor dun proxecto empresarial","children":[{"content":"Valoración de proxectos entre equipos","children":[],"payload":{"tag":"h5","lines":"38,39"}}],"payload":{"tag":"h4","lines":"36,37"}}],"payload":{"tag":"h3","lines":"34,35"}},{"content":"Desafíos culturais","children":[{"content":"Esforzo non recoñecido","children":[{"content":"Agradecemento aos participantes","children":[],"payload":{"tag":"h5","lines":"44,45"}},{"content":"Trusted committer","children":[],"payload":{"tag":"h5","lines":"46,47"}}],"payload":{"tag":"h4","lines":"42,43"}}],"payload":{"tag":"h3","lines":"40,41"}},{"content":"Desafíos técnicos","children":[{"content":"Necesidades non satisfeitas para todos","children":[{"content":"Requisitos comúns","children":[],"payload":{"tag":"h5","lines":"52,53"}}],"payload":{"tag":"h4","lines":"50,51"}},{"content":"Medo á responsabilidade compartida de soporte","children":[{"content":"Servizo vs. Libraría","children":[],"payload":{"tag":"h5","lines":"56,57"}}],"payload":{"tag":"h4","lines":"54,55"}},{"content":"Contribucións ao proxecto difíciles de facer e empregar","children":[{"content":"Core team","children":[],"payload":{"tag":"h5","lines":"60,61"}}],"payload":{"tag":"h4","lines":"58,59"}}],"payload":{"tag":"h3","lines":"48,49"}},{"content":"Desafíos organizativos","children":[{"content":"Disuasión á contribución de recursos","children":[{"content":"Contracted contributor","children":[],"payload":{"tag":"h5","lines":"66,67"}}],"payload":{"tag":"h4","lines":"64,65"}},{"content":"Rexeitamento dunha contribución aceptada","children":[{"content":"Garantía de 30 días","children":[],"payload":{"tag":"h5","lines":"70,71"}}],"payload":{"tag":"h4","lines":"68,69"}},{"content":"Cambio radical da xestión","children":[{"content":"Comité de revisión","children":[],"payload":{"tag":"h5","lines":"74,75"}}],"payload":{"tag":"h4","lines":"72,73"}},{"content":"Medo á responsabilidade compartida de soporte","children":[{"content":"Servizo vs. Libraría","children":[],"payload":{"tag":"h5","lines":"78,79"}}],"payload":{"tag":"h4","lines":"76,77"}},{"content":"Número de mantedores insuficiente para a escalada do proxecto","children":[{"content":"Trusted committer","children":[],"payload":{"tag":"h5","lines":"82,83"}}],"payload":{"tag":"h4","lines":"80,81"}},{"content":"Coordinación complexa entre equipos","children":[{"content":"Toma de decisións transparente entre equipos RFC","children":[],"payload":{"tag":"h5","lines":"86,87"}}],"payload":{"tag":"h4","lines":"84,85"}},{"content":"Proxecto orfo","children":[{"content":"Core team","children":[],"payload":{"tag":"h5","lines":"90,91"}},{"content":"Soporte grupal","children":[],"payload":{"tag":"h5","lines":"92,93"}}],"payload":{"tag":"h4","lines":"88,89"}}],"payload":{"tag":"h3","lines":"62,63"}},{"content":"Desafíos entre entidades xurídicas","children":[{"content":"Preocupación polas responsabilidades xurídicas ou a contabilidade entre empresas","children":[{"content":"Licenza InnerSource","children":[],"payload":{"tag":"h5","lines":"98,99"}}],"payload":{"tag":"h4","lines":"96,97"}}],"payload":{"tag":"h3","lines":"94,95"}}],"payload":{"tag":"h2","lines":"32,33"}},{"content":"Crecemento","children":[{"content":"Desafíos de dispoñibilidade","children":[{"content":"Dificultade para atopar ao desenvolvedor axeitado para cada proxecto","children":[{"content":"Gig marketplace","children":[],"payload":{"tag":"h5","lines":"106,107"}},{"content":"Portal InnerSource","children":[],"payload":{"tag":"h5","lines":"108,109"}}],"payload":{"tag":"h4","lines":"104,105"}},{"content":"Dificultade para atopar proxectos activos","children":[{"content":"Cualificación da actividade do repositorio","children":[],"payload":{"tag":"h5","lines":"112,113"}}],"payload":{"tag":"h4","lines":"110,111"}}],"payload":{"tag":"h3","lines":"102,103"}}],"payload":{"tag":"h2","lines":"100,101"}},{"content":"Escalada","children":[{"content":"Autoaprendizaxe/Desafíos de mellora","children":[{"content":"Descoñecemento das mellores prácticas InnerSource","children":[{"content":"Modelo de madurez","children":[],"payload":{"tag":"h5","lines":"120,121"}}],"payload":{"tag":"h4","lines":"118,119"}},{"content":"Falta de coñecemento sobre código aberto","children":[{"content":"Documente os seus principios reitores","children":[],"payload":{"tag":"h5","lines":"124,125"}}],"payload":{"tag":"h4","lines":"122,123"}}],"payload":{"tag":"h3","lines":"116,117"}},{"content":"Desafíos técnicos","children":[{"content":"Aumento dos gastos de mantemento","children":[{"content":"Extensións para o crecemento sostible","children":[],"payload":{"tag":"h5","lines":"130,131"}}],"payload":{"tag":"h4","lines":"128,129"}}],"payload":{"tag":"h3","lines":"126,127"}}],"payload":{"tag":"h2","lines":"114,115"}}],"payload":{"tag":"h1","lines":"0,1"}},null)
diff --git a/pattern-categorization/gl/innersource-program-mind-map.png b/pattern-categorization/gl/innersource-program-mind-map.png
index e5f4041b0..a01eb09c9 100644
Binary files a/pattern-categorization/gl/innersource-program-mind-map.png and b/pattern-categorization/gl/innersource-program-mind-map.png differ
diff --git a/pattern-categorization/innersource-program-mind-map.html b/pattern-categorization/innersource-program-mind-map.html
index 26ecf063e..fc64591e0 100644
--- a/pattern-categorization/innersource-program-mind-map.html
+++ b/pattern-categorization/innersource-program-mind-map.html
@@ -1,32 +1,43 @@
-
+
-
-
-
+
+
+
Markmap
-
+ if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
+ document.documentElement.classList.add("markmap-dark");
+ }
+ })(() => window.markmap,null,{"content":"InnerSource Program","children":[{"content":"Begin","children":[{"content":"Program Setup","children":[{"content":"Management hesitates to invest in InnerSource","children":[{"content":"Start as an Experiment","children":[],"payload":{"tag":"h5","lines":"8,9"}}],"payload":{"tag":"h4","lines":"6,7"}},{"content":"Slow community growth hinders InnerSource","children":[{"content":"Dedicated Community Leader","children":[],"payload":{"tag":"h5","lines":"12,13"}}],"payload":{"tag":"h4","lines":"10,11"}},{"content":"InnerSource principles are not intuitive for everybody","children":[{"content":"Document your Guiding Principles","children":[],"payload":{"tag":"h5","lines":"16,17"}}],"payload":{"tag":"h4","lines":"14,15"}}],"payload":{"tag":"h3","lines":"4,5"}},{"content":"Project Setup","children":[{"content":"Hard to assess a project quickly","children":[{"content":"Standard Base Documentation","children":[],"payload":{"tag":"h5","lines":"22,23"}}],"payload":{"tag":"h4","lines":"20,21"}},{"content":"Ad-hoc communication hinders project growth","children":[{"content":"Communication Tooling","children":[],"payload":{"tag":"h5","lines":"26,27"}}],"payload":{"tag":"h4","lines":"24,25"}},{"content":"Intransparent roadmap and direction of the project","children":[{"content":"Issue Tracker Use Cases","children":[],"payload":{"tag":"h5","lines":"30,31"}}],"payload":{"tag":"h4","lines":"28,29"}},{"content":"Language around project governance is ambiguous","children":[{"content":"Explicit Governance Levels","children":[],"payload":{"tag":"h5","lines":"34,35"}}],"payload":{"tag":"h4","lines":"32,33"}}],"payload":{"tag":"h3","lines":"18,19"}}],"payload":{"tag":"h2","lines":"2,3"}},{"content":"Adopt","children":[{"content":"Valuation Challenges","children":[{"content":"How to measure a project's business value","children":[{"content":"Cross-Team Project Valuation","children":[],"payload":{"tag":"h5","lines":"42,43"}}],"payload":{"tag":"h4","lines":"40,41"}},{"content":"Can we rely on the project for an extended period?","children":[{"content":"Standard Release Process","children":[],"payload":{"tag":"h5","lines":"46,47"}},{"content":"Standard Base Documentation","children":[],"payload":{"tag":"h5","lines":"48,49"}}],"payload":{"tag":"h4","lines":"44,45"}}],"payload":{"tag":"h3","lines":"38,39"}},{"content":"Cultural Challenges","children":[{"content":"Unrecognized effort","children":[{"content":"Praise Participants","children":[],"payload":{"tag":"h5","lines":"54,55"}},{"content":"Trusted Committer","children":[],"payload":{"tag":"h5","lines":"56,57"}}],"payload":{"tag":"h4","lines":"52,53"}}],"payload":{"tag":"h3","lines":"50,51"}},{"content":"Technical Challenges","children":[{"content":"Not meeting everyone's needs","children":[{"content":"Common Requirements","children":[],"payload":{"tag":"h5","lines":"62,63"}}],"payload":{"tag":"h4","lines":"60,61"}},{"content":"Fear of shared support responsibility","children":[{"content":"Service vs. Library","children":[],"payload":{"tag":"h5","lines":"66,67"}}],"payload":{"tag":"h4","lines":"64,65"}},{"content":"Project is difficult to contribute to and use","children":[{"content":"Core Team","children":[],"payload":{"tag":"h5","lines":"70,71"}}],"payload":{"tag":"h4","lines":"68,69"}}],"payload":{"tag":"h3","lines":"58,59"}},{"content":"Organizational Challenges","children":[{"content":"Discouragement of contributing resource","children":[{"content":"Contracted Contributor","children":[],"payload":{"tag":"h5","lines":"76,77"}}],"payload":{"tag":"h4","lines":"74,75"}},{"content":"Rejection of accepting contribution","children":[{"content":"30 Day Warranty","children":[],"payload":{"tag":"h5","lines":"80,81"}}],"payload":{"tag":"h4","lines":"78,79"}},{"content":"Radical change of management","children":[{"content":"Review Committee","children":[],"payload":{"tag":"h5","lines":"84,85"}}],"payload":{"tag":"h4","lines":"82,83"}},{"content":"Fear of shared support responsibility","children":[{"content":"Service vs. Library","children":[],"payload":{"tag":"h5","lines":"88,89"}}],"payload":{"tag":"h4","lines":"86,87"}},{"content":"Not enough maintainers to scale","children":[{"content":"Trusted Committer","children":[],"payload":{"tag":"h5","lines":"92,93"}}],"payload":{"tag":"h4","lines":"90,91"}},{"content":"Difficult cross-team coordination","children":[{"content":"Transparent Cross-Team Decision Making using RFCs","children":[],"payload":{"tag":"h5","lines":"96,97"}}],"payload":{"tag":"h4","lines":"94,95"}},{"content":"Level of influence for contributing teams is unclear","children":[{"content":"Explicit Governance Levels","children":[],"payload":{"tag":"h5","lines":"100,101"}}],"payload":{"tag":"h4","lines":"98,99"}},{"content":"Project without an owner/maintainer","children":[{"content":"Core Team","children":[],"payload":{"tag":"h5","lines":"104,105"}},{"content":"Group Support","children":[],"payload":{"tag":"h5","lines":"106,107"}}],"payload":{"tag":"h4","lines":"102,103"}}],"payload":{"tag":"h3","lines":"72,73"}},{"content":"Cross Legal Entities Challenges","children":[{"content":"Concern on legal liabilities or cross-company accounting","children":[{"content":"InnerSource License","children":[],"payload":{"tag":"h5","lines":"112,113"}}],"payload":{"tag":"h4","lines":"110,111"}}],"payload":{"tag":"h3","lines":"108,109"}}],"payload":{"tag":"h2","lines":"36,37"}},{"content":"Grow","children":[{"content":"Discovery Challenges","children":[{"content":"Can't find matching projects","children":[{"content":"Gig Marketplace","children":[],"payload":{"tag":"h5","lines":"120,121"}},{"content":"InnerSource Portal","children":[],"payload":{"tag":"h5","lines":"122,123"}}],"payload":{"tag":"h4","lines":"118,119"}},{"content":"Difficult to find active projects","children":[{"content":"Repository Activity Score","children":[],"payload":{"tag":"h5","lines":"126,127"}}],"payload":{"tag":"h4","lines":"124,125"}}],"payload":{"tag":"h3","lines":"116,117"}}],"payload":{"tag":"h2","lines":"114,115"}},{"content":"Scale","children":[{"content":"Self Education/Improvement Challenges","children":[{"content":"Not aware of InnerSource best practices","children":[{"content":"Maturity Model","children":[],"payload":{"tag":"h5","lines":"134,135"}}],"payload":{"tag":"h4","lines":"132,133"}},{"content":"Lack of open source knowledge","children":[{"content":"Document your Guiding Principles","children":[],"payload":{"tag":"h5","lines":"138,139"}}],"payload":{"tag":"h4","lines":"136,137"}}],"payload":{"tag":"h3","lines":"130,131"}},{"content":"Technical Challenges","children":[{"content":"Increasing maintenance overhead","children":[{"content":"Extensions for Sustainable Growth","children":[],"payload":{"tag":"h5","lines":"144,145"}}],"payload":{"tag":"h4","lines":"142,143"}}],"payload":{"tag":"h3","lines":"140,141"}}],"payload":{"tag":"h2","lines":"128,129"}}],"payload":{"tag":"h1","lines":"0,1"}},null)
diff --git a/pattern-categorization/innersource-program-mind-map.md b/pattern-categorization/innersource-program-mind-map.md
index 6caf8f186..686c428d9 100644
--- a/pattern-categorization/innersource-program-mind-map.md
+++ b/pattern-categorization/innersource-program-mind-map.md
@@ -12,6 +12,10 @@
##### [Dedicated Community Leader](https://patterns.innersourcecommons.org/p/dedicated-community-leader)
+#### Engineers lack time and safe space to try InnerSource
+
+##### [InnerSource Hackathon](https://patterns.innersourcecommons.org/p/innersource-hackathon)
+
#### InnerSource principles are not intuitive for everybody
##### [Document your Guiding Principles](https://patterns.innersourcecommons.org/p/document-your-guiding-principles)
diff --git a/pattern-categorization/innersource-program-mind-map.png b/pattern-categorization/innersource-program-mind-map.png
index ddf9a119d..feb77cf3a 100644
Binary files a/pattern-categorization/innersource-program-mind-map.png and b/pattern-categorization/innersource-program-mind-map.png differ
diff --git a/pattern-categorization/package-lock.json b/pattern-categorization/package-lock.json
index 15aa08450..33ddc50fe 100644
--- a/pattern-categorization/package-lock.json
+++ b/pattern-categorization/package-lock.json
@@ -9,41 +9,39 @@
"version": "0.0.1",
"license": "ISC",
"dependencies": {
- "markmap-cli": ">=0.18.4",
- "optipng-bin": "^9.0.0"
+ "markmap-cli": ">=0.18.12",
+ "optipng-bin": "^9.0.0",
+ "pageres-cli": "^9.0.0"
}
},
"node_modules/@babel/code-frame": {
- "version": "7.26.2",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
- "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+ "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.25.9",
+ "@babel/helper-validator-identifier": "^7.27.1",
"js-tokens": "^4.0.0",
- "picocolors": "^1.0.0"
+ "picocolors": "^1.1.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/runtime": {
- "version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
- "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
+ "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
"license": "MIT",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
"engines": {
"node": ">=6.9.0"
}
@@ -57,10 +55,63 @@
"@babel/runtime": "^7.21.5"
}
},
+ "node_modules/@ghostery/adblocker": {
+ "version": "2.12.5",
+ "resolved": "https://registry.npmjs.org/@ghostery/adblocker/-/adblocker-2.12.5.tgz",
+ "integrity": "sha512-d9/zOt8MHG86vuEp7KLaSgjIrx43Vr272nbVacGjDV/ZAbrS2fIKhLb0MulJ/14fPjzYivNniquk8fiKt0wgNQ==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@ghostery/adblocker-content": "^2.12.5",
+ "@ghostery/adblocker-extended-selectors": "^2.12.5",
+ "@ghostery/url-parser": "^1.3.0",
+ "@remusao/guess-url-type": "^2.1.0",
+ "@remusao/small": "^2.1.0",
+ "@remusao/smaz": "^2.2.0",
+ "tldts-experimental": "^7.0.16"
+ }
+ },
+ "node_modules/@ghostery/adblocker-content": {
+ "version": "2.12.5",
+ "resolved": "https://registry.npmjs.org/@ghostery/adblocker-content/-/adblocker-content-2.12.5.tgz",
+ "integrity": "sha512-ZIBPWcJpxeWOfFMX63PVhO/sGaUUfHScP88WgdV3pOv5aWsskDMh3Niwa4CHZKqzHs8T1XJDfbLDK3DDXeEHpA==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@ghostery/adblocker-extended-selectors": "^2.12.5"
+ }
+ },
+ "node_modules/@ghostery/adblocker-extended-selectors": {
+ "version": "2.12.5",
+ "resolved": "https://registry.npmjs.org/@ghostery/adblocker-extended-selectors/-/adblocker-extended-selectors-2.12.5.tgz",
+ "integrity": "sha512-KPHe2QxgyNA7Ei8ndIiWH7h26DpXjtvDXv+D1EIsmjTYSitKd7roCz10Gy7vD4H88JjT/ABZwjnqLo2ZHPEC/Q==",
+ "license": "MPL-2.0"
+ },
+ "node_modules/@ghostery/adblocker-puppeteer": {
+ "version": "2.12.5",
+ "resolved": "https://registry.npmjs.org/@ghostery/adblocker-puppeteer/-/adblocker-puppeteer-2.12.5.tgz",
+ "integrity": "sha512-EPCbOy/YkolXrvaAqbY5+xDT+LqCRnvOv9FhYyGvQPPmahzqG3Ys0x1sqBhhNi66psgcCCi19YGLo951xFUZfQ==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "@ghostery/adblocker": "^2.12.5",
+ "@ghostery/adblocker-content": "^2.12.5",
+ "tldts-experimental": "^7.0.16"
+ },
+ "peerDependencies": {
+ "puppeteer": ">5"
+ }
+ },
+ "node_modules/@ghostery/url-parser": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ghostery/url-parser/-/url-parser-1.3.0.tgz",
+ "integrity": "sha512-FEzdSeiva0Mt3bR4xePFzthhjT4IzvA5QTvS1xXkNyLpMGeq40mb3V2fSs0ZItRaP9IybZthDfHUSbQ1HLdx4Q==",
+ "license": "MPL-2.0",
+ "dependencies": {
+ "tldts-experimental": "^7.0.8"
+ }
+ },
"node_modules/@hono/node-server": {
- "version": "1.13.7",
- "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.13.7.tgz",
- "integrity": "sha512-kTfUMsoloVKtRA2fLiGSd9qBddmru9KadNyhJCwgKBxTiNkaAJEwkVN9KV/rS4HtmmNRtUh6P+YpmjRMl0d9vQ==",
+ "version": "1.19.6",
+ "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.6.tgz",
+ "integrity": "sha512-Shz/KjlIeAhfiuE93NDKVdZ7HdBVLQAfdbaXEaoAVO3ic9ibRSLGIQGkcBbFyuLr+7/1D5ZCINM8B+6IvXeMtw==",
"license": "MIT",
"engines": {
"node": ">=18.14.1"
@@ -110,287 +161,139 @@
"node": ">=12"
}
},
- "node_modules/@sindresorhus/is": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
- "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@types/d3": {
- "version": "7.4.3",
- "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
- "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-array": "*",
- "@types/d3-axis": "*",
- "@types/d3-brush": "*",
- "@types/d3-chord": "*",
- "@types/d3-color": "*",
- "@types/d3-contour": "*",
- "@types/d3-delaunay": "*",
- "@types/d3-dispatch": "*",
- "@types/d3-drag": "*",
- "@types/d3-dsv": "*",
- "@types/d3-ease": "*",
- "@types/d3-fetch": "*",
- "@types/d3-force": "*",
- "@types/d3-format": "*",
- "@types/d3-geo": "*",
- "@types/d3-hierarchy": "*",
- "@types/d3-interpolate": "*",
- "@types/d3-path": "*",
- "@types/d3-polygon": "*",
- "@types/d3-quadtree": "*",
- "@types/d3-random": "*",
- "@types/d3-scale": "*",
- "@types/d3-scale-chromatic": "*",
- "@types/d3-selection": "*",
- "@types/d3-shape": "*",
- "@types/d3-time": "*",
- "@types/d3-time-format": "*",
- "@types/d3-timer": "*",
- "@types/d3-transition": "*",
- "@types/d3-zoom": "*"
- }
- },
- "node_modules/@types/d3-array": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz",
- "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-axis": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz",
- "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-brush": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz",
- "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-chord": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz",
- "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-color": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
- "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
- "license": "MIT"
- },
- "node_modules/@types/d3-contour": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz",
- "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-array": "*",
- "@types/geojson": "*"
- }
- },
- "node_modules/@types/d3-delaunay": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
- "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
- "license": "MIT"
- },
- "node_modules/@types/d3-dispatch": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz",
- "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==",
- "license": "MIT"
- },
- "node_modules/@types/d3-drag": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz",
- "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==",
- "license": "MIT",
+ "node_modules/@puppeteer/browsers": {
+ "version": "2.10.13",
+ "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.13.tgz",
+ "integrity": "sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==",
+ "license": "Apache-2.0",
"dependencies": {
- "@types/d3-selection": "*"
+ "debug": "^4.4.3",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.5.0",
+ "semver": "^7.7.3",
+ "tar-fs": "^3.1.1",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@types/d3-dsv": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz",
- "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==",
- "license": "MIT"
- },
- "node_modules/@types/d3-ease": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz",
- "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==",
- "license": "MIT"
- },
- "node_modules/@types/d3-fetch": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz",
- "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==",
- "license": "MIT",
- "dependencies": {
- "@types/d3-dsv": "*"
+ "node_modules/@puppeteer/browsers/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/@types/d3-force": {
- "version": "3.0.10",
- "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz",
- "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==",
- "license": "MIT"
+ "node_modules/@remusao/guess-url-type": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@remusao/guess-url-type/-/guess-url-type-2.1.0.tgz",
+ "integrity": "sha512-zI3dlTUxpjvx2GCxp9nLOSK5yEIqDCpxlAVGwb2Y49RKkS72oeNaxxo+VWS5+XQ5+Mf8Zfp9ZXIlk+G5eoEN8A==",
+ "license": "MPL-2.0"
},
- "node_modules/@types/d3-format": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz",
- "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==",
- "license": "MIT"
+ "node_modules/@remusao/small": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@remusao/small/-/small-2.1.0.tgz",
+ "integrity": "sha512-Y1kyjZp7JU7dXdyOdxHVNfoTr1XLZJTyQP36/esZUU/WRWq9XY0PV2HsE3CsIHuaTf4pvgWv2pvzvnZ//UHIJQ==",
+ "license": "MPL-2.0"
},
- "node_modules/@types/d3-geo": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz",
- "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==",
- "license": "MIT",
+ "node_modules/@remusao/smaz": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz/-/smaz-2.2.0.tgz",
+ "integrity": "sha512-eSd3Qs0ELP/e7tU1SI5RWXcCn9KjDgvBY+KtWbL4i2QvvHhJOfdIt4v0AA3S5BbLWAr5dCEC7C4LUfogDm6q/Q==",
+ "license": "MPL-2.0",
"dependencies": {
- "@types/geojson": "*"
+ "@remusao/smaz-compress": "^2.2.0",
+ "@remusao/smaz-decompress": "^2.2.0"
}
},
- "node_modules/@types/d3-hierarchy": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz",
- "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-interpolate": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
- "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
- "license": "MIT",
+ "node_modules/@remusao/smaz-compress": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz-compress/-/smaz-compress-2.2.0.tgz",
+ "integrity": "sha512-TXpTPgILRUYOt2rEe0+9PC12xULPvBqeMpmipzB9A7oM4fa9Ztvy9lLYzPTd7tiQEeoNa1pmxihpKfJtsxnM/w==",
+ "license": "MPL-2.0",
"dependencies": {
- "@types/d3-color": "*"
+ "@remusao/trie": "^2.1.0"
}
},
- "node_modules/@types/d3-path": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
- "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==",
- "license": "MIT"
- },
- "node_modules/@types/d3-polygon": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz",
- "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==",
- "license": "MIT"
- },
- "node_modules/@types/d3-quadtree": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz",
- "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==",
- "license": "MIT"
+ "node_modules/@remusao/smaz-decompress": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@remusao/smaz-decompress/-/smaz-decompress-2.2.0.tgz",
+ "integrity": "sha512-ERAPwxPaA0/yg4hkNU7T2S+lnp9jj1sApcQMtOyROvOQyo+Zuh6Hn/oRcXr8mmjlYzyRaC7E6r3mT1nrdHR6pg==",
+ "license": "MPL-2.0"
},
- "node_modules/@types/d3-random": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz",
- "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==",
- "license": "MIT"
+ "node_modules/@remusao/trie": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@remusao/trie/-/trie-2.1.0.tgz",
+ "integrity": "sha512-Er3Q8q0/2OcCJPQYJOPLmCuqO0wu7cav3SPtpjlxSbjFi1x+A1pZkkLD6c9q2rGEkGW/tkrRzfrhNMt8VQjzXg==",
+ "license": "MPL-2.0"
},
- "node_modules/@types/d3-scale": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
- "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
+ "node_modules/@sindresorhus/is": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
+ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==",
"license": "MIT",
- "dependencies": {
- "@types/d3-time": "*"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@types/d3-scale-chromatic": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz",
- "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==",
- "license": "MIT"
- },
- "node_modules/@types/d3-selection": {
- "version": "3.0.11",
- "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz",
- "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==",
+ "node_modules/@tootallnate/quickjs-emscripten": {
+ "version": "0.23.0",
+ "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+ "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
"license": "MIT"
},
- "node_modules/@types/d3-shape": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
- "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
+ "node_modules/@types/node": {
+ "version": "24.10.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
+ "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
"license": "MIT",
+ "optional": true,
"dependencies": {
- "@types/d3-path": "*"
+ "undici-types": "~7.16.0"
}
},
- "node_modules/@types/d3-time": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz",
- "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==",
- "license": "MIT"
- },
- "node_modules/@types/d3-time-format": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz",
- "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==",
- "license": "MIT"
- },
- "node_modules/@types/d3-timer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz",
- "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==",
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
"license": "MIT"
},
- "node_modules/@types/d3-transition": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz",
- "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==",
+ "node_modules/@types/yauzl": {
+ "version": "2.10.3",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+ "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
"license": "MIT",
+ "optional": true,
"dependencies": {
- "@types/d3-selection": "*"
+ "@types/node": "*"
}
},
- "node_modules/@types/d3-zoom": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz",
- "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==",
+ "node_modules/@vscode/markdown-it-katex": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@vscode/markdown-it-katex/-/markdown-it-katex-1.1.2.tgz",
+ "integrity": "sha512-+4IIv5PgrmhKvW/3LpkpkGg257OViEhXkOOgCyj5KMsjsOfnRXkni8XAuuF9Ui5p3B8WnUovlDXAQNb8RJ/RaQ==",
"license": "MIT",
"dependencies": {
- "@types/d3-interpolate": "*",
- "@types/d3-selection": "*"
+ "katex": "^0.16.4"
}
},
- "node_modules/@types/geojson": {
- "version": "7946.0.15",
- "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz",
- "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==",
- "license": "MIT"
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
- "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
- "license": "MIT"
- },
- "node_modules/@vscode/markdown-it-katex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@vscode/markdown-it-katex/-/markdown-it-katex-1.1.1.tgz",
- "integrity": "sha512-3KTlbsRBPJQLE2YmLL7K6nunTlU+W9T5+FjfNdWuIUKgxSS6HWLQHaO3L4MkJi7z7MpIPpY+g4N+cWNBPE/MSA==",
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"license": "MIT",
- "dependencies": {
- "katex": "^0.16.4"
+ "engines": {
+ "node": ">= 14"
}
},
"node_modules/ansi-align": {
@@ -444,9 +347,9 @@
}
},
"node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -456,9 +359,9 @@
}
},
"node_modules/ansi-styles": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
- "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -514,13 +417,188 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"license": "Python-2.0"
},
+ "node_modules/array-differ": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-4.0.0.tgz",
+ "integrity": "sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/array-uniq": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-3.0.0.tgz",
+ "integrity": "sha512-T/3qyw9JTDHjj+aIo4uQyHCAoG1DkFqFViq0e6uPzkXwT74MEPsmQ30rxx8x9+yjBQ3KJ2bXOb2bBKC1FwEjdw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/arrify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz",
+ "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ast-types": {
+ "version": "0.13.4",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+ "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/async": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
+ },
"node_modules/atomically": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.0.3.tgz",
- "integrity": "sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.0.tgz",
+ "integrity": "sha512-+gDffFXRW6sl/HCwbta7zK4uNqbPjv4YJEAdz7Vu+FLQHe77eZ4bvbJGi4hE0QPeJlMYMA3piXEr1UL3dAwx7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "stubborn-fs": "^2.0.0",
+ "when-exit": "^2.1.4"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/b4a": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz",
+ "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "react-native-b4a": "*"
+ },
+ "peerDependenciesMeta": {
+ "react-native-b4a": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-events": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz",
+ "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "bare-abort-controller": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-abort-controller": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-fs": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.1.tgz",
+ "integrity": "sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-events": "^2.5.4",
+ "bare-path": "^3.0.0",
+ "bare-stream": "^2.6.4",
+ "bare-url": "^2.2.2",
+ "fast-fifo": "^1.3.2"
+ },
+ "engines": {
+ "bare": ">=1.16.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-os": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz",
+ "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "bare": ">=1.14.0"
+ }
+ },
+ "node_modules/bare-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+ "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "bare-os": "^3.0.1"
+ }
+ },
+ "node_modules/bare-stream": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz",
+ "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==",
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "streamx": "^2.21.0"
+ },
+ "peerDependencies": {
+ "bare-buffer": "*",
+ "bare-events": "*"
+ },
+ "peerDependenciesMeta": {
+ "bare-buffer": {
+ "optional": true
+ },
+ "bare-events": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/bare-url": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz",
+ "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==",
+ "license": "Apache-2.0",
+ "optional": true,
"dependencies": {
- "stubborn-fs": "^1.2.5",
- "when-exit": "^2.1.1"
+ "bare-path": "^3.0.0"
}
},
"node_modules/base64-js": {
@@ -543,6 +621,15 @@
],
"license": "MIT"
},
+ "node_modules/basic-ftp": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
+ "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/bin-build": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz",
@@ -944,24 +1031,133 @@
"node": ">=0.10.0"
}
},
- "node_modules/camelcase": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz",
- "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==",
+ "node_modules/cacheable-request/node_modules/normalize-url": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
+ "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
"license": "MIT",
- "engines": {
- "node": ">=16"
+ "dependencies": {
+ "prepend-http": "^2.0.0",
+ "query-string": "^5.0.1",
+ "sort-keys": "^2.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/caw": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz",
- "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==",
- "license": "MIT",
- "dependencies": {
+ "node_modules/cacheable-request/node_modules/prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/sort-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
+ "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz",
+ "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/capture-website": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/capture-website/-/capture-website-5.1.0.tgz",
+ "integrity": "sha512-ttss9ANsT+as1XgitU+X+IDQ8svY06SL/2CKChzoy+R0ycMrhg5NWstJf/IZ6uT6vN2MFJlXHPSEygWgyROsGg==",
+ "license": "MIT",
+ "dependencies": {
+ "@ghostery/adblocker-puppeteer": "^2.12.5",
+ "file-url": "^4.0.0",
+ "puppeteer": "^24.27.0",
+ "tough-cookie": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/caw": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz",
+ "integrity": "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==",
+ "license": "MIT",
+ "dependencies": {
"get-proxy": "^2.0.0",
"isurl": "^1.0.0-alpha5",
"tunnel-agent": "^0.6.0",
@@ -972,9 +1168,9 @@
}
},
"node_modules/chalk": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
- "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
"license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
@@ -1040,6 +1236,19 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/chromium-bidi": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-11.0.0.tgz",
+ "integrity": "sha512-cM3DI+OOb89T3wO8cpPSro80Q9eKYJ7hGVXoGS3GkDPxnYSqiv+6xwpIf6XERyJ9Tdsl09hmNmY94BkgZdVekw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mitt": "^3.0.1",
+ "zod": "^3.24.1"
+ },
+ "peerDependencies": {
+ "devtools-protocol": "*"
+ }
+ },
"node_modules/cli-boxes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
@@ -1052,6 +1261,93 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/clone-response": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
@@ -1061,6 +1357,24 @@
"mimic-response": "^1.0.0"
}
},
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
"node_modules/commander": {
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
@@ -1081,9 +1395,9 @@
}
},
"node_modules/configstore": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.0.0.tgz",
- "integrity": "sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-7.1.0.tgz",
+ "integrity": "sha512-N4oog6YJWbR9kGyXvS7jEykLDXIE2C0ILYqNBZBp9iwiJpoCBWYsuAdW6PPFn6w06jjnC+3JstVvWHO4cZqvRg==",
"license": "BSD-2-Clause",
"dependencies": {
"atomically": "^2.0.3",
@@ -1095,7 +1409,7 @@
"node": ">=18"
},
"funding": {
- "url": "https://github.com/yeoman/configstore?sponsor=1"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/content-disposition": {
@@ -1116,6 +1430,32 @@
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
"license": "MIT"
},
+ "node_modules/cosmiconfig": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
"node_modules/cross-spawn": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
@@ -1128,9 +1468,9 @@
}
},
"node_modules/css-select": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
- "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
"license": "BSD-2-Clause",
"dependencies": {
"boolbase": "^1.0.0",
@@ -1144,9 +1484,9 @@
}
},
"node_modules/css-what": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
- "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
"license": "BSD-2-Clause",
"engines": {
"node": ">= 6"
@@ -1355,21 +1695,6 @@
"node": ">=12"
}
},
- "node_modules/d3-flextree": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/d3-flextree/-/d3-flextree-2.1.2.tgz",
- "integrity": "sha512-gJiHrx5uTTHq44bjyIb3xpbmmdZcWLYPKeO9EPVOq8EylMFOiH2+9sWqKAiQ4DcFuOZTAxPOQyv0Rnmji/g15A==",
- "license": "WTFPL",
- "dependencies": {
- "d3-hierarchy": "^1.1.5"
- }
- },
- "node_modules/d3-flextree/node_modules/d3-hierarchy": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz",
- "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==",
- "license": "BSD-3-Clause"
- },
"node_modules/d3-force": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
@@ -1580,6 +1905,42 @@
"node": ">=12"
}
},
+ "node_modules/data-uri-to-buffer": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+ "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/date-fns": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/kossnocorp"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/decode-uri-component": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
@@ -1725,9 +2086,9 @@
}
},
"node_modules/default-browser": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
- "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==",
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz",
+ "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==",
"license": "MIT",
"dependencies": {
"bundle-name": "^4.1.0",
@@ -1741,9 +2102,9 @@
}
},
"node_modules/default-browser-id": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz",
- "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -1752,6 +2113,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/define-lazy-prop": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
@@ -1764,6 +2142,20 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/degenerator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+ "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.13.4",
+ "escodegen": "^2.1.0",
+ "esprima": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/delaunator": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
@@ -1773,6 +2165,12 @@
"robust-predicates": "^3.0.2"
}
},
+ "node_modules/devtools-protocol": {
+ "version": "0.0.1521046",
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1521046.tgz",
+ "integrity": "sha512-vhE6eymDQSKWUXwwA37NtTTVEzjtGVfDr3pRbsWEQ5onH/Snp2c+2xZHWJJawG/0hCCJLRGt4xVtEVUVILol4w==",
+ "license": "BSD-3-Clause"
+ },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -1815,9 +2213,9 @@
}
},
"node_modules/domutils": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.1.tgz",
- "integrity": "sha512-xWXmuRnN9OMP6ptPd2+H0cCbcYBULa5YDTbMm/2lvkWvNA3O4wcW+GvzooqBuNM8yy6pl3VIAeJTUUWUbfI5Fw==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
"license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^2.0.0",
@@ -1883,6 +2281,20 @@
"node": ">=4"
}
},
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/duplexer3": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
@@ -1890,15 +2302,15 @@
"license": "BSD-3-Clause"
},
"node_modules/emoji-regex": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
- "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
"license": "MIT"
},
"node_modules/encoding-sniffer": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz",
- "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
+ "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
"license": "MIT",
"dependencies": {
"iconv-lite": "^0.6.3",
@@ -1909,9 +2321,9 @@
}
},
"node_modules/end-of-stream": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
- "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
"license": "MIT",
"dependencies": {
"once": "^1.4.0"
@@ -1929,33 +2341,151 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
- "node_modules/escape-goat": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
- "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
"license": "MIT",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=6"
}
},
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
"license": "MIT",
- "engines": {
- "node": ">=0.8.0"
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
}
},
- "node_modules/execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"license": "MIT",
- "dependencies": {
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-goat": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
+ "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/events-universal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz",
+ "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bare-events": "^2.7.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
+ "license": "MIT",
+ "dependencies": {
"cross-spawn": "^5.0.1",
"get-stream": "^3.0.0",
"is-stream": "^1.1.0",
@@ -2023,6 +2553,47 @@
"node": ">=4"
}
},
+ "node_modules/extract-zip": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ },
+ "engines": {
+ "node": ">= 10.17.0"
+ },
+ "optionalDependencies": {
+ "@types/yauzl": "^2.9.1"
+ }
+ },
+ "node_modules/extract-zip/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fast-fifo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+ "license": "MIT"
+ },
"node_modules/fd-slicer": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
@@ -2041,6 +2612,18 @@
"node": ">=4"
}
},
+ "node_modules/file-url": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/file-url/-/file-url-4.0.0.tgz",
+ "integrity": "sha512-vRCdScQ6j3Ku6Kd7W1kZk9c++5SqD6Xz5Jotrjr/nkY714M14RFHy/AAVA2WQvpsqVAVgTbDrYyBpU205F0cLw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/filename-reserved-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz",
@@ -2064,10 +2647,91 @@
"node": ">=4"
}
},
+ "node_modules/filenamify-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/filenamify-url/-/filenamify-url-3.1.0.tgz",
+ "integrity": "sha512-Dvv4b4m1l5LiIo05049Q7Nk6v5yp6/E68WF3lm7tzIukATXuAFWIWiCi3N7EZ3jat6uvdNUR1WXqUc+oysFLAw==",
+ "license": "MIT",
+ "dependencies": {
+ "filenamify": "^5.0.1",
+ "humanize-url": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filenamify-url/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filenamify-url/node_modules/filename-reserved-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz",
+ "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filenamify-url/node_modules/filenamify": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz",
+ "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==",
+ "license": "MIT",
+ "dependencies": {
+ "filename-reserved-regex": "^3.0.0",
+ "strip-outer": "^2.0.0",
+ "trim-repeated": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filenamify-url/node_modules/strip-outer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz",
+ "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/filenamify-url/node_modules/trim-repeated": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz",
+ "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/find-up-simple": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz",
- "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz",
+ "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -2088,6 +2752,21 @@
"node": ">=6"
}
},
+ "node_modules/for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/from2": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
@@ -2104,10 +2783,28 @@
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
"license": "MIT"
},
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
"node_modules/get-east-asian-width": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
- "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz",
+ "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -2116,6 +2813,43 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/get-proxy": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz",
@@ -2141,6 +2875,20 @@
"node": ">=0.10.0"
}
},
+ "node_modules/get-uri": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+ "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
+ "license": "MIT",
+ "dependencies": {
+ "basic-ftp": "^5.0.2",
+ "data-uri-to-buffer": "^6.0.2",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/global-directory": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz",
@@ -2165,6 +2913,18 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/got": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz",
@@ -2205,6 +2965,18 @@
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"license": "ISC"
},
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-symbol-support-x": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz",
@@ -2214,6 +2986,18 @@
"node": "*"
}
},
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-to-string-tag-x": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz",
@@ -2226,6 +3010,33 @@
"node": "*"
}
},
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/highlight.js": {
"version": "11.11.1",
"resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz",
@@ -2236,9 +3047,9 @@
}
},
"node_modules/hono": {
- "version": "4.6.15",
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.6.15.tgz",
- "integrity": "sha512-OiQwvAOAaI2JrABBH69z5rsctHDzFzIKJge0nYXgtzGJ0KftwLWcBXm1upJC23/omNRtnqM0gjRMbtXshPdqhQ==",
+ "version": "4.10.6",
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.10.6.tgz",
+ "integrity": "sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g==",
"license": "MIT",
"engines": {
"node": ">=16.9.0"
@@ -2287,6 +3098,47 @@
"integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
"license": "BSD-2-Clause"
},
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/humanize-url": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-3.0.0.tgz",
+ "integrity": "sha512-oWcYrKNVa+bCX9ACFZ85H8l1+QcwBJ64xH5+PHYoLe/Y5aToOfw3s3OZqRA/OyJPcWOXuDLo3qil5CYvTMtp0A==",
+ "license": "MIT",
+ "dependencies": {
+ "normalize-url": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -2319,6 +3171,22 @@
],
"license": "BSD-3-Clause"
},
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/import-lazy": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz",
@@ -2329,9 +3197,9 @@
}
},
"node_modules/index-to-position": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz",
- "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz",
+ "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -2374,6 +3242,42 @@
"node": ">=4"
}
},
+ "node_modules/ip-address": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
+ "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/irregular-plurals": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz",
+ "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "license": "MIT"
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/is-docker": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
@@ -2454,9 +3358,9 @@
"license": "MIT"
},
"node_modules/is-npm": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz",
- "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.1.0.tgz",
+ "integrity": "sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==",
"license": "MIT",
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@@ -2504,6 +3408,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-root": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-root/-/is-root-3.0.0.tgz",
+ "integrity": "sha512-C13bL54yQdgniduW8KFe81ttgQINcwMgil/zyNuDzr/xjIyDMkcvcc9dON62RH9VBAHOI7le+lTo/U3PY3irwg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
@@ -2513,6 +3429,33 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-wsl": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz",
@@ -2559,16 +3502,34 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"license": "MIT"
},
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
"node_modules/json-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
"integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
"license": "MIT"
},
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "license": "MIT"
+ },
"node_modules/katex": {
- "version": "0.16.21",
- "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz",
- "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==",
+ "version": "0.16.25",
+ "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.25.tgz",
+ "integrity": "sha512-woHRUZ/iF23GBP1dkDQMh1QBad9dmr8/PAwNA54VrSOVYgI12MAcE14TqnDdQOdzyEonGzMepYnqBMYdsoAr8Q==",
"funding": [
"https://opencollective.com/katex",
"https://github.com/sponsors/katex"
@@ -2600,9 +3561,9 @@
}
},
"node_modules/ky": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/ky/-/ky-1.7.4.tgz",
- "integrity": "sha512-zYEr/gh7uLW2l4su11bmQ2M9xLgQLjyvx58UyNM/6nuqyWFHPX5ktMjvpev3F8QWdjSsHUpnWew4PBCswBNuMQ==",
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.0.tgz",
+ "integrity": "sha512-Rczb6FMM6JT0lvrOlP5WUOCB7s9XKxzwgErzhKlKde1bEV90FXplV1o87fpt4PU/asJFiqjYJxAJyzJhcrxOsQ==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -2626,6 +3587,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "license": "MIT"
+ },
"node_modules/linkify-it": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
@@ -2635,6 +3602,28 @@
"uc.micro": "^2.0.0"
}
},
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
+ "node_modules/log-symbols": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz",
+ "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
@@ -2717,10 +3706,9 @@
"license": "MIT"
},
"node_modules/markmap-cli": {
- "version": "0.18.4",
- "resolved": "https://registry.npmjs.org/markmap-cli/-/markmap-cli-0.18.4.tgz",
- "integrity": "sha512-Uxr5MQVV+LsUKtBSitmEFOC0isXTCIal6E7ZTYubXGlRZsQv0AMsRGbi+Ih6Qcbv49mEyTPamhAG/W4Y8ZAjjw==",
- "hasInstallScript": true,
+ "version": "0.18.12",
+ "resolved": "https://registry.npmjs.org/markmap-cli/-/markmap-cli-0.18.12.tgz",
+ "integrity": "sha512-qlrcC75XM9nlzemErHlEkmC2CZtGo47ODvhffdBrWWIIJfIFy1YoQmh9cy9rJ6XolPIAtTTin3CwJvZHktt8/g==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.0",
@@ -2728,12 +3716,12 @@
"chokidar": "^4.0.1",
"commander": "^12.1.0",
"hono": "^4.6.13",
- "markmap-common": "0.18.4",
- "markmap-lib": "0.18.4",
- "markmap-render": "0.18.4",
- "markmap-toolbar": "0.18.4",
+ "markmap-common": "0.18.9",
+ "markmap-lib": "0.18.12",
+ "markmap-render": "0.18.12",
+ "markmap-toolbar": "0.18.12",
"open": "^10.1.0",
- "pkg-dir": "^8.0.0",
+ "portfinder": "^1.0.32",
"read-package-up": "^11.0.0",
"update-notifier": "^7.3.1"
},
@@ -2745,9 +3733,9 @@
}
},
"node_modules/markmap-common": {
- "version": "0.18.4",
- "resolved": "https://registry.npmjs.org/markmap-common/-/markmap-common-0.18.4.tgz",
- "integrity": "sha512-7fmKh/Eie8YtMutOr+//rm7/5DFbeATz3qkPTJJAgCCtUCodGn3hF7vn0TIXNs4DvaSuKUvk0JTPvSakzBlHeQ==",
+ "version": "0.18.9",
+ "resolved": "https://registry.npmjs.org/markmap-common/-/markmap-common-0.18.9.tgz",
+ "integrity": "sha512-MV2HQO7IGIm3jWEJXSG8vmdpqf4WIDXcEyAEN52lrWR1qD53Zg5l81JwjXoZ2l0rY5mofKYqUFlmdM2fqTGMVg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.22.6",
@@ -2756,9 +3744,9 @@
}
},
"node_modules/markmap-html-parser": {
- "version": "0.18.4",
- "resolved": "https://registry.npmjs.org/markmap-html-parser/-/markmap-html-parser-0.18.4.tgz",
- "integrity": "sha512-elMWtRB/i7BdR+ZF4NgwrDEAAR6i+vtCeH1uJAKW355RXlpVF9RxP3dUVOmDBuBMZVFvDHQL3b6+uHSZQBrEGg==",
+ "version": "0.18.11",
+ "resolved": "https://registry.npmjs.org/markmap-html-parser/-/markmap-html-parser-0.18.11.tgz",
+ "integrity": "sha512-+kC5C4sCGntGUhGvTa5VIb5rtM75cSy/VCy3tzZoNAcn2qZGdgYvljN0WvjsOzrEzp+V6XKgwzO0u2TdzNAiOg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.22.6",
@@ -2769,9 +3757,9 @@
}
},
"node_modules/markmap-lib": {
- "version": "0.18.4",
- "resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.18.4.tgz",
- "integrity": "sha512-YOqMCWoceYf26KrKGD88oTRuuhsghtDeJd5qzmngdH0FbSLhXABG/B6tqivbjQ+Np2TpfF/VqifBS9i4ADQEgw==",
+ "version": "0.18.12",
+ "resolved": "https://registry.npmjs.org/markmap-lib/-/markmap-lib-0.18.12.tgz",
+ "integrity": "sha512-WCA4OT+b71jYg0e4PS/6NRKqihod5OpPsvw1jEGHQwCtqQrY/yXXCeRyuL3axOS5cMy5pV8BSl4CwKfJU1LxJg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.22.6",
@@ -2783,8 +3771,8 @@
"markdown-it-mark": "^4.0.0",
"markdown-it-sub": "^2.0.0",
"markdown-it-sup": "^2.0.0",
- "markmap-html-parser": "0.18.4",
- "markmap-view": "0.18.4",
+ "markmap-html-parser": "0.18.11",
+ "markmap-view": "0.18.12",
"prismjs": "^1.29.0",
"yaml": "^2.5.1"
},
@@ -2793,22 +3781,21 @@
}
},
"node_modules/markmap-render": {
- "version": "0.18.4",
- "resolved": "https://registry.npmjs.org/markmap-render/-/markmap-render-0.18.4.tgz",
- "integrity": "sha512-XqS/wjTNUlSNabhmGa0pRjFggyfTkDXYfgpPBLrE/PHER82d8LLV6By6lb7fbuiSmZ/GuEhwDD7Dxoa0aQhHVA==",
+ "version": "0.18.12",
+ "resolved": "https://registry.npmjs.org/markmap-render/-/markmap-render-0.18.12.tgz",
+ "integrity": "sha512-QRVpj5+1m9fazCUyMHEHeiYYyua9hNExkaET9ZZrq8nsekkza0fwIsjRYWtzytG2vDYkY5TYhqsJLy7mZLgE5A==",
"license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.22.6",
- "markmap-view": "0.18.4"
+ "@babel/runtime": "^7.22.6"
},
"peerDependencies": {
"markmap-common": "*"
}
},
"node_modules/markmap-toolbar": {
- "version": "0.18.4",
- "resolved": "https://registry.npmjs.org/markmap-toolbar/-/markmap-toolbar-0.18.4.tgz",
- "integrity": "sha512-VdwIWc5dNYsAHgTiGgG0kwiw7x9QExP0EanLSvp6pV48kx7qhuSiwhSZplWFOcwVXpJD/JYh37mvcZ1tB6Ycog==",
+ "version": "0.18.12",
+ "resolved": "https://registry.npmjs.org/markmap-toolbar/-/markmap-toolbar-0.18.12.tgz",
+ "integrity": "sha512-+MQ/95ywl/ZLhVKb0tKjRa3p/AuUSYsuJRs1MPHmkxcxBaumXgzLNHUUnLjKmsbNxeZUSQGe3QJaFyRQYcHZJg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.22.6",
@@ -2819,31 +3806,49 @@
}
},
"node_modules/markmap-view": {
- "version": "0.18.4",
- "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.18.4.tgz",
- "integrity": "sha512-CsaecCTU/qS/ycNiEWpWh/lOEpXe6st7BncIFpGH5sguSDBFUE4h99vAd67fdKyDA5x0CkjS/XSlXp+/EKKb+A==",
+ "version": "0.18.12",
+ "resolved": "https://registry.npmjs.org/markmap-view/-/markmap-view-0.18.12.tgz",
+ "integrity": "sha512-D8bzT1YwIC/8rkbwm6WzigVUrpOAGv7ioEGTi1Lj+Oo8gO5sAm6hhli27jvTgUcZ9TwBeIWZ+dSUP+AupYUGlQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.22.6",
- "@gera2ld/jsx-dom": "^2.2.2",
- "@types/d3": "^7.4.0",
- "d3": "^7.8.5",
- "d3-flextree": "^2.1.2"
+ "d3": "^7.8.5"
},
"peerDependencies": {
"markmap-common": "*"
}
},
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/mdurl": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
"integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
"license": "MIT"
},
+ "node_modules/meow": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/mime-db": {
- "version": "1.53.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz",
- "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==",
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -2867,6 +3872,27 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+ "license": "MIT"
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/netmask": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+ "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -2888,9 +3914,9 @@
}
},
"node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -2900,38 +3926,15 @@
}
},
"node_modules/normalize-url": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz",
- "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==",
- "license": "MIT",
- "dependencies": {
- "prepend-http": "^2.0.0",
- "query-string": "^5.0.1",
- "sort-keys": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/normalize-url/node_modules/prepend-http": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
- "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.2.0.tgz",
+ "integrity": "sha512-uhXOdZry0L6M2UIo9BTt7FdpBDiAGN/7oItedQwPKh8jh31ZlvC8U9Xl/EJ3aijDHaywXTW3QbZ6LuCocur1YA==",
"license": "MIT",
"engines": {
- "node": ">=4"
- }
- },
- "node_modules/normalize-url/node_modules/sort-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
- "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
- "license": "MIT",
- "dependencies": {
- "is-plain-obj": "^1.0.0"
+ "node": ">=12.20"
},
- "engines": {
- "node": ">=4"
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/npm-conf": {
@@ -3005,15 +4008,15 @@
}
},
"node_modules/open": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz",
- "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==",
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
+ "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
"license": "MIT",
"dependencies": {
"default-browser": "^5.2.1",
"define-lazy-prop": "^3.0.0",
"is-inside-container": "^1.0.0",
- "is-wsl": "^3.1.0"
+ "wsl-utils": "^0.1.0"
},
"engines": {
"node": ">=18"
@@ -3090,6 +4093,18 @@
"node": ">=4"
}
},
+ "node_modules/p-map": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz",
+ "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/p-map-series": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz",
@@ -3123,6 +4138,38 @@
"node": ">=4"
}
},
+ "node_modules/pac-proxy-agent": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
+ "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/quickjs-emscripten": "^0.23.0",
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "get-uri": "^6.0.1",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.6",
+ "pac-resolver": "^7.0.1",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/pac-resolver": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+ "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+ "license": "MIT",
+ "dependencies": {
+ "degenerator": "^5.0.0",
+ "netmask": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/package-json": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz",
@@ -3142,9 +4189,9 @@
}
},
"node_modules/package-json/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -3153,16 +4200,92 @@
"node": ">=10"
}
},
- "node_modules/parse-json": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz",
- "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==",
+ "node_modules/pageres": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/pageres/-/pageres-9.0.0.tgz",
+ "integrity": "sha512-2n/8a9yMPJuHCS5NADws4iH5SWCdRQKMN/sCxGuZyAgR2yz2dLDuZN0ssB/vI53I4PQDkiGUD8cAe/hODuAgcA==",
+ "license": "MIT",
+ "dependencies": {
+ "array-differ": "^4.0.0",
+ "array-uniq": "^3.0.0",
+ "capture-website": "^5.0.0",
+ "date-fns": "^4.1.0",
+ "filenamify": "^6.0.0",
+ "filenamify-url": "^3.1.0",
+ "lodash": "^4.17.21",
+ "log-symbols": "^7.0.1",
+ "make-dir": "^5.0.0",
+ "p-map": "^7.0.3",
+ "plur": "^5.1.0",
+ "type-fest": "^4.41.0",
+ "unused-filename": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pageres-cli": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/pageres-cli/-/pageres-cli-9.0.0.tgz",
+ "integrity": "sha512-IY+R2dfhYFXHnuGsosQ+HJ8qpSuIjW8OBstubNmUQ5gvHhbiL9a2tkpONB7Q5CSXMAVd7mSlY6lc2kR+SN/jNw==",
+ "license": "MIT",
+ "dependencies": {
+ "array-differ": "^4.0.0",
+ "array-uniq": "^3.0.0",
+ "arrify": "^3.0.0",
+ "log-symbols": "^7.0.1",
+ "meow": "^13.2.0",
+ "pageres": "^9.0.0",
+ "parse-headers": "^2.0.6",
+ "subarg": "^1.0.0",
+ "sudo-block": "^5.0.0",
+ "update-notifier": "^7.3.1"
+ },
+ "bin": {
+ "pageres": "cli.js"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pageres/node_modules/filename-reserved-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz",
+ "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pageres/node_modules/filenamify": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-6.0.0.tgz",
+ "integrity": "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==",
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.22.13",
- "index-to-position": "^0.1.2",
- "type-fest": "^4.7.1"
+ "filename-reserved-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16"
},
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pageres/node_modules/make-dir": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-5.1.0.tgz",
+ "integrity": "sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==",
+ "license": "MIT",
"engines": {
"node": ">=18"
},
@@ -3170,13 +4293,49 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-headers": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz",
+ "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==",
+ "license": "MIT"
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/parse5": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
- "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
"license": "MIT",
"dependencies": {
- "entities": "^4.5.0"
+ "entities": "^6.0.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
@@ -3207,6 +4366,27 @@
"url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
"node_modules/path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -3258,21 +4438,43 @@
"node": ">=0.10.0"
}
},
- "node_modules/pkg-dir": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz",
- "integrity": "sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==",
+ "node_modules/plur": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/plur/-/plur-5.1.0.tgz",
+ "integrity": "sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==",
"license": "MIT",
"dependencies": {
- "find-up-simple": "^1.0.0"
+ "irregular-plurals": "^3.3.0"
},
"engines": {
- "node": ">=18"
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/portfinder": {
+ "version": "1.0.38",
+ "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz",
+ "integrity": "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==",
+ "license": "MIT",
+ "dependencies": {
+ "async": "^3.2.6",
+ "debug": "^4.3.6"
+ },
+ "engines": {
+ "node": ">= 10.12"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/prepend-http": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
@@ -3297,12 +4499,55 @@
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"license": "MIT"
},
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
"integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
"license": "ISC"
},
+ "node_modules/proxy-agent": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
+ "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "http-proxy-agent": "^7.0.1",
+ "https-proxy-agent": "^7.0.6",
+ "lru-cache": "^7.14.1",
+ "pac-proxy-agent": "^7.1.0",
+ "proxy-from-env": "^1.1.0",
+ "socks-proxy-agent": "^8.0.5"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/proxy-agent/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+ "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -3310,9 +4555,9 @@
"license": "ISC"
},
"node_modules/pump": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
- "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
"license": "MIT",
"dependencies": {
"end-of-stream": "^1.1.0",
@@ -3329,9 +4574,9 @@
}
},
"node_modules/pupa": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz",
- "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.3.0.tgz",
+ "integrity": "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==",
"license": "MIT",
"dependencies": {
"escape-goat": "^4.0.0"
@@ -3343,6 +4588,45 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/puppeteer": {
+ "version": "24.31.0",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.31.0.tgz",
+ "integrity": "sha512-q8y5yLxLD8xdZdzNWqdOL43NbfvUOp60SYhaLZQwHC9CdKldxQKXOyJAciOr7oUJfyAH/KgB2wKvqT2sFKoVXA==",
+ "hasInstallScript": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@puppeteer/browsers": "2.10.13",
+ "chromium-bidi": "11.0.0",
+ "cosmiconfig": "^9.0.0",
+ "devtools-protocol": "0.0.1521046",
+ "puppeteer-core": "24.31.0",
+ "typed-query-selector": "^2.12.0"
+ },
+ "bin": {
+ "puppeteer": "lib/cjs/puppeteer/node/cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/puppeteer-core": {
+ "version": "24.31.0",
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.31.0.tgz",
+ "integrity": "sha512-pnAohhSZipWQoFpXuGV7xCZfaGhqcBR9C4pVrU0QSrcMi7tQMH9J9lDBqBvyMAHQqe8HCARuREqFuVKRQOgTvg==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@puppeteer/browsers": "2.10.13",
+ "chromium-bidi": "11.0.0",
+ "debug": "^4.4.3",
+ "devtools-protocol": "0.0.1521046",
+ "typed-query-selector": "^2.12.0",
+ "webdriver-bidi-protocol": "0.3.9",
+ "ws": "^8.18.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/query-string": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
@@ -3408,6 +4692,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/read-pkg/node_modules/parse-json": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
+ "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "index-to-position": "^1.1.0",
+ "type-fest": "^4.39.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -3430,28 +4731,22 @@
"license": "MIT"
},
"node_modules/readdirp": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
- "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
"license": "MIT",
"engines": {
- "node": ">= 14.16.0"
+ "node": ">= 14.18.0"
},
"funding": {
"type": "individual",
"url": "https://paulmillr.com/funding/"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "license": "MIT"
- },
"node_modules/registry-auth-token": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.3.tgz",
- "integrity": "sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.0.tgz",
+ "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==",
"license": "MIT",
"dependencies": {
"@pnpm/npm-conf": "^2.1.0"
@@ -3475,6 +4770,24 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/responselike": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
@@ -3491,9 +4804,9 @@
"license": "Unlicense"
},
"node_modules/run-applescript": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz",
- "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -3583,6 +4896,23 @@
"node": ">=0.10.0"
}
},
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
@@ -3610,6 +4940,44 @@
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"license": "ISC"
},
+ "node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks": {
+ "version": "2.8.7",
+ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz",
+ "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==",
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.0.1",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/socks-proxy-agent": {
+ "version": "8.0.5",
+ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+ "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "^4.3.4",
+ "socks": "^2.8.3"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
"node_modules/sort-keys": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
@@ -3634,6 +5002,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/spdx-correct": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
@@ -3661,11 +5039,22 @@
}
},
"node_modules/spdx-license-ids": {
- "version": "3.0.20",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
- "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
+ "version": "3.0.22",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz",
+ "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==",
"license": "CC0-1.0"
},
+ "node_modules/streamx": {
+ "version": "2.23.0",
+ "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz",
+ "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==",
+ "license": "MIT",
+ "dependencies": {
+ "events-universal": "^1.0.0",
+ "fast-fifo": "^1.3.2",
+ "text-decoder": "^1.1.0"
+ }
+ },
"node_modules/strict-uri-encode": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
@@ -3708,9 +5097,9 @@
}
},
"node_modules/strip-ansi": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
- "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
+ "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
"license": "MIT",
"dependencies": {
"ansi-regex": "^6.0.1"
@@ -3762,9 +5151,70 @@
}
},
"node_modules/stubborn-fs": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz",
- "integrity": "sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g=="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-2.0.0.tgz",
+ "integrity": "sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA==",
+ "license": "MIT",
+ "dependencies": {
+ "stubborn-utils": "^1.0.1"
+ }
+ },
+ "node_modules/stubborn-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/stubborn-utils/-/stubborn-utils-1.0.2.tgz",
+ "integrity": "sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==",
+ "license": "MIT"
+ },
+ "node_modules/subarg": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
+ "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==",
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.1.0"
+ }
+ },
+ "node_modules/sudo-block": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/sudo-block/-/sudo-block-5.0.0.tgz",
+ "integrity": "sha512-G0WeSL7midyz10FMKtgjXOBZpv9ZM9y++zGideqHIZ+qrzB8wMrCzMxTJgREAY35zPfkqVZBxaYjzteO9H6iQw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "is-docker": "^3.0.0",
+ "is-root": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tar-fs": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz",
+ "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==",
+ "license": "MIT",
+ "dependencies": {
+ "pump": "^3.0.0",
+ "tar-stream": "^3.1.5"
+ },
+ "optionalDependencies": {
+ "bare-fs": "^4.0.1",
+ "bare-path": "^3.0.0"
+ }
+ },
+ "node_modules/tar-fs/node_modules/tar-stream": {
+ "version": "3.1.7",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+ "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+ "license": "MIT",
+ "dependencies": {
+ "b4a": "^1.6.4",
+ "fast-fifo": "^1.2.0",
+ "streamx": "^2.15.0"
+ }
},
"node_modules/tar-stream": {
"version": "1.6.2",
@@ -3806,6 +5256,15 @@
"node": ">=4"
}
},
+ "node_modules/text-decoder": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
+ "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "b4a": "^1.6.4"
+ }
+ },
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -3821,12 +5280,65 @@
"node": ">=0.10.0"
}
},
+ "node_modules/tldts": {
+ "version": "7.0.18",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.18.tgz",
+ "integrity": "sha512-lCcgTAgMxQ1JKOWrVGo6E69Ukbnx4Gc1wiYLRf6J5NN4HRYJtCby1rPF8rkQ4a6qqoFBK5dvjJ1zJ0F7VfDSvw==",
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^7.0.18"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "7.0.18",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.18.tgz",
+ "integrity": "sha512-jqJC13oP4FFAahv4JT/0WTDrCF9Okv7lpKtOZUGPLiAnNbACcSg8Y8T+Z9xthOmRBqi/Sob4yi0TE0miRCvF7Q==",
+ "license": "MIT"
+ },
+ "node_modules/tldts-experimental": {
+ "version": "7.0.18",
+ "resolved": "https://registry.npmjs.org/tldts-experimental/-/tldts-experimental-7.0.18.tgz",
+ "integrity": "sha512-/t+Li4WcFIFMF8VLOk/Y31XaEwZF4yvccTqnHUHVJsiieK+y51G+M4BJbt5P8NVREnLE6GcRLJr3GMBfDfja0w==",
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^7.0.18"
+ }
+ },
"node_modules/to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz",
+ "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==",
+ "license": "MIT",
+ "dependencies": {
+ "isarray": "^2.0.5",
+ "safe-buffer": "^5.2.1",
+ "typed-array-buffer": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/to-buffer/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
"license": "MIT"
},
+ "node_modules/tough-cookie": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz",
+ "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tldts": "^7.0.5"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/trim-repeated": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
@@ -3839,6 +5351,12 @@
"node": ">=0.10.0"
}
},
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
"node_modules/tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -3852,9 +5370,9 @@
}
},
"node_modules/type-fest": {
- "version": "4.31.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz",
- "integrity": "sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==",
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -3863,6 +5381,26 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/typed-query-selector": {
+ "version": "2.12.0",
+ "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz",
+ "integrity": "sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==",
+ "license": "MIT"
+ },
"node_modules/uc.micro": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
@@ -3880,14 +5418,21 @@
}
},
"node_modules/undici": {
- "version": "6.21.0",
- "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz",
- "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==",
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz",
+ "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==",
"license": "MIT",
"engines": {
"node": ">=18.17"
}
},
+ "node_modules/undici-types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/unicorn-magic": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
@@ -3900,6 +5445,34 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/unused-filename": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/unused-filename/-/unused-filename-4.0.1.tgz",
+ "integrity": "sha512-ZX6U1J04K1FoSUeoX1OicAhw4d0aro2qo+L8RhJkiGTNtBNkd/Fi1Wxoc9HzcVu6HfOzm0si/N15JjxFmD1z6A==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^5.0.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unused-filename/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/update-notifier": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-7.3.1.tgz",
@@ -3925,9 +5498,9 @@
}
},
"node_modules/update-notifier/node_modules/semver": {
- "version": "7.6.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
- "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -3983,6 +5556,12 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/webdriver-bidi-protocol": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.3.9.tgz",
+ "integrity": "sha512-uIYvlRQ0PwtZR1EzHlTMol1G0lAlmOe6wPykF9a77AK3bkpvZHzIVxRE2ThOx5vjy2zISe0zhwf5rzuUfbo1PQ==",
+ "license": "Apache-2.0"
+ },
"node_modules/whatwg-encoding": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
@@ -4005,9 +5584,10 @@
}
},
"node_modules/when-exit": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.3.tgz",
- "integrity": "sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw=="
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/when-exit/-/when-exit-2.1.5.tgz",
+ "integrity": "sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==",
+ "license": "MIT"
},
"node_modules/which": {
"version": "1.3.1",
@@ -4021,6 +5601,27 @@
"which": "bin/which"
}
},
+ "node_modules/which-typed-array": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
+ "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/widest-line": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz",
@@ -4037,9 +5638,9 @@
}
},
"node_modules/wrap-ansi": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
- "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
"license": "MIT",
"dependencies": {
"ansi-styles": "^6.2.1",
@@ -4059,6 +5660,42 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"license": "ISC"
},
+ "node_modules/ws": {
+ "version": "8.18.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+ "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/wsl-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
+ "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/xdg-basedir": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
@@ -4080,6 +5717,15 @@
"node": ">=0.4"
}
},
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
@@ -4087,15 +5733,83 @@
"license": "ISC"
},
"node_modules/yaml": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz",
- "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==",
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
+ "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
"license": "ISC",
"bin": {
"yaml": "bin.mjs"
},
"engines": {
- "node": ">= 14"
+ "node": ">= 14.6"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "license": "MIT"
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/yargs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
"node_modules/yauzl": {
@@ -4107,6 +5821,27 @@
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
}
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz",
+ "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
}
}
}
diff --git a/pattern-categorization/package.json b/pattern-categorization/package.json
index 61c50321f..a04dddbf4 100644
--- a/pattern-categorization/package.json
+++ b/pattern-categorization/package.json
@@ -3,8 +3,9 @@
"version": "0.0.1",
"description": "Generate mindmap of the patterns in our book, using markmap.",
"dependencies": {
- "markmap-cli": ">=0.18.4",
- "optipng-bin": "^9.0.0"
+ "markmap-cli": ">=0.18.12",
+ "optipng-bin": "^9.0.0",
+ "pageres-cli": "^9.0.0"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
diff --git a/pattern-categorization/pt-br/innersource-program-mind-map.html b/pattern-categorization/pt-br/innersource-program-mind-map.html
index 159ea021f..ff090a15e 100644
--- a/pattern-categorization/pt-br/innersource-program-mind-map.html
+++ b/pattern-categorization/pt-br/innersource-program-mind-map.html
@@ -1,32 +1,43 @@
-
+
-
-
-
+
+
+
Markmap
-
+ if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
+ document.documentElement.classList.add("markmap-dark");
+ }
+ })(() => window.markmap,null,{"content":"Programa InnerSource","children":[{"content":"Começar","children":[{"content":"Etapa de Preparação","children":[{"content":"A gerência hesita em investir em InnerSource","children":[{"content":"Inicie como um experimento","children":[],"payload":{"tag":"h5","lines":"8,9"}}],"payload":{"tag":"h4","lines":"6,7"}},{"content":"O crescimento lento da comunidade dificulta o InnerSource","children":[{"content":"Líder de comunidade dedicado","children":[],"payload":{"tag":"h5","lines":"12,13"}}],"payload":{"tag":"h4","lines":"10,11"}},{"content":"Os princípios do InnerSource não são intuitivos a todos","children":[{"content":"Documente seus princípios orientadores","children":[],"payload":{"tag":"h5","lines":"16,17"}}],"payload":{"tag":"h4","lines":"14,15"}}],"payload":{"tag":"h3","lines":"4,5"}},{"content":"Configuração do Projeto","children":[{"content":"Dificuldade para avaliar um projeto rapidamente","children":[{"content":"Documentação base padrão","children":[],"payload":{"tag":"h5","lines":"22,23"}}],"payload":{"tag":"h4","lines":"20,21"}},{"content":"Comunicação ad-hoc prejudica o crescimento do projeto","children":[{"content":"Ferramentas de comunicação","children":[],"payload":{"tag":"h5","lines":"26,27"}}],"payload":{"tag":"h4","lines":"24,25"}},{"content":"Falta de transparência no roadmap e direção do projeto","children":[{"content":"Casos de uso do rastreador de problemas","children":[],"payload":{"tag":"h5","lines":"30,31"}}],"payload":{"tag":"h4","lines":"28,29"}}],"payload":{"tag":"h3","lines":"18,19"}}],"payload":{"tag":"h2","lines":"2,3"}},{"content":"Adotar","children":[{"content":"Desafios de Avaliação","children":[{"content":"Como medir o valor de negócio de um projeto","children":[{"content":"Avaliação de projetos entre equipes","children":[],"payload":{"tag":"h5","lines":"38,39"}}],"payload":{"tag":"h4","lines":"36,37"}},{"content":"Podemos contar com o projeto por um tempo prolongado?","children":[{"content":"Processo de liberação padrão","children":[],"payload":{"tag":"h5","lines":"42,43"}},{"content":"Documentação base padrão","children":[],"payload":{"tag":"h5","lines":"44,45"}}],"payload":{"tag":"h4","lines":"40,41"}}],"payload":{"tag":"h3","lines":"34,35"}},{"content":"Desafios Culturais","children":[{"content":"Esforço não reconhecido","children":[{"content":"Elogiar participantes","children":[],"payload":{"tag":"h5","lines":"50,51"}},{"content":"Trusted Committer","children":[],"payload":{"tag":"h5","lines":"52,53"}}],"payload":{"tag":"h4","lines":"48,49"}}],"payload":{"tag":"h3","lines":"46,47"}},{"content":"Desafios Técnicos","children":[{"content":"Não atender às necessidades de todos","children":[{"content":"Requisitos comuns","children":[],"payload":{"tag":"h5","lines":"58,59"}}],"payload":{"tag":"h4","lines":"56,57"}},{"content":"Medo da responsabilidade compartilhada de suporte","children":[{"content":"Serviço vs. Biblioteca","children":[],"payload":{"tag":"h5","lines":"62,63"}}],"payload":{"tag":"h4","lines":"60,61"}},{"content":"Projeto é dificil de contribuir e usar","children":[{"content":"Equipe Central","children":[],"payload":{"tag":"h5","lines":"66,67"}}],"payload":{"tag":"h4","lines":"64,65"}}],"payload":{"tag":"h3","lines":"54,55"}},{"content":"Desafios Organizacionais","children":[{"content":"Desencorajamento em contribuir com recursos","children":[{"content":"Colaborador Contratado","children":[],"payload":{"tag":"h5","lines":"72,73"}}],"payload":{"tag":"h4","lines":"70,71"}},{"content":"Rejeição na aceitação de contribuições","children":[{"content":"Garantia de 30 dias","children":[],"payload":{"tag":"h5","lines":"76,77"}}],"payload":{"tag":"h4","lines":"74,75"}},{"content":"Mudança radical na gestão","children":[{"content":"Comitê de Revisão","children":[],"payload":{"tag":"h5","lines":"80,81"}}],"payload":{"tag":"h4","lines":"78,79"}},{"content":"Medo da responsabilidade compartilhada","children":[{"content":"Serviço vs. Biblioteca","children":[],"payload":{"tag":"h5","lines":"84,85"}}],"payload":{"tag":"h4","lines":"82,83"}},{"content":"Não há mantenedores suficientes para escalar","children":[{"content":"Trusted Committer","children":[],"payload":{"tag":"h5","lines":"88,89"}}],"payload":{"tag":"h4","lines":"86,87"}},{"content":"Coordenação dificil entre equipes","children":[{"content":"Tomada de Decisão Transparentes entre Equipes usando RFCs","children":[],"payload":{"tag":"h5","lines":"92,93"}}],"payload":{"tag":"h4","lines":"90,91"}},{"content":"Projeto sem proprietário/mantenedor","children":[{"content":"Equipe Central","children":[],"payload":{"tag":"h5","lines":"96,97"}},{"content":"Suporte em Grupo","children":[],"payload":{"tag":"h5","lines":"98,99"}}],"payload":{"tag":"h4","lines":"94,95"}}],"payload":{"tag":"h3","lines":"68,69"}},{"content":"Desafios entre entidades legais","children":[{"content":"Preocupação com responsabilidades legais ou contabilidade entre empresas","children":[{"content":"Licença InnerSource","children":[],"payload":{"tag":"h5","lines":"104,105"}}],"payload":{"tag":"h4","lines":"102,103"}}],"payload":{"tag":"h3","lines":"100,101"}}],"payload":{"tag":"h2","lines":"32,33"}},{"content":"Crescer","children":[{"content":"Desafios de Descoberta","children":[{"content":"Não é possível encontrar projetos correspondentes","children":[{"content":"Gig Marketplace","children":[],"payload":{"tag":"h5","lines":"112,113"}},{"content":"Portal InnerSource","children":[],"payload":{"tag":"h5","lines":"114,115"}}],"payload":{"tag":"h4","lines":"110,111"}},{"content":"Dificuldade em encontrar projetos ativos","children":[{"content":"Pontuação de Atividade de Repositório","children":[],"payload":{"tag":"h5","lines":"118,119"}}],"payload":{"tag":"h4","lines":"116,117"}}],"payload":{"tag":"h3","lines":"108,109"}}],"payload":{"tag":"h2","lines":"106,107"}},{"content":"Escalar","children":[{"content":"Desafios de Autoeducação/Melhoria","children":[{"content":"Não conhecer as melhores práticas do InnerSource","children":[{"content":"Modelo de Maturidade","children":[],"payload":{"tag":"h5","lines":"126,127"}}],"payload":{"tag":"h4","lines":"124,125"}},{"content":"Falta de conhecimento em Open Source","children":[{"content":"Documente seus Princípios Orientadores","children":[],"payload":{"tag":"h5","lines":"130,131"}}],"payload":{"tag":"h4","lines":"128,129"}}],"payload":{"tag":"h3","lines":"122,123"}},{"content":"Desafios Técnicos","children":[{"content":"Aumento de overhead de manutenção","children":[{"content":"Extensões para Crescimento Sustentável","children":[],"payload":{"tag":"h5","lines":"136,137"}}],"payload":{"tag":"h4","lines":"134,135"}}],"payload":{"tag":"h3","lines":"132,133"}}],"payload":{"tag":"h2","lines":"120,121"}}],"payload":{"tag":"h1","lines":"0,1"}},null)
diff --git a/pattern-categorization/pt-br/innersource-program-mind-map.png b/pattern-categorization/pt-br/innersource-program-mind-map.png
index e0c666eae..8e127fa4d 100644
Binary files a/pattern-categorization/pt-br/innersource-program-mind-map.png and b/pattern-categorization/pt-br/innersource-program-mind-map.png differ
diff --git a/patterns/1-initial/ai-code-generation-context.md b/patterns/1-initial/ai-code-generation-context.md
new file mode 100644
index 000000000..7bc88a5f6
--- /dev/null
+++ b/patterns/1-initial/ai-code-generation-context.md
@@ -0,0 +1,164 @@
+## Title
+
+AI Code Generation Context
+
+## Patlet
+
+AI tools generate code that diverges from project standards and architectural patterns. Provide an AI Code Generation Context within the repositories to guide AI tools in producing contributions that align with existing project conventions, reducing review friction and maintaining code consistency.
+
+## Problem
+
+With the growing use of AI tools (like GitHub Copilot, ChatGPT, or custom LLMs), InnerSource contributors are increasingly using generative AI to write code. However, without project-specific context, these tools often produce code that diverges from the project's architectural patterns, naming conventions, or quality standards. This leads to friction during reviews, inconsistent codebases, and technical debts or additional burden on maintainers.
+
+## Context
+
+* InnerSource adoption is in place across the organization.
+* Developers are encouraged to use AI tools to improve their productivity.
+* Contributors may not be familiar with or fail to meticulously prompt when generating code through AI, using the target codebase's idioms, architecture, or constraints.
+* Maintainers want to empower contributors using AI while preserving code consistency and maintainability.
+* Multiple teams are contributing to shared repositories with varying levels of familiarity with project standards.
+* Code review processes are becoming bottlenecked by AI-generated code that requires significant rework.
+
+## Forces
+
+* **AI Model Limitations**: AI models generate code based on generalized training data, not project-specific patterns, leading to generic solutions that may not fit the project's architecture
+* **Knowledge Gap**: New contributors using AI tools might unknowingly bypass existing architectural norms, coding standards, and established patterns
+* **Review Overhead**: AI-assisted PRs can significantly increase review load if not aligned with existing practices, as maintainers must spend time explaining and correcting deviations
+* **Productivity vs. Quality Trade-off**: While AI tools boost individual productivity, they can reduce overall team productivity if the generated code requires extensive rework
+* **Context Switching Cost**: Developers benefit from AI tools only when they have the right contextual grounding, but manually providing this context for each AI interaction is time-consuming
+* **Inconsistent Standards**: Different AI tools and different prompting approaches by contributors can lead to wildly inconsistent code styles and patterns
+* **Maintenance Burden**: Creating and maintaining the comprehensive AI context requires ongoing effort from maintainers
+* **Tool Integration Complexity**: Different AI tools have different ways of consuming context, making it challenging to create universal guidance
+* **AI Tool Cost Constraints**: Comprehensive AI context increases processing costs (AI tools charge based on "tokens" \* units of text measurement) and usage limits, requiring strategic balance between context completeness and efficiency
+
+## Solution
+
+Provide an **AI Code Generation Context** folder within the repository to guide AI tools in producing contributions that align with project standards. This folder serves as a comprehensive reference that contributors can easily provide to AI tools, ensuring that generated code adheres to project conventions.
+
+### Implementation Structure
+
+Create an `innersource-ai/` folder in the repository root containing:
+
+#### Core Documentation Files (Required)
+
+`PROMPT.md`: Project-specific instructions for AI tools
+
+* Naming conventions (variables, functions, classes, files)
+* Logging patterns and error handling approaches
+* Testing strategy and preferred testing frameworks
+* Code formatting and style preferences
+* Common anti-patterns to avoid
+* Preferred libraries and frameworks for specific tasks
+
+`ARCHITECTURE.md`: Lightweight system overview
+
+* High-level system architecture and component relationships
+* Data flow patterns and API design principles
+* Dependency management guidelines
+* Module organization and layering principles
+* Integration patterns with external systems
+
+`STYLE_GUIDE.md`: Comprehensive coding guidelines
+
+* Language-specific style rules
+* Code organization patterns
+* Documentation standards
+* Performance considerations
+* Security guidelines and common vulnerabilities to avoid
+
+#### Enhancements (Optional)
+
+##### Practical Examples
+
+`EXAMPLES/`: Sample code files demonstrating best practices
+
+* `good-examples/`: Well-written code snippets with explanations
+* `bad-examples/`: Common mistakes with explanations of why they're problematic
+* `refactoring-examples/`: Before/after code showing proper improvements
+* Template files for common patterns (controllers, services, utilities)
+
+##### Configuration and Tooling
+
+`CONFIG/`: Shared formatter and analysis configurations
+
+* `.prettierrc`, `.eslintrc`, or equivalent formatting configs
+* `.editorconfig` for consistent editor settings
+* Static analysis tool configurations
+* Pre-commit hook configurations
+
+`INTEGRATION/`: AI tool-specific integration guides
+
+* GitHub Copilot workspace configuration
+* Custom GPT instructions and prompts
+* IDE plugin configurations
+* CLI tool integration examples
+
+##### Advanced Features
+
+`EMBEDDINGS/` (Optional): For advanced LLM integrations
+
+* Searchable knowledge base of project patterns
+* Vector embeddings of code examples
+* Semantic search capabilities for finding relevant patterns
+
+**Context Efficiency**: Start with core documentation files (~1000 words of context) to balance context value with AI tool costs. Expand strategically based on measured impact on review cycles and code quality.
+
+**Naming Convention**: The suggested file and folder names follow industry common practices. However, codebase owners may choose alternative names that are more discoverable and relatable to their specific project or codebase. Any chosen naming convention should be clearly documented and communicated to contributors through proper documentation. Should files like [AGENTS.md](https://agents.md) and `.aiignore` become standard in the future, the naming conventions in this pattern might be adapted accordingly.
+
+**Handling Existing Documentation**: If files like `ARCHITECTURE.md` already exist, the pragmatic approach is to keep them in their current location and add lightweight reference files in `innersource-ai` that point to them. When the architecture docs, style guides, or other materials are in Confluence or similar external systems, the `innersource-ai` folder becomes a crucial bridge between the codebase and external knowledge. This avoids duplication and keeps the folder consistent. For projects that want tighter integration, code owners could choose to reorganize and consolidate content under `innersource-ai`, but that requires more effort. The approach is flexible enough to support either approach—or even a hybrid—depending on what works best for the repository.
+
+### Usage Patterns
+
+#### For Contributors
+
+* **Before Starting**: Review the AI context to understand project standards
+* **During Development**: Reference specific files when prompting AI tools
+* **Code Generation**: Include relevant context snippets in AI prompts
+* **Validation**: Use provided examples to verify AI-generated code aligns with standards
+
+#### For AI Tool Integration
+
+* **Direct Reference**: Copy relevant sections into AI tool prompts
+* **URL Integration**: Reference files via repository URLs in AI tools that support web access
+* **IDE Integration**: Configure AI plugins to automatically include context
+* **Custom Workflows**: Integrate context into CI/CD pipelines for automated validation
+
+### Maintenance Strategy
+
+* **Version Control**: Track changes to AI context alongside code changes
+* **Regular Updates**: Review and update context as project standards evolve
+* **Community Contribution**: Allow contributors to suggest improvements to AI context
+* **Metrics Tracking**: Monitor the effectiveness of AI context through code review metrics
+
+## Resulting Context
+
+* **Improved Code Quality**: AI-assisted contributions become consistent with existing code standards and architectural patterns from the first submission
+* **Reduced Review Friction**: Maintainers can trust incoming PRs more readily, significantly reducing review fatigue and time-to-merge
+* **Enhanced Contributor Experience**: Contributors using AI produce better, more maintainable code even on their first attempts, leading to increased confidence and participation
+* **Scalable Collaboration**: Opens the door to scalable, AI-aware InnerSource collaboration across teams without sacrificing code quality
+* **Knowledge Preservation**: Project knowledge becomes more explicit and accessible, reducing dependency on tribal knowledge
+* **Faster Onboarding**: New contributors can leverage AI tools effectively from day one, reducing the learning curve for project-specific patterns
+* **Consistent Evolution**: As AI tools improve, the context ensures that enhanced capabilities are channeled toward project-appropriate solutions
+
+## Rationale
+
+This pattern addresses the fundamental mismatch between AI tools' general training and project-specific requirements. By providing structured, easily consumable context, we enable AI tools to generate code that feels like it was written by an experienced project contributor rather than an outsider.
+
+The `innersource-ai/` folder approach is intentionally explicit and discoverable, making it clear to both humans and AI tools where to find project-specific guidance. The modular structure allows teams to implement incrementally, starting with basic style guides and expanding to more sophisticated examples and configurations as needed.
+
+This solution balances the productivity benefits of AI tools with the quality requirements of professional software development, creating a sustainable approach to AI-assisted InnerSource collaboration.
+
+## Status
+
+* Initial
+* Drafted in August 2025
+
+## Authors
+
+* [Amburi Roy](https://www.linkedin.com/in/amburi/)
+
+## Related Patterns
+
+* [Standard Base Documentation](../2-structured/base-documentation.md) - Provides the foundation documentation that AI context builds upon
+* [InnerSource Portal](../2-structured/innersource-portal.md) - Could include AI context availability as searchable metadata for project discovery
+* [Trusted Committer](../2-structured/trusted-committer.md) - Trusted Committers are responsible for maintaining and evolving the AI context
diff --git a/patterns/1-initial/change-the-middle-management-mindset.md b/patterns/1-initial/change-the-middle-management-mindset.md
index 0c3bc1e30..96f90b599 100644
--- a/patterns/1-initial/change-the-middle-management-mindset.md
+++ b/patterns/1-initial/change-the-middle-management-mindset.md
@@ -4,90 +4,126 @@ Change the Middle-Management Mindset
## Patlet
-TBD
+Middle managers often resist InnerSource due to misunderstanding and misaligned incentives. To overcome this resistance, educate them on the benefits, include InnerSource participation in their performance metrics, and demonstrate how it enhances their reputation, reduces team friction, and boosts overall productivity.
## Problem
-The InnerSource program does not live up to its expectations because middle management is reluctant to allocate resources to it. Expectations of the program are faster go-to-market, increased quality, reduced duplicative development, better integration capabilities, and increased developer satisfaction.
+The InnerSource program does not live up to its expectations because middle management is reluctant to allocate resources to it. Expectations of the program are faster go-to-market, increased quality, reduced duplicative development, better integration capabilities, and increased developer satisfaction. Middle management often misunderstands InnerSource's value, fears losing control, and struggles to understand how it fits their metrics. This gap prevents developers from contributing, hindered by managers' misaligned incentives and lack of strategic understanding.
+
+## Story
+
+A software development team at a large enterprise was eager to join an InnerSource project benefiting multiple teams. However, their middle manager hesitated to allocate time, citing quarterly deadlines and unclear ROI. Despite the developers' enthusiasm and potential for code reuse, this caused frustration and missed collaboration opportunities.
## Context
-* Top down InnerSource support. Embedded in their objectives? Trickling down? Top level management has determined a new KPI around InnerSource and it is cascaded down to middle-management? No.
- - a vacuum between top down support and the objectives for developers
- - top down support but no one knows what that means
-* Developer wants to stand up and be a part of InnerSource projects
-* There is no incentive that fits into the middle-management objectives
-* Difficult for middle-management to understand how to enable InnerSource; how to work for controlling the direct output of one team to trying to embrace and let evolve an InnerSource community?
-* Developers contribute and PO/PM or Scrum Master finds out and puts a wall between developers and the InnerSource project
-* Middle-management to support the InnerSource program but higher-priority items keep getting in the way
-* Middle-management would rather duplicate than reuse and collaborate; rewriting the fast and easy way is prioritized over participating in a reusable collaboration.
+This pattern applies when:
+
+* **Top-down support exists, but it lacks middle-management buy-in:** Senior leadership endorses InnerSource, but there's a gap between top-down support and developer objectives. Top-level management may have determined a new KPI around InnerSource, but it's not effectively cascaded down to middle management, leaving them unclear on implications for their teams.
+* **Developers are eager to participate**: Individual contributors want to engage in InnerSource projects but face resistance from their direct managers, who control their time and priorities.
+* **Misaligned incentive structures**: Middle management metrics omit cross-team collaboration and InnerSource, providing no clear benefit for managers to support these activities.
+* **Control vs. collaboration tension**: Middle managers struggle to shift from controlling team output to enabling InnerSource communities, fearing loss of oversight and priorities.
+* **Resource allocation conflicts**: Middle managers support InnerSource but often deprioritize it for other high-priority goals and quarterly commitments.
+* **Short-term thinking prevails**: Organizations often favor quick duplication over reuse and collaboration, with managers preferring the "fast and easy" rewrite approach over collaborative development.
+* **Developer contributions face resistance**: Developers contribute to InnerSource projects, but Product Owners, Product Managers, or Scrum Masters may discover this and put barriers between developers and the InnerSource project.
+* **Established programs need manager adoption**: Organizations have InnerSource programs, but face challenges with middle management adoption and support.
+* **Performance systems lack collaboration metrics**: Existing performance systems don't measure or reward cross-team collaboration.
+* **Shared infrastructure opportunities**: Teams collaborate on shared platforms, services, or infrastructure for mutual benefits.
+* **Recognition programs exist but aren't leveraged**: Organizations can adapt existing gratitude and recognition programs to motivate managers to support InnerSource.
## Forces
-* Embedded accountability problem: middle managers cannot account for the time they spend and put it in their objectives. Need some metric to make it clear it is worthwhile. Has to become a KPI for them.
-* Organizational goals rarely happen with Middle-Management; they write their own goals (or their bosses do); otherwise incentivization happens through budget. Centralized incentivization is very difficult (their other goals will suffer). KPIs tied to people's bottom line can be effective.
-* Educational component: propensity is to blame evil middle-management; they may not know how it works and need to understand it. What benefit they will have for having their people involved in InnerSource?
-* Managers are afraid of having people stolen from them, of having priorities that aren't theirs, of becoming irrelevant.
-* Managers might fear that this will become the wild west (we're the only ones who really care)
-* How to manage priorities in such a bazaar?
-* Middle-management lacks understanding of what InnerSource implies
-* Middle-management has the ability to learn about InnerSource (formalized training)
-* Middle-management has a perceived loss of control, as with InnerSource it is less clear to them what the developers are working on.
+* **Manager resistance**: Middle managers may not see the value in letting team members work on external projects.
+* **Lack of visibility**: Contributions to InnerSource projects may not be visible to direct managers or HR
+* **Misaligned metrics**: Performance evaluation systems don't account for cross-team collaboration
+* **Resource allocation**: Teams are expected to maintain full capacity on their primary projects
+* **Recognition gaps**: No clear path for acknowledging voluntary contributions
+* **Career progression**: InnerSource work may not directly contribute to promotion opportunities
+* **Accountability challenges**: Middle managers cannot account for time spent on InnerSource activities in their objectives and need clear metrics to justify the investment
+* **Goal misalignment**: Organizational goals rarely cascade to middle management, who typically write their own goals or have them set by their superiors
+* **Educational gaps**: Middle managers may lack understanding of what InnerSource implies and need formal training to see the value proposition
+* **Fear of loss**: Managers fear losing team members to other projects, having competing priorities, or becoming irrelevant
+* **Control concerns**: Managers worry about losing oversight and prioritization in a more distributed environment like InnerSource, where it's less clear what developers are working on.
+* **Priority management**: Middle managers struggle with how to manage competing priorities in a more open, collaborative model
+* **Perceived complexity**: Managers may view InnerSource as creating an unmanageable "wild west" environment
## Sketch
-
-
-## Solution
-
-* [Objectives and key results (OKR)](https://en.wikipedia.org/wiki/OKR) - bigger picture. The best tool ever to get serious traction across business organizations. We are one team; creating durable teams horizontally across Business Units (BUs). Tie middle-management into the OKRs; they can tie these into the quarterly goal (L2s) they write.
- * *Editor note: Unclear sentence here* => (WAgile: quarterly we do big planning sessions, L2s are a quarterly goal). Epic for a year, L2 for a quarter.
-* Similarly we have goals cascaded down from management levels. Really high level goals have no bearing on daily work of low level developers, but they have traceability to the highest. If you can have InnerSource high level goals cascaded down, you could justify the time. For this to work it is essential that those InnerSource goals don't conflict with existing goals but rather supplement and at best support them.
-* Can't get the buzz for InnerSource, but can get buzz for reuse and collaboration (and can measure and show these). Defining the EOL processes. Have incorporated these into the End of Life processes. Majority of the EOLs are due to redundancy. Can counter Middle-Management fear. Fear that they will go away; we clearly define what pieces are theirs to see if there are ways to put competing solutions together. We can EOL something and reuse/collaborate and stop wasting resources. Plays really well to management.
-
-* Find Trusted Evangelists
-* Performance measurement needs to include InnerSource
-* OKR/cascading KPIs (proven solution, known to work)
- - OKR are bigger picture than KPIs (defined measurement)
- - need accountability that transcends from top level goals
- - existing goals don't have a cross-BU aspect the way InnerSource does. If we get that, then I can honestly speak to what I'm doing as an individual developer
- - shows actual proof of top down support
-* Events like three day hackathons where the top down people tell middle-managers that their developers have three free days (middle-managers can't say they don't have support)
- - ShipIt Day has a competitive nature (people choose the one idea that is best; everyone else walks away with nothing). Shows an appetite, but not extended out to everybody perpetually. A bit self-defeating.
- - We have innovation days (10% time set aside on calendars, broadcast, you can participate). Choose amongst a few and you get three days to form a new team, work on things together. Hackathon for customer-facing or internal projects (prototypes). Could have an InnerSource day where the metric is: Did you work on someone else's code base? Stand it up and then it becomes available for others to use. Come over to collaborate. Opening an issue=1 point; filing a PR= 5 points; 20 points for merging a PR. Then have an award (two weeks off at Hawaii, all paid with your family; or 3-6 months off to work on your own innovative products; or 6 months part time). Every year could have 1-10 people for InnerSource awards--recognition from the CEO.
-* Fellows program if you can achieve guest [Trusted Committers](../2-structured/trusted-committer.md); you get one day a week to do cross-platform work (they report on it as a measurement of success rather than a measurement of loss). Planning is good as a part of resource allocation (might have to change expectations; we're one team, a whole group).
-* Champions program recruited from any group: could be a Middle-Management champion who has gone through the process before. See who are the new believers. Could put badges on people's names in the directory. Could do cardboard cut-outs of the champion with an InnerSource t-shirt ;-)
-
-* Built-into the whole design of InnerSource process. Delivery teams don't own any code themselves; they change code amongst the product teams. Middle Management for product teams know that requests will come in for their code to be changed. They need to have their developers provide mentorship to the delivery team developers. We have different BLs; each is represented by a delivery team. Product teams focus on larger architectural decisions, ensure that the delivery teams don't mess too much with the Products.
- - We had globalization teams responsible for countries; had constraints (compliance) for each country. Those teams are always good about InnerSource. But for some reason they went away (restructuring).
-
-* Architectural solutions
- - Microservices architecture: creates incentive organizationally for people to collaborate. If a bug occurs, then it creates a problem for the users.
- - but it might be violating an SLA if the bug isn't being fixed
- - the problem comes with feature requests or affects design (going beyond bug fixes)
- - Developing platforms is an ideal InnerSource use case (hackathon to build applications on top)
- - SW Architects have to have an InnerSource mentality and work together.
- - newer companies with open source developers have that mindset
-
-* Empowering Middle Management - InnerSource readiness checklist; Middle Management should partner with their developers. What are the opportunities out there. Can we come up with justification for you to spend any time on this (how does this tie together with our KPIs)
-
-* If the organzation is doing Agile development, during release planning, time and resources for InnerSource practices should be built into sprints.
-
-* **1 step back, 3 steps forward** (aka "the tax"): If my team contributes, what's the tax (in terms of time/resources)?
- * Finding opportunities for contribution
- * Making the component reusable (if applicable)
- * Supporting your contribution (if applicable)
- * Aligning on engagement between teams
- * Code submission, reviews & revision
- * Documented communication w/consumers or host
- * Learning new practices and tools/skills (if applicable)
+
+
+## Solutions
+
+### Manager Education and Value Demonstration
+
+* **Educational outreach**: Provide formal training to help managers understand InnerSource benefits and value
+* **Demonstrate time savings**: Show how InnerSource practices free up time for core development work.
+* **Strategic alignment**: Clarify how InnerSource contributions align with broader organizational goals
+* **Make managers look good**: Demonstrate how InnerSource can make the manager look good and improve team efficiency.
+* **Friction reduction**: Show how InnerSource reduces technical friction (e.g., standardizing library versions) and improves team productivity
+
+### Performance Management Integration
+
+* **OKR integration**: Use [Objectives and Key Results (OKR)](https://en.wikipedia.org/wiki/OKR) to form horizontal teams across Business Units and align middle-management goals with quarterly objectives (L2s). OKRs provide a broader view than KPIs, fostering durable cross-unit teams connected to quarterly goals they set.
+* **Cascading goals**: Ensure InnerSource goals cascade down from high-level organizational objectives without conflicting with existing team goals
+* **Manager recognition**: Reward managers who promote InnerSource participation and enable their teams' involvement
+* **Team efficiency metrics**: Demonstrate how InnerSource reduces friction and improves team productivity
+* **Performance measurement**: Include InnerSource participation in performance reviews and manager evaluations
+
+### Strategic Alignment and Communication
+
+* **Focus on reuse and collaboration**: Frame InnerSource benefits around measurable reuse and collaboration metrics rather than abstract concepts.
+* **End-of-life process integration**: Incorporate InnerSource into EOL processes to reduce redundancy and demonstrate resource efficiency
+* **Clear ownership definition**: Define what code pieces teams own and identify opportunities to consolidate competing solutions
+
+### Community Building and Recognition
+
+* **Trusted evangelists**: Identify and empower core team members and influencers to act as ambassadors for InnerSource contributions
+* **Champions program**: Recruit champions from all groups, including middle-management champions who have successfully implemented InnerSource
+* **Badge system**: Implement recognition badges in organizational directories to highlight InnerSource contributors, or even cardboard cut-outs of champions with InnerSource t-shirts
+* **Cross-BU accountability**: Create goals that transcend individual business units and demonstrate top-down support
+
+### Events and Engagement
+
+* **Dedicated InnerSource events**: Organize hackathons and innovation days for developers to collaborate on cross-team projects with management support. Include ShipIt Days, innovation days with 10% time, and InnerSource days focused on contributing to others' code.
+* **Gamification**: Create point systems for InnerSource contributions: opening an issue = 1 point, filing a PR = 5 points, merging a PR = 20 points, with rewards like two weeks off in Hawaii (paid, with family), 3-6 months off to innovate, or 6 months part-time.
+* **Fellows program**: Establish programs allowing trusted committers one day weekly for cross-platform work, reporting success instead of loss.
+* **CEO recognition**: Create annual InnerSource awards with significant recognition from senior leadership
+
+### Process and Architecture Integration
+
+* **Globalization teams example**: Teams managing countries with compliance constraints are often good at InnerSource but may fade during restructuring.
+* **InnerSource readiness checklist**: Middle Management should partner with developers and justify InnerSource spending based on KPIs.
+* **Built-in collaboration**: Design processes where delivery teams collaborate across product teams with clear mentorship expectations.
+* **Microservices architecture**: Use microservices to foster collaboration and shared responsibility. Bugs cause user problems and may breach SLAs if unresolved. Challenges arise with feature requests or design changes, beyond bug fixes.
+* **Platform development**: Focus InnerSource on platform development for multi-team application building
+* **Architectural mindset**: Ensure software architects adopt an InnerSource mentality and collaborate
+* **Agile integration**: Include InnerSource time and resources in Agile sprint planning.
+* **Resource planning**: Account for InnerSource contribution "tax' using the "1 step back, 3 steps forward' principle: identify contribution opportunities, make components reusable, support your contribution, align teams, handle code submission, reviews, and revisions, communicate with consumers or hosts, and learn new practices, tools, or skills.
## Resulting Context
-* **Support for InnerSource is automatic, standard and expected from Middle Management.**
-* More measurement is required; measurement becomes more sophisticated (easier to measure your own stuff; harder to measure others). Keeping track of time spent in projects.
-* Better training for Middle Management in negotiation and facilitation will be needed.
-* Engineering cost vs. benefit - you will support others; other teams will allow you to make PRs and this will save you time (a balance in the long run.)
+When this pattern is successfully applied, the following outcomes emerge:
+
+### Manager Behavior Changes
+
+* **Support for InnerSource is automatic, standard, and expected from Middle Management.**
+* **Managers become more supportive** of InnerSource initiatives as they see clear value and recognition for their teams.
+* **Middle management gains a deeper understanding** of InnerSource benefits and how they align with organizational goals.
+
+### Organizational Improvements
+
+* **Enhanced cross-team collaboration** and knowledge sharing across the organization
+* **Reduced friction and improved team productivity** through standardized practices and reduced duplication
+* **Better training for middle management** in negotiation and facilitation skills becomes necessary.
+
+### Measurement and Process Evolution
+
+* **More sophisticated measurement systems** are required, as it is easier to measure your own team's work but harder to measure others' contributions.
+* **Time tracking for cross-project work** becomes more critical and systematic.
+* **Engineering cost vs. benefit balance** emerges: teams support others while other teams allow them to make PRs, creating long-term time savings.
+
+## Rationale
+
+This approach addresses how middle managers often block team involvement in cross-team initiatives. By focusing on education, showing value, and linking to performance, organizations can help managers become supporters of InnerSource. Managers need clear personal and team benefits to support InnerSource.
## Known Instances
@@ -97,7 +133,7 @@ TBD
Initial
-## Authors
+## Author(s)
* Silona Bonewald
* Max Capraro, FAU
diff --git a/patterns/1-initial/discover-your-innersource.md b/patterns/1-initial/discover-your-innersource.md
index f64a75c1a..f3261ed66 100644
--- a/patterns/1-initial/discover-your-innersource.md
+++ b/patterns/1-initial/discover-your-innersource.md
@@ -4,13 +4,11 @@ Discover Your InnerSource
## Patlet
-TBD
+When developers don't look for or can't find internally developed solutions, they may waste time and resources creating redundant software. To solve this, implement a robust internal search engine and processes that encourage the discovery and reuse of internal code.
-## Also Known As
+## Problem
-* Not looking for stuff internally
-* Don't bother looking
-* Find it Inside
+People don't bother looking for internally developed solutions - they might not find the repo at all or be aware of its existence.
## Context
@@ -18,48 +16,41 @@ TBD
* This problem is more likely to occur in large, federated companies where different organizational units operate as silos.
* Historically, the company does not have a culture of sharing code across silos.
-## Discussion on
-
-* Comments may appear in the timeline but not with the file once it is edited (github)?
-* https://github.com/InnerSourceCommons/InnerSourcePatterns/pull/60
-* If only X knew what X knew; the internal search engine is bad. No one can find anything because it is difficult to add things to the search index.
-* We have similar challenges getting data sources pulled into the search engine. PayPal is building a project called Agora to do this and they are planning to open source it.
-* Github Enterprise and npmjs have built-in searches on meta-data. Enterprise that opts into these tooling will get some of that functi
-* Software component(s) are available internally but users can't easily find these.
-* This problem is more likely to occur where there are silos in the company (e.g., larger companies; smaller companies may have fewer opportunities for reuse of internally developed software).
-* The company traditionally has been bad at sharing across silos (people don't have the culture of sharing).
-
-## Problem
-
-People don't bother looking for internally developed solutions - they might not find the repo at all or be aware of its existence.
-
## Forces
* No good internal search engine (or not connected to git repositories; and difficult to make this change happen)
* Users may not know there are common places to find internally developed solutions.
* People don't expect to find solutions internally.
* Many silos in the company; difficult to reach the developer base across those silos (a communications problem).
-* People might not want to use internal SW because they don't believe it will be helpful
+* People might not want to use internal software because they don't believe it will be helpful
- might not be maintained
- might have poor reusability
- - if someone put out a SW internally, the expectation is that they wouldn't have time to support it (vs. open source options)
+ - if someone put out a software internally, the expectation is that they wouldn't have time to support it (vs. open source options)
+* Difficulty in adding content to the search index makes it hard for people to find anything
## Solution
Make it easy to find the reusable code.
-* Pull in Repo names, descriptions and README.md files into the search engine assuming that a search engine exists. Note: a one-stop-shop kind of search engine for all relevant communication and documentation is difficult to attain. Even when using Github's enterprise offering, people often deploy additional systems like wikis to host content orthogonal to what is in the code repositories, slack channels (or IRC), mailing lists (or even nntp servers), some place to store stuff written down in office formats, search over personal e-mail etc. Several of these systems come with search built-in, but integrating this content in one search box or even just deploying a federated search engine across all sources often doesn't come off-the-shelf.
-* Implement process change to first check for internal solutions for this problem.
-* Tool with a central view (but people are more inclined to google externally than look internally)
+### Behavior and Process Changes
+
+* Implement process change to motivate developers to first check for internal solutions for problems that they need to solve.
* Concierge service (guide) to help product people find stuff. Might not scale but could be helpful in the beginning.
-* Need some very visible lighthouse projects that start using inner source components and make positive statements about the inner source program.
-* Establish a common, asynchronous communication channel (e.g., like slack or metamorph or yammer) across team boundaries. This might not scale beyond a certain organization size. It is possible people will start splitting this one channel into multiple channels by topic once traffic gets too high. Note: having one channel for many users of one tool might be considered an anti-pattern because they can't find it unless they already know about it.
+* Need some very visible lighthouse projects that start using InnerSource components and make positive statements about the InnerSource program (to increase the trust of your developers in your InnerSource components.
* Encourage (and reward) owners of reusable code to use the same search engine to continually search for products that are candidates for use and adoption of the reusable code but not currently doing so.
-* Consider creating a marketplace for marketing InnerSource programs (management can use this mechanism to know which InnerSource projects to fund, but seeing how the marketplace reacts).
-## Known Instances
+### Tooling Changes
-TBD
+* Pull in repo names, descriptions and `README.md` files into the search engine assuming that a search engine exists. Note: a one-stop-shop kind of search engine for all relevant communication and documentation is difficult to attain. Even when using GitHub's enterprise offering, people often deploy additional systems like wikis to host content orthogonal to what is in the code repositories, slack channels (or IRC), mailing lists (or even NNTP servers), some place to store stuff written down in office formats, search over personal e-mail etc. Several of these systems come with search built-in, but integrating this content in one search box or even just deploying a federated search engine across all sources often doesn't come off-the-shelf.
+* Consider using existing tools:
+ * GitHub Enterprise and npmjs have built-in searches on meta-data
+ * PayPal's [SeazMe](https://github.com/paypal/seazme) project (previously called Agora) addresses similar challenges with data source integration
+* Tool with a central view (but people are more inclined to google externally than look internally)
+* Establish a common, asynchronous communication platform (e.g., chat based) across team boundaries.
+ * This might not scale beyond a certain organization size.
+ * Start with a single chat channel for the InnerSource project, splitting into multiple only when traffic is high. This keeps the channel active and minimizes channels for the host team. Mention this channel clearly in key docs like README.md, CONTRIBUTING.md, and onboarding materials to help users find and join the conversation.
+ * Note: having one channel for many users of one tool might be considered an anti-pattern because they can't find it unless they already know about it.
+* Create a marketplace for marketing InnerSource programs (management can use this mechanism to know which InnerSource projects to fund, by seeing how the marketplace reacts). - see [Gig Marketplace](../2-structured/gig-marketplace.md)
## Resulting Context
@@ -68,11 +59,21 @@ TBD
* Developers are now looking internally for software components
* Search results are combined (internal and external)
* Process changes, establishing a common communications channel, and encouraging and rewarding owners of reusable code to use the same search engine can contribute to changing the corporate culture. Transformation begins from the grassroots but requires strategic involvement of thought leaders.
-* See [Improved Findability](improve-findability.md) (aka Poor Naming Conventions or Badly Named Piles) as a related pattern.
+
+
+
+## Known Instances
+
+* Nike Inc.
+* WellSky
## Status
-* Initial (brainstormed solution)
+* Initial
## Authors
@@ -83,4 +84,12 @@ TBD
## Acknowledgements
-* Contributions from Russ Rutledge, Ofer Hermoni and Robert Hanmer
+* Russ Rutledge
+* Ofer Hermoni
+* Robert Hanmer
+
+## Alias
+
+* Not looking for stuff internally
+* Don't bother looking
+* Find it Inside
diff --git a/patterns/1-initial/document-architecture-decisions.md b/patterns/1-initial/document-architecture-decisions.md
index f980bd7be..8642b86c1 100644
--- a/patterns/1-initial/document-architecture-decisions.md
+++ b/patterns/1-initial/document-architecture-decisions.md
@@ -71,7 +71,7 @@ Important elements of the solution are:
- How to collect feedback effectively on the ADR/TDR from diverse stakeholders, ensuring a broad range of input.
- How to incorporate the feedback and adjust the ADR/TDR as needed.
- How to move the ADR/TDR towards a conclusion or final decision (e.g., with sign-off from relevant maintainers or decision-makers).
- - The use of appropriate tools, considering that non-technical stakeholders may not have direct access to source control or specialized software. Publish the decsions to a website or wiki.
+ - The use of appropriate tools, considering that non-technical stakeholders may not have direct access to source control or specialized software. Publish the decisions to a website or wiki.
- **A commitment to iterating on the ADR/TDR templates and process**:
- Regularly refining the ADR/TDR templates and associated processes based on feedback and the evolving needs of the organization.
@@ -180,7 +180,7 @@ The ADR/TDR approach also carries risks that a team want to acknowledge:
## Rationale
-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 format for all system components, tools and workflows. Michael Nygard announced 2011 the idea to document architecture decision with a simple markdown template and shared it with a simple git project. Today this **ADR tool** is well proven and a many of teams around the globe use **Architecture Desicion Records (ADRs)** to document there design desicions.
+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 format for all system components, tools and workflows. Michael Nygard announced 2011 the idea to document architecture decision with a simple markdown template and shared it with a simple git project. Today this **ADR tool** is well proven and a many of teams around the globe use **Architecture Decision Records (ADRs)** to document there design decisions.
Another important aspect of defining architectural decisions is documenting consequences. In Technical Debt Records, Dr. Michael Stal explores the systematic tracking and management of technical debt in software development using **Technical Debt Records (TDRs)**. Similar to how Architecture Design Records (ADRs) capture architectural decisions, TDRs document trade-offs in code quality made to accelerate delivery. The TDRs provides a detailed template for documenting technical debt, and Christoph Kappel introduces a record tool to streamline the process of ADRs and TDRs.
diff --git a/patterns/1-initial/governance-based-project-setup.md b/patterns/1-initial/governance-based-project-setup.md
index 4ec36e865..f1f96293e 100644
--- a/patterns/1-initial/governance-based-project-setup.md
+++ b/patterns/1-initial/governance-based-project-setup.md
@@ -9,7 +9,7 @@ A dedicated list of resources (best practices, recommended patterns, target matu
## Problem
-A team has decided that they want to publish an InnerSource project. They are trying to decide on a [Governance Level](../1-initial/governance-levels.md) for their project. However lacking practical experience, they need further guidance on the impact each of the levels will have on their daily doing.
+A team has decided that they want to publish an InnerSource project. They are trying to decide on a [Governance Level](../2-structured/governance-levels.md) for their project. However lacking practical experience, they need further guidance on the impact each of the levels will have on their daily doing.
## Context
diff --git a/patterns/1-initial/incentive-mechanisms-for-voluntary-contribution.md b/patterns/1-initial/incentive-mechanisms-for-voluntary-contribution.md
index c433d35e8..7c911f919 100755
--- a/patterns/1-initial/incentive-mechanisms-for-voluntary-contribution.md
+++ b/patterns/1-initial/incentive-mechanisms-for-voluntary-contribution.md
@@ -1,95 +1,122 @@
## Title
-Incentive mechanisms to foster voluntary contribution
+Incentive Mechanisms for Voluntary Contributions
## Patlet
-TBD
+Organizations struggle to motivate employees to contribute to InnerSource projects due to misaligned incentives and lack of recognition. Implement a multi-layered incentive system combining financial rewards, institutional recognition, and career growth opportunities to boost voluntary participation.
## Problem
-In hierarchical and silo-organized organizations, getting voluntary contributions in InnerSource
-projects can be challenging. It is crucial to create mechanisms to incentivize managers to foster
-voluntary contributions. Consider the following story:
+Organizations struggle to motivate employees to contribute voluntarily to InnerSource projects. Employees prioritize team responsibilities over cross-team collaboration because InnerSource contributions lack recognition, don't impact performance evaluations, and don't advance career growth. This leads to underused initiatives and missed opportunities for knowledge sharing and innovation.
-Company A has started an InnerSource initiative. Their InnerSource concept expected to have
-associates voluntarily contributing to InnerSource projects, regardless of topic and regardless of
-home-business-unit alignment.
+## Story
-After some time in activity, the core team realizes that their InnerSource project is not getting
-voluntary contributions. While engaging with potential individual contributors, the
-core team (pattern link) has consistently learned that the contributors in question were
-not allowed to contribute or have their participation in InnerSource projects rejected by
-their respective line managers. The reasons presented by management are:
+At a large financial services company, a developer found an InnerSource project that could boost team efficiency. However, their manager discouraged participation, citing misaligned strategy and capacity issues. Despite potential benefits, the developer couldn't contribute due to misaligned incentives and lack of recognition for cross-team collaboration.
-- the lack of strategic alignment between the InnerSource project goal and the business unit product/service portfolio,
-- managers have planned their developer's capacity 100% to the home business units projects.
+## Context
-So, the management is not motivated to provide their scarce developer capacity to the
-InnerSource project.
+- Organizations with established InnerSource programs
+- Teams working on shared platforms or infrastructure
+- Performance management systems that focus on team-specific metrics
+- Middle management accountable for business unit results
+- Employees motivated by recognition, career growth, or financial rewards
+- Cross-organizational collaboration is not the organizational norm
+- Contributions to InnerSource projects are expected during working hours
+- Top management has sponsored the InnerSource initiative
-As a result, the total number of contributors remained restricted to the core team and the
-project cannot build a community of developers. Furthermore, contributions mostly originated
-in the same business unit the [Dedicated Community Leader](../2-structured/dedicated-community-leader.md)
-belonged to. Innovation did not happen in the expected scale. Top management is no longer
-convinced that InnerSource yields the expected benefits and abandons the initiative altogether.
+## Forces
-## Context
+**Time and Resource Constraints**
-- The InnerSource initiative is sponsored (budget) by top level management.
-- The managers (middle-management) have their bonus directly depending
-only on business units results under their responsibility
-- The capacity of every associate is usually planned by their superiors
-and 100% allocated to the home business unit projects
-- Cross organizational collaboration is not the norm.
-- Contributions to InnerSource projects are expected to be made during working
- hours.
+- Employees have limited time and must prioritize their primary responsibilities
+- Teams are expected to maintain full capacity on their primary projects
+- Manager resistance to allowing team members to work on external projects
-## Forces
+**Recognition and Visibility Gaps**
+
+- Contributions to InnerSource projects lack visibility to direct managers or HR
+- No clear path for acknowledging voluntary contributions
+- Performance evaluation systems ignore cross-team collaboration
+
+**Career and Incentive Misalignment**
+
+- InnerSource work may not advance career progression or promotion
+- Managers' bonuses depend solely on business unit results
+- Cross-team collaboration reduces capacity for primary business unit goals
+
+**Individual vs. Organizational Motivations**
+
+- Contributors want to expand networks and gain technical knowledge
+- Organizations need to balance individual growth with business unit objectives
+
+## Solutions
+
+### Financial Incentives
+
+- **Gratitude budgets**: Allocate specific budgets for recognizing InnerSource contributions
+- **Performance bonuses**: Include InnerSource participation in annual performance evaluations
+- **Project-based rewards**: Provide financial incentives for completing specific InnerSource tasks
+- **Platform tools**: Use tools like Hey Taco and Bonusly for peer-to-peer recognition with monetary value
+- **Capacity planning**: Define corporate strategy to keep development capacity at 85%, reserving 15% for cross-team initiatives
+- **Reimbursement mechanism**: Central, funded mechanism refunds managers for time spent on InnerSource projects
+- **Engineering bonus allocation**: Allocate 15% of engineering bonuses based on InnerSource contributions
+
+### Institutional Recognition
+
+- **Badging programs**: Implement digital badges for different levels of contribution (Acclaim, Credly)
+- **Public recognition**: Feature contributors in company newsletters, blogs, or town halls
+- **Manager awards**: Recognize managers who enable their teams' InnerSource participation
+- **First contribution celebration**: Automatically celebrate and publicize first pull requests
+- **Cross-team recognition**: Promote recognition at the company level, not just within teams
-- Managers of business units are held accountable for their results. Reducing
- the capacity of an associate contributing to an InnerSource project rather
- than the goals of the business unit will make it harder for them to reach or
- exceed their goals.
-- The more time an associate spends on contributions to an InnerSource project
- which does not benefit his day-to-day work, the more will the workload for
- his teammates in his business unit increase.
-- The individual contributor would like to participate to enhance his
- professional network within the company and gain knowledge and experience
- with both the InnerSource method and the technical area he makes a
- contribution to.
-
-## (Possible) Solution
-
-- The top management sets and communicates a corporate strategy where development
- capacity are to be planned and committed to a maximum of 85% to home business units projects
-- A central funded formal contracting mechanisms, where line managers get
- refunded by the percentage of associates work time in InnerSource is in place.
-- Managers (middle-management) have a percentage of their bonus associated to
- contribution and the results of InnerSource projects not directly related/sponsored
- by their business units.
-- Utilize any existing engineering-wide bonus that allots some percentage of each employee's
- bonus to be aligned with Inner Source interactions. It could be # of commits, or commits +
- issues + documentation + chat interaction, etc. Utilize some kind of personally-linked
- statistic to fill, for example, 15% of each employees bonus. Note that this encourages
- after-hours type work more-so than regular work-week hours, but if combined with other
- solutions above, could hit the issue from multiple angles. (used partially @ RedHat)
+### Career and Professional Growth
+
+- **Goal alignment**: Allow employees to align InnerSource work with individual performance goals
+- **Skill development**: Use InnerSource projects for upskilling in new technologies
+- **Leadership opportunities**: Create pathways for contributors to become project leaders or champions
+- **Promotion support**: Use peer recognition and contributions as evidence for career advancement
+- **Mentorship roles**: Enable experienced contributors to mentor others
+
+### Manager Incentives
+
+- **Management recognition**: Reward managers who promote InnerSource participation
+- **Team efficiency metrics**: Demonstrate how InnerSource reduces friction and improves team productivity
+- **Strategic alignment**: Show how InnerSource contributions align with broader organizational goals
+- **Management bonuses**: Make managers' bonuses partly depend on InnerSource contributions and project results
## Resulting Context
-- The top management communication of the strategic decision to plan and commit
- 85% of developers capacity and have 15% buffer for other company initiatives,
- for instance InnerSource projects, shows their support and sets a clear sign
- that InnerSource is part of the corporate goal and get executive air cover.
-- Allocation of corporate funds to business units for reimbursement of
- development capacity makes easier for business units to contribute to InnerSource
- projects without to commit their cost center budget.
-- Setting the bonus of middle-management partially depending on contributions and the success
- of InnerSource projects, motivates managers to encourage their developers participate on those
- projects
-- With a stable group of contributors, it is more likely that some of them will
- eventually achieve trusted committer status and the InnerSource project will be able
- to establish a healthy community around their project.
+After implementing incentive mechanisms, organizations experience:
+
+**Positive Outcomes**
+
+- Increased voluntary participation in InnerSource projects
+- Better cross-team collaboration and knowledge sharing
+- Managers become more supportive as they recognize the value for their teams
+- Employees find new career growth opportunities
+- Organization benefits from improved code quality, reduced duplication, and faster innovation
+- A stable contributor group emerges, with some becoming trusted committers
+
+**Strategic Benefits**
+
+- Top management's 85%/15% capacity allocation shows executive support and makes InnerSource part of corporate goals
+- Corporate funding for InnerSource projects prevents cost center budget impacts
+- Manager bonuses tied to InnerSource success motivate participation encouragement
+- Strong InnerSource community develops with committed contributors
+
+**Potential Challenges**
+
+- New challenges in measuring contributions and ensuring fair recognition across different contribution types
+- Need for ongoing management of incentive programs and recognition systems
+
+## Rationale
+
+This approach targets key human motivators for voluntary participation: financial security, social recognition, and personal growth. Combining incentives appeals to diverse motivations, creating a sustainable system that benefits both individuals and the organization. Including manager incentives is vital because middle management often controls participation in cross-team initiatives.
+
+## Known Instances
+
+TBD
## Status
@@ -101,6 +128,7 @@ and 100% allocated to the home business unit projects
* Georg Gruetter (Robert Bosch GmbH)
* Robert Hansel (Robert Bosch GmbH)
* Nick Yeates
+* Jeff Bailey
## Alias
diff --git a/patterns/1-initial/include-product-owners.md b/patterns/1-initial/include-product-owners.md
index 1f0e64360..27d2ff6ec 100644
--- a/patterns/1-initial/include-product-owners.md
+++ b/patterns/1-initial/include-product-owners.md
@@ -57,7 +57,7 @@ Key Performance Indicators (KPIs) for Product Owners are primarily product focus
## Known Instances
-* PayPal is looking into finding a search solution for their project Agora. They are collaborating with other teams pursuing a similar mission, eliminating redundancy and inefficiency regarding effort and tools.
+* PayPal is looking into finding a search solution for their project [SeazMe](https://github.com/paypal/seazme) (previously called Agora). They are collaborating with other teams pursuing a similar mission, eliminating redundancy and inefficiency regarding effort and tools.
## Status
diff --git a/patterns/1-initial/innersource-ambassador.md b/patterns/1-initial/innersource-ambassador.md
index 39bbda198..cbb9e9931 100644
--- a/patterns/1-initial/innersource-ambassador.md
+++ b/patterns/1-initial/innersource-ambassador.md
@@ -43,7 +43,7 @@ In a multinational organization, the ISPO implemented InnerSource initiatives bu
- Ambassadors support and encourage InnerSource across the department while maintaining their primary organizational roles.
- Strive to have departmental leadership support (and even assist in identifying) the ambassador.
- Train ambassadors on InnerSource principles, tools, and the goals of the ISPO.
-- Establish clear expectations for ambassadors, including acting as a liaison, promoting InnerSource practices, and providing feedback to the ISPO.
+- Establish clear expectations for ambassadors, including acting as a liaison, promoting InnerSource practices, reporting impactful instances of InnerSource activity, and providing feedback to the ISPO.
- Create incentives for the ambassors, e.g. making ambassador work part of the reward system of the organization and praising their work (refer to the pattern [Praise Participants](../2-structured/praise-participants.md)).
- Create a support network among ambassadors to share best practices and foster a sense of community.
- Schedule regular check-ins between ambassadors and the ISPO to gather insights and provide guidance.
@@ -61,10 +61,21 @@ InnerSource Ambassadors leverage their existing knowledge of their departments a
The rewards for the ambassadors will vary by individual motivations. Rewards that ambassadors have expressed are that being an ambassador provides opportunity to build their internal network, enhance their communication and influence skills, build their knowledge further about InnerSource, build their presentation and speaking skills, and learn about other products and teams within their company.
+There are many examples in the industry, using similar concepts. Sometimes used as part of the marketing activities of the company as well (i.e. to advertise for their products).
+
+Here some examples from the commercial domain, academia and open source:
+
+- **IBM** is using similar concepts in various areas: [IBM Champions](https://www.ibm.com/community/ibm-champions/), [IBM Z Ambassadors](https://www.yourbigyear.com/ibm-z-student-ambassador-program), [IBM Skillsbuild Student Ambassadors](https://www.yourbigyear.com/ibm-skillsbuild-student-ambassador-role)
+- **IBM Research** has a concept called [IBM Quantum Ambassadors](https://www.ibm.com/training/badge/ibm-quantum-associate-ambassador)
+- **Red Hat** has a concept called [Red Hat Champions](https://access.redhat.com/champions)
+- **CNCF** has a concept called [CNCF Ambassadors](https://www.cncf.io/people/ambassadors/application-process/)
+
## Known Instances
-- *SAP* has a concept called [Open Source Champions](https://community.sap.com/t5/open-source-blogs/sap-open-source-champions/ba-p/13539587) that seems related
-- [WellSky](https://wellsky.com/) has the analogous concept of InnerSource Champions representing each business area of the company.
+- **SAP** has a concept called [Open Source Champions](https://community.sap.com/t5/open-source-blogs/sap-open-source-champions/ba-p/13539587) that seems related
+- **[WellSky](https://wellsky.com/)** has the analogous concept of InnerSource Champions representing each business area of the company.
+- **Siemens** has 70 Social Coding Ambassadors from across subsidiaries and countries that promote the Open and InnerSource mindset across the company.
+- **Robert Bosch GmbH** has the analogous concept of *Social Coding Advocates*.
## Status
@@ -82,5 +93,6 @@ The rewards for the ambassadors will vary by individual motivations. Rewards tha
## Alias
-- Departmental InnerSource Representatives/Champion/Ambassador
-- Local InnerSource Representatives/Champion/Ambassador
+- Departmental InnerSource Representatives/Champion/Ambassador/Evangelist
+- Local InnerSource Representatives/Champion/Ambassador/Evangelist
+- Social Coding Ambassador
diff --git a/patterns/1-initial/innersource-as-career-booster.md b/patterns/1-initial/innersource-as-career-booster.md
new file mode 100644
index 000000000..f2fe58e2b
--- /dev/null
+++ b/patterns/1-initial/innersource-as-career-booster.md
@@ -0,0 +1,88 @@
+## Title
+
+InnerSource as a Career Booster
+
+## Patlet
+
+Many employees wonder how contributing to InnerSource projects benefits their careers beyond their immediate team objectives.
+By engaging in InnerSource, individuals expand their skills, grow their network, increase visibility across the organization, and unlock new career opportunities.
+
+## Problem
+
+Contributors often perceive a conflict between spending time on InnerSource projects and advancing their own careers within their team structure, worrying that their efforts outside of their immediate team won't be recognized, rewarded, or aligned with their manager's goals.
+
+## Story
+
+A developer named Mia worked on a customer-facing product but frequently found herself fixing issues in a shared internal library managed by another team. Initially, she worried this was a distraction. But her consistent contributions were noticed across teams, and soon she was asked to lead a cross-functional initiative. Her reputation grew beyond her team, and her promotion case became significantly stronger due to her recognized impact across the organization.
+
+## Context
+
+- The organization has active InnerSource projects with open contribution models.
+- Contributors are typically evaluated based on performance metrics within their own teams or reporting lines.
+- Performance reviews and promotions prioritize local (team-level) impact.
+- There is no formal recognition system for cross-team contributions.
+- Contributors are autonomous in how they manage their time to some extent.
+
+## Forces
+
+- **Local vs Global Optimization**: Employees are incentivized to focus on team goals over organizational goals.
+- **Recognition Visibility**: Effort outside one's direct team may be invisible to their manager or leadership chain.
+- **Risk Aversion**: Individuals may avoid unfamiliar domains or people, fearing judgment or failure.
+- **Career Laddering**: Most career frameworks reward specialization, but InnerSource often requires generalist or systems thinking.
+- **Cognitive Load**: Switching contexts between one's own project and InnerSource work can temporarily reduce productivity.
+- **Informal Influence**: Power networks within organizations often form across reporting lines, rather than within them.
+
+## Sketch
+
+_(Illustration of a person bridging multiple teams through contribution lines, forming a network of reputation that extends beyond a siloed organizational chart.)_
+
+## Solution
+
+- **Showcase Contributions**: Encourage contributors to document and publicly share what they've done—use README updates, changelogs, team demos, and retrospectives.
+- **Manager Alignment**: Educate managers on how InnerSource work contributes to organizational success and advocate for its inclusion in performance reviews.
+- **Sponsor-Led Recognition**: Have senior leaders or project maintainers acknowledge and elevate contributors in visible channels (e.g., newsletters, all-hands shoutouts).
+- **Skills Framing**: Frame InnerSource work as evidence of cross-functional collaboration, systems thinking, and initiative—qualities valued in promotion cycles.
+- **Strategic Contributions**: Guide contributors to choose InnerSource work aligned with known organizational pain points or strategic initiatives.
+- **Peer Signaling**: Use endorsements from other teams to validate a contributor's impact and influence.
+- **Social Capital Theory Application**: Build trust and reciprocal goodwill by contributing value, which often returns as opportunities (e.g., invitations to new projects, referrals, promotions).
+- **Game Theory Insight**: Treat InnerSource as a non-zero-sum game—helping other teams increases total organizational output and reputational payoff over time.
+
+## Resulting Context
+
+Contributors who engage in InnerSource build a broader reputation, accelerate their learning, and gain exposure to leadership and lateral networks—benefits that compound into real career growth.
+
+The organization sees better collaboration and higher retention among high-performing, ambitious individuals.
+
+This creates a reinforcing loop where career incentives and organizational goals align more closely.
+
+## Rationale
+
+From a **career development** perspective, diverse project experience, network breadth, and initiative-taking are strong signals of promotability.
+
+**Psychologically**, autonomy, mastery, and purpose—core drivers of motivation—are naturally supported by InnerSource work.
+
+From a **game theory** lens, InnerSource transforms isolated career efforts into a reputational economy, where value created for others is returned through visibility, referrals, and opportunities.
+
+## Known Instances
+
+TBD
+
+## Status
+
+- Initial
+
+## Authors
+
+- Jeff Bailey
+- Sebastian Spier
+
+## References
+
+- Dirk Riehle - [How Open Source Is Changing the Software Developer’s Career](https://dirkriehle.com/wp-content/uploads/2015/04/r5rie-v3.pdf)
+- Bertrand Delacretaz - [How to convince your left brain (or manager) to follow the Open Source path your right brain desires](https://www.youtube.com/watch?v=F0SmiQ3SF6Q)
+
+## Alias
+
+- Career Growth through InnerSource
+- InnerSource for Personal Branding
+- Cross-Team Contributions as Promotion Strategy
diff --git a/patterns/1-initial/innersource-before-open-source.md b/patterns/1-initial/innersource-before-open-source.md
new file mode 100644
index 000000000..80c9f12c0
--- /dev/null
+++ b/patterns/1-initial/innersource-before-open-source.md
@@ -0,0 +1,98 @@
+# Title
+
+Require InnerSource before Open Source
+
+## Patlet
+
+Maintaining and managing open source projects can be challenging for organizations, due to a lack of internal infrastructure and people with the knowledge of the required collaboration practices. By requiring projects to be InnerSource before becoming open source, teams have time to establish the necessary internal support, governance, and collaboration skills needed for successful community engagement.
+
+## Problem
+
+When a project is released as open source without first building a strong internal contributor base, it may face challenges such as insufficient documentation, unclear governance, and difficulty managing external contributions. Without prior experience in collaborative development, maintainers may struggle to handle the influx of external contributors, resulting in an unsuccessful or unsustainable open source project.
+
+## Story
+
+A large tech company once open-sourced a widely used internal tool, expecting external developers to contribute immediately. However, due to a lack of contributor guidelines, onboarding processes, and structured governance, external adoption was low, and internal maintainers were overwhelmed with unstructured contributions and support requests.
+
+After seeing this, the company implemented an InnerSource-first policy, ensuring internal teams could practice open collaboration before releasing future projects as open source.
+
+## Context
+
+This pattern applies in organizations that:
+
+- Want to release internal software as open source.
+- Lack structured internal collaboration processes.
+- Have teams unfamiliar with maintaining open source projects.
+- Need to establish internal governance and contribution models before engaging the broader open source community.
+- Operate in regulated industries (healthcare, financial services) where compliance requirements are stringent.
+- Have concerns about intellectual property, security, or competitive advantage when releasing code publicly.
+- Want to validate project value and adoption internally before external exposure.
+
+## Forces
+
+- **Collaboration Readiness**: Teams may not be used to handling external contributions or asynchronous collaboration.
+- **Documentation Gaps**: A lack of contributor guidelines, API documentation, and onboarding materials can hinder adoption.
+- **Governance & Ownership**: Without clear ownership and decision-making processes, project direction can become unclear.
+- **Support Burden**: Open source projects require active maintainers to review pull requests, address issues, and engage the community.
+- **Security & Compliance**: Code may require review to meet licensing and security requirements before being released publicly.
+- **Regulatory Compliance**: Increasing government regulations may require additional considerations when moving from InnerSource to Open Source.
+- **Intellectual Property Risk**: Corporate information embedded in comments or code may create legal exposure when released publicly.
+- **Bidirectional Movement**: Projects may need to move from Open Source back to InnerSource if they become unmaintained or face sustainability challenges.
+- **Market Awareness**: Limited understanding of InnerSource practices in the broader market may affect external adoption.
+
+## Solution
+
+Before making a project open source, require it to go through an InnerSource phase where:
+
+1. The project is made available internally for contributions from other teams e.g. via an [InnerSource Portal](../2-structured/innersource-portal.md).
+2. Clear [documentation](../2-structured/base-documentation.md) (including contribution guidelines), and [governance structures](../2-structured/governance-levels.md) are established.
+3. Maintainers gain experience managing contributions, reviewing pull requests, and addressing issues.
+4. Maintainers get to practice the soft skills required to support a community of people outside of their own team.
+5. Internal adoption and success metrics are measured to determine if the project is ready for external release. Some possible metrics are detailed in the [Repository Activity Score](../2-structured/repository-activity-score.md).
+6. Feedback loops are created to refine processes before engaging a broader open source audience.
+7. **Legal and compliance review**: Conduct thorough checks for copyright, patents, and corporate information that may be embedded in comments or code before external release.
+8. **Security assessment**: Perform security reviews to ensure open sourcing won't create vulnerabilities or expose sensitive information.
+9. **OSP/OSPO vetting**: Have an Open Source Program Office (OSPO) or equivalent team review the project for engineering quality, legal compliance, and strategic alignment.
+10. **Approval process**: Establish a formal approval workflow where projects are added to an approved list that legal departments can reference for ongoing compliance.
+11. Decision about whether or not the project should be released as open source (based on the success metrics defined earlier). The incubation phase as an InnerSource project can be seen a quality gate. So naturally not all projects will pass that gate.
+
+## Resulting Context
+
+- Teams develop the skills necessary to manage open source projects effectively.
+- Contributor documentation and governance structures are established and tested.
+- Further internal teams start using the project (adoption), providing validation of the project's value before external release.
+- The transition to open source is smoother, with better preparedness for external collaboration.
+
+## Rationale
+
+Releasing a project as open source may feel daunting, especially when an organization has never done this before. Being able to practice things internally can be a safer space for experimentation and failure.
+
+If it turns out that a given InnerSource project does not gain enough adoption internally, the organization may decide to not make the project open source at all. This assumes that the organization is large enough to allow for a realistic internal test.
+
+Allowing the maintainers of the project to practice the required skills internally mitigates risks, improves sustainability, and maximizes the chances of long-term success of the project.
+
+## Known Instances
+
+- **Mercado Libre (MELI)**
+
+### Mercado Libre (MELI)
+
+Mercado Libre tags projects with badges to identify at which stage of their self-defined InnerSource maturity a project currently is. The first step for a project is to receive the **InnerSource Ready** badge. This indicates that the project meets the structure, artifacts, and documentation quality required for the initiative. This stage also uploads project information to our internal [InnerSource project portal](../2-structured/innersource-portal.md), creating more visibility for the project, allowing it to receive contributions and become better known within our teams.
+
+We are currently reviewing our InnerSource stage flow, where a project will be able to use AI-based tools to automatically generate all the necessary requirements to be considered InnerSource Ready. This will allow us to focus more on making it active and attractive to the internal community. For more about the different different stages of InnerSource maturity used at Mercado Libre, see [Transforming software development at Mercado Libre with InnerSource](https://medium.com/mercadolibre-tech/transforming-software-development-at-mercado-libre-with-innersource-016b35e1ded3).
+
+## Status
+
+- Initial
+
+## Author(s)
+
+- Sebastian Spier
+- Fernando Correa
+- Jeff Bailey
+
+## Alias
+
+- InnerSource as a Stepping Stone to Open Source
+- InnerSource before Open Source
+- InnerSource Incubation before Open Source
diff --git a/patterns/1-initial/innersource-hackathon.md b/patterns/1-initial/innersource-hackathon.md
deleted file mode 100644
index 4ad62ca02..000000000
--- a/patterns/1-initial/innersource-hackathon.md
+++ /dev/null
@@ -1,86 +0,0 @@
-## Title
-
-InnerSource Hackathon
-
-## Patlet
-
-In a company, initially only InnerSource enthusiasts are interested and practicing InnerSource during the early stages of InnerSource adoption; not all engineering teams are willing or have enough time and resources to adopt InnerSource. In this scenario, it is good to provide a safe space to try and adopt InnerSource through an InnerSource Hackathon event within the company.
-
-## Problem
-
-The company wants to adopt InnerSource as software development methodology but only those familiar with open source principles or those who understand the benefits of InnerSource, adopt it. It results in just a handful of InnerSource projects and is difficult to scale beyond that.
-
-## Context
-
-### Scenario 1: Challenges in scaling beyond the early adopters
-
-The senior leadership believes in InnerSource and wants to drive it throughout the company. The engineers who are familiar with open source principles and/or understand the benefits of InnerSource are the early adopters. There is success with these initial pilot project and teams.
-
-Now the next step is to drive it across the company. There might be reluctance from engineering teams due to various factors like:
-
-* not familiar with InnerSource or open source practices
-* not enough time to prioritize InnerSource, given the regular work deliverables
-* reluctance to changing ways of working when everything works well already
-* unclear return on investment for the upfront setup costs that an InnerSource project takes
-
-### Scenario 2: Challenges in getting contributions and building community around InnerSource projects
-
-Teams slowly start adopting InnerSource and open up their repositories. Some new projects are started as InnerSource projects from the start (that is open for contributions). However, there are not many contributors. It is also challenging to build a community around those projects, in spite of publishing the projects in an InnerSource Portal. This could be due to various reasons like:
-
-* engineers do not have time to explore new InnerSource projects and contribute, outside regular work deliverables
-* no additional incentive to this effort apart from being acknowledged
-* lack of motivation by middle management
-
-## Forces
-
-Apart from the reasons listed in the Context section, there are other factors from different entities that prevent teams from adopting InnerSource like:
-
-* From middle management: perception of no direct benefit to the team apart from team upskilling and individual growth; eventually resulting in no motivation by the middle management to the engineers in trying out InnerSource ways of working.
-* From engineers: investing time to try new ways of working when there is already time and resource constraint for regular work deliverables; it is also challenging to balance both and show outcomes in both; this curbs motivation from the engineers as there is little safe space to experiment.
-* From senior leadership: not prioritizing investment in InnerSource ways of working such as it being part of long term goals or OKRs.
-
-For those new to InnerSource or any technology/methodology, there is a need for safe space to try and experiment without definite outcomes in the initial stages. These factors and forces hinder such an experiment ground.
-
-## Solution
-
-Organize a company-wide hackathon focused on InnerSource. An InnerSource hackathon provides a safe space for engineers to try and contribute to InnerSource projects without any presumption and prejudice. It could be a 1 or 2 day event.
-
-It can preferrable be organized by InnerSource Program Office (ISPO), if it exists in the organization or by the Open Source Program Office (OSPO), if OSPO also drives InnerSource within the company. It can also be organized by other common service organizations too, if need be. Basically a central team or a group of individuals, who believe in InnerSource, can organize the hackathon.
-
-All engineers in the organization can participate in the hackathon. The participants can be new to InnerSource, or InnerSource practitioners already. They can participate individually or as a team. Participating as a team also provides a safe environment, for example, those are new to InnerSource can team up InnerSource practitioners.
-
-There could be one or more categories to participate as follows:
-
-* Start a new InnerSource project: It could be either starting a new project from scratch as InnerSource or making a existing project InnerSource ready.
-* Contribute to the existing InnerSource project: InnerSource project owners can list down the features in GitHub issues as a pre-requisite before the hackathon and the participants can contribute to it during the hackathon.
-* Participate as an InnerSource mentor: Participants can also mentor new InnerSource practitioners and provide knowledge transfer or coaching during the event.
-
-The event could be held virtually or physically in different locations in the organization based on the cost and budget involved. A virtual event will have best ROI but it could depend on each organization.
-
-The winners and participants should be recognized and acknowledged in a company-wide forum at the end of the hackathon. This is important as it keeps motivating them and more engineers to adopt and practice InnerSource going forward.
-
-Such an event provides a safe space for the engineers who want to adopt or contribute to InnerSource but didn't have the time and motivation to do it or for those who kept deprioritizing due to high priority work deliverables. From middle management point of view, 1 or 2 days for such an event is not much of an ask and hence they are more likely to accept.
-
-## Resulting Context
-
-* There is increased adoption of InnerSource by providing such a safe platform to try and experiment combined with recognition and support by the senior leadership and middle management.
-* More InnerSource projects are published within the company.
-* The InnerSource projects receive more contributions.
-* Communities start to form around these InnerSource projects.
-* This happens not only during the event but continues after the event too, with the hackathon participants acting as InnerSource ambassadors in their teams.
-* It also helps ISPO and OSPO spread awareness about InnerSource best practices quickly, across the whole engineering community in the organization.
-* Such an event also gives more exposure to projects that were developed to solve the needs of a specific team but turns out that many teams have similar requirements.
-
-All these help scale InnerSource in the organization.
-
-## Known Instances
-
-* IKEA (Ingka Group)
-
-## Status
-
-* Initial
-
-## Author
-
-* Shanmugapriya Manoharan
diff --git a/patterns/1-initial/innersource-portal-hygiene.md b/patterns/1-initial/innersource-portal-hygiene.md
index 9ab6392ea..fc33cddd2 100644
--- a/patterns/1-initial/innersource-portal-hygiene.md
+++ b/patterns/1-initial/innersource-portal-hygiene.md
@@ -27,8 +27,8 @@ Large organization with lots of public repos, not all necessarily meeting the de
## Sketch
-- Click [here](https://www.draw.io/?lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&title=Untitled%20Diagram.drawio#R7V1Zl5s4Fv41fiwfdsxjLanunpN0MqnMdOcpB4NsqwOIZqmlf%2F1oQRgt2Dg2xjUp55yUEULgu%2Bne716JmX2bPv9ShPnmA4pBMrOM%2BHlm380sy%2FR8G%2F8hLS%2BsxTIck7WsCxg3vbYND%2FAf0DQaTWsNY1AKHSuEkgrmYmOEsgxEldAWFgV6ErutUCLeNQ%2FXQGl4iMJEbf0DxtWGtS5cY9v%2BK4DrDb%2BzaTRn0pB3bhrKTRijp06T%2FW5m3xYIVexb%2BnwLEkI9Thd23X3P2fbBCpBVQy64WWYf%2FduH%2BvG%2F%2Fv3HX%2B9v%2Fp18ubsyLZ%2BN8xgmdfOTZ5aX4BFvVggPjJ%2B7emmI4f1dI37iqqSsusYdTC9%2F3p7E39bk701YRRt89l9oWfIR8cOxQVmXhi7t%2BFaB6iwG5HlNfPppAyvwkIcROfuE5Qu3bao0aU7HYblp%2B5Jh78MUJkTOfgXJI6hgFDYnGqny8WFZFeg7uEUJKugt7cU1%2BYfPPIKCXJJcJ3Cd4XMVyttHJOfAcy%2FdzZabWA8ASkFVvOAu%2FAKHyzLXAbNRiqetQFlcbDYdYfIWDXPCRojX7eBbPuMvDasPYLunMP03rD7FA6oLTG3L%2BISKKkwU%2FnSoz8n1PlyC5BMqYQURIdsSVRVKcYewoWOEyQQwsW8S0vMmjL6vKZs7PFjRTy8PGM%2B49lk6LhrGwrg3CLthkuhGbpXP6EqOwc7k5Oelz2tiwuYQlf4cYnNSzp9gRi86hRTIQuDoZMBVZcDklubkMmArMvAZ5ISRiD53FqZAEQCRFaaokAfReA6%2FgOfqtyyvKx1DHfpp9FdgNPng9mWN5SwjY5ATgp4vdsiBzqZwSU3AqjoRs11LYLZpOHNX4bdpaXTedEdit6Ow%2B6FeprDaY4QH8VdH1Q5DTI1mevSjsxOqLNyRf6ostEw9BccCiWO2qfCLey4Cu8ay0KapUc81LAmNsHKCJ%2Fx%2F0dFXiYkVVYwu9wqAZ%2BxwSTsQfuQIZhV9avdm5hLyhnWFyoZjOsb0WGfMdpitv5ADImWnYYdjcYVpGOKr%2FDAdjf5YY5lLU2cvW4YQVuzQJEJwPKVu0BpleM5ElFiEyH%2BBqnpp1ITQX%2BQZGxHEiosq0RHflc3cO2b8Rr6rsFiDap9roDKmAElYwUfxQXREbi79RMSr4wRZztxzfMNdLCzbtQJrIbpEwWLOTjim6XuO54g3YD%2BvGVNiZPuQR%2FBW9YduNyD6XpKIIYQJ5qHMW8KUh%2BZwy9l329abo7kPnmH1J7kcqwI7%2BtoMRr7fPXcPXvhBhinBLnIWC97wtXt2eyE9Eq78BAqIiUnUnTaeUABN55wCeF0U4UunQ2PteuVzYZiCQF6ZUjAl9betnf3xF%2FYEJxVTbtt0YpqHZTmJkG4Fzj1E3KaQLOZzn9y2eZbo2puBPch6KQP5thQoWtJA7BeOZwZVHxEbhBUq0hn5iSyGXxY8fO%2B6H%2FK5qJFLeUbcoHRZl%2FuD%2BxP4EL4teRBaH9zW%2BBCL0XwIVyGwqrNZfE1wK%2BJ5JVipYdSncIK6bbVvfIXzBuobkyeVQR36uxry87ZjXQ5RmexA4upQrfSkcRxpnJGVkotIR2b%2BKLDuqDp31fqhRl0k%2BvPLkAgA9mqwU8Mi%2FF29wHMONcHFGX0f%2Fr0j4wN8n8k0w3EHqkaf7TpS5hcy1OgMm4pOJaz2QmPgDkSTLRFNxg54JF6whXcV0PkOlnlCHb8IxUSCywzmOSA3rpB2EoNZlNS0K8y2%2BvP53fXdh3fzNB6KXJ9BJQSI%2BxbzEdLI83fwJKItXkd9roy5YbiiDrnWbi3CByOGAfbgONTaObuTH8YxmiOVxl%2BISuMa5iClOTTItd3FPOh8FoPmkUMjGceQ7tpQSRuZbK%2Fmw6PVqgSj2AZPtQ3%2FrgHlKZ1nSJDNZ57XMeEMSTqZ1mn1p02C7tWfY4OdozxdX%2FVaOLMpi0nImoGwgNn6Av0MfxQ%2F46LFxTemFJdARTamlAYRcTOPNgL%2BVEwdB8z1HRH8cv1hIdGhU5lpBOLM7FnnQNnUzIuQHJc9SJ4rl9vvwipchqUmidpkQ6OXBGJ5LfajIUsm2O%2BXbUObRv9YV3gUMDsZbGIaTk%2Fg3IVNdOUKwVjWQVOjEqxWthfE3nJpWfOcTCI9RI5RVKf0px9M5JMQUw7IXC0KpctkeWOlFq3g9ZJTglotXy2jOC8xbXXmejXElOHmxWJqYqpe41td0sh1SUYgZdptHv5OWJqk5tq%2FYhHALaI46KPF1177YPsiPzSlKKYONx%2Bt9MHW1oiGKSEBdXpgum4bsmVJSVNEsy5ox%2F0jTLJspoMBCdeuGroTHLAlPfnlxDpelcw8kpMZKlJsBxg%2BKOKHpBiV3k6CBjdVRUqGrwkprHtI5Ig52vPnl3%2FmEbYN5ESL9rHn5GjfxM%2FenVEu9Rm7DvB%2BlHffKNKvY9Nop7Mga2FSCfeCOiPRd3FHg3gXx%2BrvvlXCnb31KLFqmXaCunvK6rwT2Rsea7cwpcbeLM6ZJnV8hXKvOPg%2FNaTDUzr7yx160q%2FngXQcdQ7%2FBWC9DKv%2BmVvk4R6f%2BEDaH1dLIMXEbYnHvnJebzQd8d50ZJ%2FoD9ER90gd6cnD2phCvJjRN9xAtLByKcLIJQTOYkpZufSMymBZsSeFyB21OOuhQsX%2FgTG1AnPo6ojxzGkwqTk9QEU6BZdBEMzEDBRdMnNwle8kWje0UoZhQpNpnVqxx7UO3yCMwyp8vYpnT%2B7F8FUJHfL%2Bp2wWVLC1FSxBTGNaEfvJC%2FQXWfArUx%2BxhMhtux6YS3gHfsP%2F7slT3qyLMIZgey5DJJWi4njtBX04ngDd7cUg9WiSAjpJYtKVBnrc%2FGhyy7DM2a9dwWfyHAp8GD6VzrwATC9%2Fi8jzEFiMfRN71WWDCxwPMUtwfaBGlt5ZxU1d53EHElDxisjLmQOsgZNAWxF8uSUI3tB4dVr%2FylOzYq1skHLsixGNH5MM%2BzVLxtHVssdJhopktJIhVa6pKx467NR5AqKMnNMZMB1X8gYMTZ5f5w2Mhvt5aoij0FOe15Z5ms0r7M4W30osRwRezTvuLb4rzEvQ8Xi7CpZIE3TBfuSQlKC0aFzrdQzi0kHFe%2BIwHUbplrHwtiOxjHbVSruYXRxhvIpR01T5f6Egl65q%2BoSVYTvt0n47OxThMI1jg60fqvPyTREfc85Q5WXyjPblg2Jj1pueuDKRFwIOkLRpy5PVqp0HkJFpPEMVXGEykRmBFCmrdX0rVMwOqWJ%2BPR6A6wRDgbjRfAC%2Bz8ObD9BXkf1z%2BQC%2B6nz3aCpd4JUhghSJBQB5vUxgNGsXd6EnUvvxivXU96b21P03T12Qz59dS9t68NfpqV%2BAh7XT%2BO33u4Z6%2BMGkNSH%2B276D09f3uo7q4525vtfvXya%2BMQXW95QP%2BrodR%2F9kH9Vj31sbSUd%2Fan56p%2F5RucV7VACyGQqeqWryN6Ysx0NCuoY2JdYVk4TsRlvi2QVUtGg5jGEOSxg1YUICm14lBQ5j4pMAWJcpIocVSHM6JswiGMO4pha%2BJv9hSWapR7qgnd6bJiLDdRaS2yTw7zqc7ykQxc2Exj3r2NUKRVHmmwRZV9x5zozVQuMGdyZXRlt9iVCEZXuVUAXZwDgG2Q85Wv6JVIU7MXy1mTlwpc5ohdeLvfaSJUFVZ%2Fa118Ar%2B%2F%2B5%2FsDNe8ZjRv9OyW9G681oXYrR0szuWqMlBwen05O3yf1NTy5fT7ypJ%2FdgANK5bzO4oQQ8NBYfELAOTgkM3S2O7YejMvA8u8VJpXGBKY0wdA8gaceChSeNc%2FDWCKeHajjnLj7xNUECKxgMpPh6aT3TfilD8FcZrIjpZwhYsZ0aulv9ixvDh8sSJXUFrovooRM0tEfWee276Uka7PsqSG7xIi%2FBgHhjMUmtHf6KanL38JFM7WRaF3ITc9W7Ibsx3mJ%2FA8a0KjYNvzM%2Fg7okeQEf2XIq4lPot4PsVtHCZqOvg%2BppBdCqectOJ4zsTkaiWPku%2BdfnZMjw1zrKrXlel5tv3bzOtxIUj5Bo7E1OUwY7kwF92GCKvQ9qxaRUgBzQtv0aB%2Bc97UZdnr7XUPxQuucgZLYRZ0OTmeXbJQipBOsk06EYfLcbpI%2BfSQjUKPuTLn%2BnyOlb3fcF1X0Hwf6M5VkrvwM1KG0WGizJO8KYfdQaRBVbe5O0C5I0ee%2FOQGcozypqTRGdIGtfihpPwzGdzNMUVhUtQLhnC6LJiIQib5J2yZJmmbZYpei51vSiNukq8AuP5Zoaw7PUvR7Jxv7Uwm5Ys7Nttq1DTUkMgPkdxlFYEu%2FuEZKgI0IJRRupi02ONyE2MD07xmuqrWZNsVXVWrWoY9UMsukhacROIjF4H%2B%2Feffzj93efH2Z8kVUfhKuAmnvxywFJrYEu%2F4AqAUlSeyW619iI0dOshRb3xgaNnvfaJmNOAmDBOp1ma2x8ZykPZ3m84QxVRZZa%2FHfsdvJMtD6HsKR7vpdlLe39fjH7veut7IQLA6czz5335U5innVi%2BJOjbdJbUVxPt4eDrfOGRsPbTENFRbX7BRqshL%2BBE2hWEVuCmVrLrwHkOmAcJhZ4Yt2bofZia%2FJodBoFWVnTXB%2FF5%2FAkUcGsBm1Jc5jn%2BLG4kao2QB1eXzX3htydB7nrXcvyk0F3pub9YT%2B9nZS33OBLGqezkpqXkA22khtq4ZYAMH8pRY%2FU0w%2F1K6X6LeGbsZrMWPW9lO2nM1a6MiXZWDXSA9OQOLw3mjp0Efbai5YNCDPpza45BqYFxJrnuRP3tI3izKAV5Cv6WoFmT1u2RdE9rSzHf2t4BcoSZEQb7wkT7795Lm40rQXdZHXCEh3TkHckMLXrEX1VGsd7DbfmbRCnCUF%2FYXVelDvY8YwwV0JKDWZ2VWuas1dxMoeTv1%2Fz4qLVE%2BxVcoGhKkdqfviVl%2BMuoFfSbbtfXux6ix3dR1pvr3l58WkU6eH2Az73%2BQDwpn3%2FAlY%2BspsbM%2B57Nmqb0CzKPuTA97H8wOpPfFggQt0t64nb9AHFgPT4Hw%3D%3D) for draw.io diagram
-- Click [here](https://www.draw.io/?title=Untitled%20Diagram.drawio#R7V1Zl5s4Fv41fiwfdsxjLanunpN0MqnMdOcpB4NsqwOIZqmlf%2F1oQRgt2Dg2xjUp55yUEULgu%2Bne716JmX2bPv9ShPnmA4pBMrOM%2BHlm380sy%2FR8G%2F8hLS%2BsxTIck7WsCxg3vbYND%2FAf0DQaTWsNY1AKHSuEkgrmYmOEsgxEldAWFgV6ErutUCLeNQ%2FXQGl4iMJEbf0DxtWGtS5cY9v%2BK4DrDb%2BzaTRn0pB3bhrKTRijp06T%2FW5m3xYIVexb%2BnwLEkI9Thd23X3P2fbBCpBVQy64WWYf%2FduH%2BvG%2F%2Fv3HX%2B9v%2Fp18ubsyLZ%2BN8xgmdfOTZ5aX4BFvVggPjJ%2B7emmI4f1dI37iqqSsusYdTC9%2F3p7E39bk701YRRt89l9oWfIR8cOxQVmXhi7t%2BFaB6iwG5HlNfPppAyvwkIcROfuE5Qu3bao0aU7HYblp%2B5Jh78MUJkTOfgXJI6hgFDYnGqny8WFZFeg7uEUJKugt7cU1%2BYfPPIKCXJJcJ3Cd4XMVyttHJOfAcy%2FdzZabWA8ASkFVvOAu%2FAKHyzLXAbNRiqetQFlcbDYdYfIWDXPCRojX7eBbPuMvDasPYLunMP03rD7FA6oLTG3L%2BISKKkwU%2FnSoz8n1PlyC5BMqYQURIdsSVRVKcYewoWOEyQQwsW8S0vMmjL6vKZs7PFjRTy8PGM%2B49lk6LhrGwrg3CLthkuhGbpXP6EqOwc7k5Oelz2tiwuYQlf4cYnNSzp9gRi86hRTIQuDoZMBVZcDklubkMmArMvAZ5ISRiD53FqZAEQCRFaaokAfReA6%2FgOfqtyyvKx1DHfpp9FdgNPng9mWN5SwjY5ATgp4vdsiBzqZwSU3AqjoRs11LYLZpOHNX4bdpaXTedEdit6Ow%2B6FeprDaY4QH8VdH1Q5DTI1mevSjsxOqLNyRf6ostEw9BccCiWO2qfCLey4Cu8ay0KapUc81LAmNsHKCJ%2Fx%2F0dFXiYkVVYwu9wqAZ%2BxwSTsQfuQIZhV9avdm5hLyhnWFyoZjOsb0WGfMdpitv5ADImWnYYdjcYVpGOKr%2FDAdjf5YY5lLU2cvW4YQVuzQJEJwPKVu0BpleM5ElFiEyH%2BBqnpp1ITQX%2BQZGxHEiosq0RHflc3cO2b8Rr6rsFiDap9roDKmAElYwUfxQXREbi79RMSr4wRZztxzfMNdLCzbtQJrIbpEwWLOTjim6XuO54g3YD%2BvGVNiZPuQR%2FBW9YduNyD6XpKIIYQJ5qHMW8KUh%2BZwy9l329abo7kPnmH1J7kcqwI7%2BtoMRr7fPXcPXvhBhinBLnIWC97wtXt2eyE9Eq78BAqIiUnUnTaeUABN55wCeF0U4UunQ2PteuVzYZiCQF6ZUjAl9betnf3xF%2FYEJxVTbtt0YpqHZTmJkG4Fzj1E3KaQLOZzn9y2eZbo2puBPch6KQP5thQoWtJA7BeOZwZVHxEbhBUq0hn5iSyGXxY8fO%2B6H%2FK5qJFLeUbcoHRZl%2FuD%2BxP4EL4teRBaH9zW%2BBCL0XwIVyGwqrNZfE1wK%2BJ5JVipYdSncIK6bbVvfIXzBuobkyeVQR36uxry87ZjXQ5RmexA4upQrfSkcRxpnJGVkotIR2b%2BKLDuqDp31fqhRl0k%2BvPLkAgA9mqwU8Mi%2FF29wHMONcHFGX0f%2Fr0j4wN8n8k0w3EHqkaf7TpS5hcy1OgMm4pOJaz2QmPgDkSTLRFNxg54JF6whXcV0PkOlnlCHb8IxUSCywzmOSA3rpB2EoNZlNS0K8y2%2BvP53fXdh3fzNB6KXJ9BJQSI%2BxbzEdLI83fwJKItXkd9roy5YbiiDrnWbi3CByOGAfbgONTaObuTH8YxmiOVxl%2BISuMa5iClOTTItd3FPOh8FoPmkUMjGceQ7tpQSRuZbK%2Fmw6PVqgSj2AZPtQ3%2FrgHlKZ1nSJDNZ57XMeEMSTqZ1mn1p02C7tWfY4OdozxdX%2FVaOLMpi0nImoGwgNn6Av0MfxQ%2F46LFxTemFJdARTamlAYRcTOPNgL%2BVEwdB8z1HRH8cv1hIdGhU5lpBOLM7FnnQNnUzIuQHJc9SJ4rl9vvwipchqUmidpkQ6OXBGJ5LfajIUsm2O%2BXbUObRv9YV3gUMDsZbGIaTk%2Fg3IVNdOUKwVjWQVOjEqxWthfE3nJpWfOcTCI9RI5RVKf0px9M5JMQUw7IXC0KpctkeWOlFq3g9ZJTglotXy2jOC8xbXXmejXElOHmxWJqYqpe41td0sh1SUYgZdptHv5OWJqk5tq%2FYhHALaI46KPF1177YPsiPzSlKKYONx%2Bt9MHW1oiGKSEBdXpgum4bsmVJSVNEsy5ox%2F0jTLJspoMBCdeuGroTHLAlPfnlxDpelcw8kpMZKlJsBxg%2BKOKHpBiV3k6CBjdVRUqGrwkprHtI5Ig52vPnl3%2FmEbYN5ESL9rHn5GjfxM%2FenVEu9Rm7DvB%2BlHffKNKvY9Nop7Mga2FSCfeCOiPRd3FHg3gXx%2BrvvlXCnb31KLFqmXaCunvK6rwT2Rsea7cwpcbeLM6ZJnV8hXKvOPg%2FNaTDUzr7yx160q%2FngXQcdQ7%2FBWC9DKv%2BmVvk4R6f%2BEDaH1dLIMXEbYnHvnJebzQd8d50ZJ%2FoD9ER90gd6cnD2phCvJjRN9xAtLByKcLIJQTOYkpZufSMymBZsSeFyB21OOuhQsX%2FgTG1AnPo6ojxzGkwqTk9QEU6BZdBEMzEDBRdMnNwle8kWje0UoZhQpNpnVqxx7UO3yCMwyp8vYpnT%2B7F8FUJHfL%2Bp2wWVLC1FSxBTGNaEfvJC%2FQXWfArUx%2BxhMhtux6YS3gHfsP%2F7slT3qyLMIZgey5DJJWi4njtBX04ngDd7cUg9WiSAjpJYtKVBnrc%2FGhyy7DM2a9dwWfyHAp8GD6VzrwATC9%2Fi8jzEFiMfRN71WWDCxwPMUtwfaBGlt5ZxU1d53EHElDxisjLmQOsgZNAWxF8uSUI3tB4dVr%2FylOzYq1skHLsixGNH5MM%2BzVLxtHVssdJhopktJIhVa6pKx467NR5AqKMnNMZMB1X8gYMTZ5f5w2Mhvt5aoij0FOe15Z5ms0r7M4W30osRwRezTvuLb4rzEvQ8Xi7CpZIE3TBfuSQlKC0aFzrdQzi0kHFe%2BIwHUbplrHwtiOxjHbVSruYXRxhvIpR01T5f6Egl65q%2BoSVYTvt0n47OxThMI1jg60fqvPyTREfc85Q5WXyjPblg2Jj1pueuDKRFwIOkLRpy5PVqp0HkJFpPEMVXGEykRmBFCmrdX0rVMwOqWJ%2BPR6A6wRDgbjRfAC%2Bz8ObD9BXkf1z%2BQC%2B6nz3aCpd4JUhghSJBQB5vUxgNGsXd6EnUvvxivXU96b21P03T12Qz59dS9t68NfpqV%2BAh7XT%2BO33u4Z6%2BMGkNSH%2B276D09f3uo7q4525vtfvXya%2BMQXW95QP%2BrodR%2F9kH9Vj31sbSUd%2Fan56p%2F5RucV7VACyGQqeqWryN6Ysx0NCuoY2JdYVk4TsRlvi2QVUtGg5jGEOSxg1YUICm14lBQ5j4pMAWJcpIocVSHM6JswiGMO4pha%2BJv9hSWapR7qgnd6bJiLDdRaS2yTw7zqc7ykQxc2Exj3r2NUKRVHmmwRZV9x5zozVQuMGdyZXRlt9iVCEZXuVUAXZwDgG2Q85Wv6JVIU7MXy1mTlwpc5ohdeLvfaSJUFVZ%2Fa118Ar%2B%2F%2B5%2FsDNe8ZjRv9OyW9G681oXYrR0szuWqMlBwen05O3yf1NTy5fT7ypJ%2FdgANK5bzO4oQQ8NBYfELAOTgkM3S2O7YejMvA8u8VJpXGBKY0wdA8gaceChSeNc%2FDWCKeHajjnLj7xNUECKxgMpPh6aT3TfilD8FcZrIjpZwhYsZ0aulv9ixvDh8sSJXUFrovooRM0tEfWee276Uka7PsqSG7xIi%2FBgHhjMUmtHf6KanL38JFM7WRaF3ITc9W7Ibsx3mJ%2FA8a0KjYNvzM%2Fg7okeQEf2XIq4lPot4PsVtHCZqOvg%2BppBdCqectOJ4zsTkaiWPku%2BdfnZMjw1zrKrXlel5tv3bzOtxIUj5Bo7E1OUwY7kwF92GCKvQ9qxaRUgBzQtv0aB%2Bc97UZdnr7XUPxQuucgZLYRZ0OTmeXbJQipBOsk06EYfLcbpI%2BfSQjUKPuTLn%2BnyOlb3fcF1X0Hwf6M5VkrvwM1KG0WGizJO8KYfdQaRBVbe5O0C5I0ee%2FOQGcozypqTRGdIGtfihpPwzGdzNMUVhUtQLhnC6LJiIQib5J2yZJmmbZYpei51vSiNukq8AuP5Zoaw7PUvR7Jxv7Uwm5Ys7Nttq1DTUkMgPkdxlFYEu%2FuEZKgI0IJRRupi02ONyE2MD07xmuqrWZNsVXVWrWoY9UMsukhacROIjF4H%2B%2Feffzj93efH2Z8kVUfhKuAmnvxywFJrYEu%2F4AqAUlSeyW619iI0dOshRb3xgaNnvfaJmNOAmDBOp1ma2x8ZykPZ3m84QxVRZZa%2FHfsdvJMtD6HsKR7vpdlLe39fjH7veut7IQLA6czz5335U5innVi%2BJOjbdJbUVxPt4eDrfOGRsPbTENFRbX7BRqshL%2BBE2hWEVuCmVrLrwHkOmAcJhZ4Yt2bofZia%2FJodBoFWVnTXB%2FF5%2FAkUcGsBm1Jc5jn%2BLG4kao2QB1eXzX3htydB7nrXcvyk0F3pub9YT%2B9nZS33OBLGqezkpqXkA22khtq4ZYAMH8pRY%2FU0w%2F1K6X6LeGbsZrMWPW9lO2nM1a6MiXZWDXSA9OQOLw3mjp0Efbai5YNCDPpza45BqYFxJrnuRP3tI3izKAV5Cv6WoFmT1u2RdE9rSzHf2t4BcoSZEQb7wkT7795Lm40rQXdZHXCEh3TkHckMLXrEX1VGsd7DbfmbRCnCUF%2FYXVelDvY8YwwV0JKDWZ2VWuas1dxMoeTv1%2Fz4qLVE%2BxVcoGhKkdqfviVl%2BMuoFfSbbtfXux6ix3dR1pvr3l58WkU6eH2Az73%2BQDwpn3%2FAlY%2BspsbM%2B57Nmqb0CzKPuTA97H8wOpPfFggQt0t64nb9AHFgPT4Hw%3D%3D) for editable draw.io diagram
+- Click [draw.io diagram](https://www.draw.io/?lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&title=Untitled%20Diagram.drawio#R7V1Zl5s4Fv41fiwfdsxjLanunpN0MqnMdOcpB4NsqwOIZqmlf%2F1oQRgt2Dg2xjUp55yUEULgu%2Bne716JmX2bPv9ShPnmA4pBMrOM%2BHlm380sy%2FR8G%2F8hLS%2BsxTIck7WsCxg3vbYND%2FAf0DQaTWsNY1AKHSuEkgrmYmOEsgxEldAWFgV6ErutUCLeNQ%2FXQGl4iMJEbf0DxtWGtS5cY9v%2BK4DrDb%2BzaTRn0pB3bhrKTRijp06T%2FW5m3xYIVexb%2BnwLEkI9Thd23X3P2fbBCpBVQy64WWYf%2FduH%2BvG%2F%2Fv3HX%2B9v%2Fp18ubsyLZ%2BN8xgmdfOTZ5aX4BFvVggPjJ%2B7emmI4f1dI37iqqSsusYdTC9%2F3p7E39bk701YRRt89l9oWfIR8cOxQVmXhi7t%2BFaB6iwG5HlNfPppAyvwkIcROfuE5Qu3bao0aU7HYblp%2B5Jh78MUJkTOfgXJI6hgFDYnGqny8WFZFeg7uEUJKugt7cU1%2BYfPPIKCXJJcJ3Cd4XMVyttHJOfAcy%2FdzZabWA8ASkFVvOAu%2FAKHyzLXAbNRiqetQFlcbDYdYfIWDXPCRojX7eBbPuMvDasPYLunMP03rD7FA6oLTG3L%2BISKKkwU%2FnSoz8n1PlyC5BMqYQURIdsSVRVKcYewoWOEyQQwsW8S0vMmjL6vKZs7PFjRTy8PGM%2B49lk6LhrGwrg3CLthkuhGbpXP6EqOwc7k5Oelz2tiwuYQlf4cYnNSzp9gRi86hRTIQuDoZMBVZcDklubkMmArMvAZ5ISRiD53FqZAEQCRFaaokAfReA6%2FgOfqtyyvKx1DHfpp9FdgNPng9mWN5SwjY5ATgp4vdsiBzqZwSU3AqjoRs11LYLZpOHNX4bdpaXTedEdit6Ow%2B6FeprDaY4QH8VdH1Q5DTI1mevSjsxOqLNyRf6ostEw9BccCiWO2qfCLey4Cu8ay0KapUc81LAmNsHKCJ%2Fx%2F0dFXiYkVVYwu9wqAZ%2BxwSTsQfuQIZhV9avdm5hLyhnWFyoZjOsb0WGfMdpitv5ADImWnYYdjcYVpGOKr%2FDAdjf5YY5lLU2cvW4YQVuzQJEJwPKVu0BpleM5ElFiEyH%2BBqnpp1ITQX%2BQZGxHEiosq0RHflc3cO2b8Rr6rsFiDap9roDKmAElYwUfxQXREbi79RMSr4wRZztxzfMNdLCzbtQJrIbpEwWLOTjim6XuO54g3YD%2BvGVNiZPuQR%2FBW9YduNyD6XpKIIYQJ5qHMW8KUh%2BZwy9l329abo7kPnmH1J7kcqwI7%2BtoMRr7fPXcPXvhBhinBLnIWC97wtXt2eyE9Eq78BAqIiUnUnTaeUABN55wCeF0U4UunQ2PteuVzYZiCQF6ZUjAl9betnf3xF%2FYEJxVTbtt0YpqHZTmJkG4Fzj1E3KaQLOZzn9y2eZbo2puBPch6KQP5thQoWtJA7BeOZwZVHxEbhBUq0hn5iSyGXxY8fO%2B6H%2FK5qJFLeUbcoHRZl%2FuD%2BxP4EL4teRBaH9zW%2BBCL0XwIVyGwqrNZfE1wK%2BJ5JVipYdSncIK6bbVvfIXzBuobkyeVQR36uxry87ZjXQ5RmexA4upQrfSkcRxpnJGVkotIR2b%2BKLDuqDp31fqhRl0k%2BvPLkAgA9mqwU8Mi%2FF29wHMONcHFGX0f%2Fr0j4wN8n8k0w3EHqkaf7TpS5hcy1OgMm4pOJaz2QmPgDkSTLRFNxg54JF6whXcV0PkOlnlCHb8IxUSCywzmOSA3rpB2EoNZlNS0K8y2%2BvP53fXdh3fzNB6KXJ9BJQSI%2BxbzEdLI83fwJKItXkd9roy5YbiiDrnWbi3CByOGAfbgONTaObuTH8YxmiOVxl%2BISuMa5iClOTTItd3FPOh8FoPmkUMjGceQ7tpQSRuZbK%2Fmw6PVqgSj2AZPtQ3%2FrgHlKZ1nSJDNZ57XMeEMSTqZ1mn1p02C7tWfY4OdozxdX%2FVaOLMpi0nImoGwgNn6Av0MfxQ%2F46LFxTemFJdARTamlAYRcTOPNgL%2BVEwdB8z1HRH8cv1hIdGhU5lpBOLM7FnnQNnUzIuQHJc9SJ4rl9vvwipchqUmidpkQ6OXBGJ5LfajIUsm2O%2BXbUObRv9YV3gUMDsZbGIaTk%2Fg3IVNdOUKwVjWQVOjEqxWthfE3nJpWfOcTCI9RI5RVKf0px9M5JMQUw7IXC0KpctkeWOlFq3g9ZJTglotXy2jOC8xbXXmejXElOHmxWJqYqpe41td0sh1SUYgZdptHv5OWJqk5tq%2FYhHALaI46KPF1177YPsiPzSlKKYONx%2Bt9MHW1oiGKSEBdXpgum4bsmVJSVNEsy5ox%2F0jTLJspoMBCdeuGroTHLAlPfnlxDpelcw8kpMZKlJsBxg%2BKOKHpBiV3k6CBjdVRUqGrwkprHtI5Ig52vPnl3%2FmEbYN5ESL9rHn5GjfxM%2FenVEu9Rm7DvB%2BlHffKNKvY9Nop7Mga2FSCfeCOiPRd3FHg3gXx%2BrvvlXCnb31KLFqmXaCunvK6rwT2Rsea7cwpcbeLM6ZJnV8hXKvOPg%2FNaTDUzr7yx160q%2FngXQcdQ7%2FBWC9DKv%2BmVvk4R6f%2BEDaH1dLIMXEbYnHvnJebzQd8d50ZJ%2FoD9ER90gd6cnD2phCvJjRN9xAtLByKcLIJQTOYkpZufSMymBZsSeFyB21OOuhQsX%2FgTG1AnPo6ojxzGkwqTk9QEU6BZdBEMzEDBRdMnNwle8kWje0UoZhQpNpnVqxx7UO3yCMwyp8vYpnT%2B7F8FUJHfL%2Bp2wWVLC1FSxBTGNaEfvJC%2FQXWfArUx%2BxhMhtux6YS3gHfsP%2F7slT3qyLMIZgey5DJJWi4njtBX04ngDd7cUg9WiSAjpJYtKVBnrc%2FGhyy7DM2a9dwWfyHAp8GD6VzrwATC9%2Fi8jzEFiMfRN71WWDCxwPMUtwfaBGlt5ZxU1d53EHElDxisjLmQOsgZNAWxF8uSUI3tB4dVr%2FylOzYq1skHLsixGNH5MM%2BzVLxtHVssdJhopktJIhVa6pKx467NR5AqKMnNMZMB1X8gYMTZ5f5w2Mhvt5aoij0FOe15Z5ms0r7M4W30osRwRezTvuLb4rzEvQ8Xi7CpZIE3TBfuSQlKC0aFzrdQzi0kHFe%2BIwHUbplrHwtiOxjHbVSruYXRxhvIpR01T5f6Egl65q%2BoSVYTvt0n47OxThMI1jg60fqvPyTREfc85Q5WXyjPblg2Jj1pueuDKRFwIOkLRpy5PVqp0HkJFpPEMVXGEykRmBFCmrdX0rVMwOqWJ%2BPR6A6wRDgbjRfAC%2Bz8ObD9BXkf1z%2BQC%2B6nz3aCpd4JUhghSJBQB5vUxgNGsXd6EnUvvxivXU96b21P03T12Qz59dS9t68NfpqV%2BAh7XT%2BO33u4Z6%2BMGkNSH%2B276D09f3uo7q4525vtfvXya%2BMQXW95QP%2BrodR%2F9kH9Vj31sbSUd%2Fan56p%2F5RucV7VACyGQqeqWryN6Ysx0NCuoY2JdYVk4TsRlvi2QVUtGg5jGEOSxg1YUICm14lBQ5j4pMAWJcpIocVSHM6JswiGMO4pha%2BJv9hSWapR7qgnd6bJiLDdRaS2yTw7zqc7ykQxc2Exj3r2NUKRVHmmwRZV9x5zozVQuMGdyZXRlt9iVCEZXuVUAXZwDgG2Q85Wv6JVIU7MXy1mTlwpc5ohdeLvfaSJUFVZ%2Fa118Ar%2B%2F%2B5%2FsDNe8ZjRv9OyW9G681oXYrR0szuWqMlBwen05O3yf1NTy5fT7ypJ%2FdgANK5bzO4oQQ8NBYfELAOTgkM3S2O7YejMvA8u8VJpXGBKY0wdA8gaceChSeNc%2FDWCKeHajjnLj7xNUECKxgMpPh6aT3TfilD8FcZrIjpZwhYsZ0aulv9ixvDh8sSJXUFrovooRM0tEfWee276Uka7PsqSG7xIi%2FBgHhjMUmtHf6KanL38JFM7WRaF3ITc9W7Ibsx3mJ%2FA8a0KjYNvzM%2Fg7okeQEf2XIq4lPot4PsVtHCZqOvg%2BppBdCqectOJ4zsTkaiWPku%2BdfnZMjw1zrKrXlel5tv3bzOtxIUj5Bo7E1OUwY7kwF92GCKvQ9qxaRUgBzQtv0aB%2Bc97UZdnr7XUPxQuucgZLYRZ0OTmeXbJQipBOsk06EYfLcbpI%2BfSQjUKPuTLn%2BnyOlb3fcF1X0Hwf6M5VkrvwM1KG0WGizJO8KYfdQaRBVbe5O0C5I0ee%2FOQGcozypqTRGdIGtfihpPwzGdzNMUVhUtQLhnC6LJiIQib5J2yZJmmbZYpei51vSiNukq8AuP5Zoaw7PUvR7Jxv7Uwm5Ys7Nttq1DTUkMgPkdxlFYEu%2FuEZKgI0IJRRupi02ONyE2MD07xmuqrWZNsVXVWrWoY9UMsukhacROIjF4H%2B%2Feffzj93efH2Z8kVUfhKuAmnvxywFJrYEu%2F4AqAUlSeyW619iI0dOshRb3xgaNnvfaJmNOAmDBOp1ma2x8ZykPZ3m84QxVRZZa%2FHfsdvJMtD6HsKR7vpdlLe39fjH7veut7IQLA6czz5335U5innVi%2BJOjbdJbUVxPt4eDrfOGRsPbTENFRbX7BRqshL%2BBE2hWEVuCmVrLrwHkOmAcJhZ4Yt2bofZia%2FJodBoFWVnTXB%2FF5%2FAkUcGsBm1Jc5jn%2BLG4kao2QB1eXzX3htydB7nrXcvyk0F3pub9YT%2B9nZS33OBLGqezkpqXkA22khtq4ZYAMH8pRY%2FU0w%2F1K6X6LeGbsZrMWPW9lO2nM1a6MiXZWDXSA9OQOLw3mjp0Efbai5YNCDPpza45BqYFxJrnuRP3tI3izKAV5Cv6WoFmT1u2RdE9rSzHf2t4BcoSZEQb7wkT7795Lm40rQXdZHXCEh3TkHckMLXrEX1VGsd7DbfmbRCnCUF%2FYXVelDvY8YwwV0JKDWZ2VWuas1dxMoeTv1%2Fz4qLVE%2BxVcoGhKkdqfviVl%2BMuoFfSbbtfXux6ix3dR1pvr3l58WkU6eH2Az73%2BQDwpn3%2FAlY%2BspsbM%2B57Nmqb0CzKPuTA97H8wOpPfFggQt0t64nb9AHFgPT4Hw%3D%3D)
+- Click [editable draw.io diagram](https://www.draw.io/?title=Untitled%20Diagram.drawio#R7V1Zl5s4Fv41fiwfdsxjLanunpN0MqnMdOcpB4NsqwOIZqmlf%2F1oQRgt2Dg2xjUp55yUEULgu%2Bne716JmX2bPv9ShPnmA4pBMrOM%2BHlm380sy%2FR8G%2F8hLS%2BsxTIck7WsCxg3vbYND%2FAf0DQaTWsNY1AKHSuEkgrmYmOEsgxEldAWFgV6ErutUCLeNQ%2FXQGl4iMJEbf0DxtWGtS5cY9v%2BK4DrDb%2BzaTRn0pB3bhrKTRijp06T%2FW5m3xYIVexb%2BnwLEkI9Thd23X3P2fbBCpBVQy64WWYf%2FduH%2BvG%2F%2Fv3HX%2B9v%2Fp18ubsyLZ%2BN8xgmdfOTZ5aX4BFvVggPjJ%2B7emmI4f1dI37iqqSsusYdTC9%2F3p7E39bk701YRRt89l9oWfIR8cOxQVmXhi7t%2BFaB6iwG5HlNfPppAyvwkIcROfuE5Qu3bao0aU7HYblp%2B5Jh78MUJkTOfgXJI6hgFDYnGqny8WFZFeg7uEUJKugt7cU1%2BYfPPIKCXJJcJ3Cd4XMVyttHJOfAcy%2FdzZabWA8ASkFVvOAu%2FAKHyzLXAbNRiqetQFlcbDYdYfIWDXPCRojX7eBbPuMvDasPYLunMP03rD7FA6oLTG3L%2BISKKkwU%2FnSoz8n1PlyC5BMqYQURIdsSVRVKcYewoWOEyQQwsW8S0vMmjL6vKZs7PFjRTy8PGM%2B49lk6LhrGwrg3CLthkuhGbpXP6EqOwc7k5Oelz2tiwuYQlf4cYnNSzp9gRi86hRTIQuDoZMBVZcDklubkMmArMvAZ5ISRiD53FqZAEQCRFaaokAfReA6%2FgOfqtyyvKx1DHfpp9FdgNPng9mWN5SwjY5ATgp4vdsiBzqZwSU3AqjoRs11LYLZpOHNX4bdpaXTedEdit6Ow%2B6FeprDaY4QH8VdH1Q5DTI1mevSjsxOqLNyRf6ostEw9BccCiWO2qfCLey4Cu8ay0KapUc81LAmNsHKCJ%2Fx%2F0dFXiYkVVYwu9wqAZ%2BxwSTsQfuQIZhV9avdm5hLyhnWFyoZjOsb0WGfMdpitv5ADImWnYYdjcYVpGOKr%2FDAdjf5YY5lLU2cvW4YQVuzQJEJwPKVu0BpleM5ElFiEyH%2BBqnpp1ITQX%2BQZGxHEiosq0RHflc3cO2b8Rr6rsFiDap9roDKmAElYwUfxQXREbi79RMSr4wRZztxzfMNdLCzbtQJrIbpEwWLOTjim6XuO54g3YD%2BvGVNiZPuQR%2FBW9YduNyD6XpKIIYQJ5qHMW8KUh%2BZwy9l329abo7kPnmH1J7kcqwI7%2BtoMRr7fPXcPXvhBhinBLnIWC97wtXt2eyE9Eq78BAqIiUnUnTaeUABN55wCeF0U4UunQ2PteuVzYZiCQF6ZUjAl9betnf3xF%2FYEJxVTbtt0YpqHZTmJkG4Fzj1E3KaQLOZzn9y2eZbo2puBPch6KQP5thQoWtJA7BeOZwZVHxEbhBUq0hn5iSyGXxY8fO%2B6H%2FK5qJFLeUbcoHRZl%2FuD%2BxP4EL4teRBaH9zW%2BBCL0XwIVyGwqrNZfE1wK%2BJ5JVipYdSncIK6bbVvfIXzBuobkyeVQR36uxry87ZjXQ5RmexA4upQrfSkcRxpnJGVkotIR2b%2BKLDuqDp31fqhRl0k%2BvPLkAgA9mqwU8Mi%2FF29wHMONcHFGX0f%2Fr0j4wN8n8k0w3EHqkaf7TpS5hcy1OgMm4pOJaz2QmPgDkSTLRFNxg54JF6whXcV0PkOlnlCHb8IxUSCywzmOSA3rpB2EoNZlNS0K8y2%2BvP53fXdh3fzNB6KXJ9BJQSI%2BxbzEdLI83fwJKItXkd9roy5YbiiDrnWbi3CByOGAfbgONTaObuTH8YxmiOVxl%2BISuMa5iClOTTItd3FPOh8FoPmkUMjGceQ7tpQSRuZbK%2Fmw6PVqgSj2AZPtQ3%2FrgHlKZ1nSJDNZ57XMeEMSTqZ1mn1p02C7tWfY4OdozxdX%2FVaOLMpi0nImoGwgNn6Av0MfxQ%2F46LFxTemFJdARTamlAYRcTOPNgL%2BVEwdB8z1HRH8cv1hIdGhU5lpBOLM7FnnQNnUzIuQHJc9SJ4rl9vvwipchqUmidpkQ6OXBGJ5LfajIUsm2O%2BXbUObRv9YV3gUMDsZbGIaTk%2Fg3IVNdOUKwVjWQVOjEqxWthfE3nJpWfOcTCI9RI5RVKf0px9M5JMQUw7IXC0KpctkeWOlFq3g9ZJTglotXy2jOC8xbXXmejXElOHmxWJqYqpe41td0sh1SUYgZdptHv5OWJqk5tq%2FYhHALaI46KPF1177YPsiPzSlKKYONx%2Bt9MHW1oiGKSEBdXpgum4bsmVJSVNEsy5ox%2F0jTLJspoMBCdeuGroTHLAlPfnlxDpelcw8kpMZKlJsBxg%2BKOKHpBiV3k6CBjdVRUqGrwkprHtI5Ig52vPnl3%2FmEbYN5ESL9rHn5GjfxM%2FenVEu9Rm7DvB%2BlHffKNKvY9Nop7Mga2FSCfeCOiPRd3FHg3gXx%2BrvvlXCnb31KLFqmXaCunvK6rwT2Rsea7cwpcbeLM6ZJnV8hXKvOPg%2FNaTDUzr7yx160q%2FngXQcdQ7%2FBWC9DKv%2BmVvk4R6f%2BEDaH1dLIMXEbYnHvnJebzQd8d50ZJ%2FoD9ER90gd6cnD2phCvJjRN9xAtLByKcLIJQTOYkpZufSMymBZsSeFyB21OOuhQsX%2FgTG1AnPo6ojxzGkwqTk9QEU6BZdBEMzEDBRdMnNwle8kWje0UoZhQpNpnVqxx7UO3yCMwyp8vYpnT%2B7F8FUJHfL%2Bp2wWVLC1FSxBTGNaEfvJC%2FQXWfArUx%2BxhMhtux6YS3gHfsP%2F7slT3qyLMIZgey5DJJWi4njtBX04ngDd7cUg9WiSAjpJYtKVBnrc%2FGhyy7DM2a9dwWfyHAp8GD6VzrwATC9%2Fi8jzEFiMfRN71WWDCxwPMUtwfaBGlt5ZxU1d53EHElDxisjLmQOsgZNAWxF8uSUI3tB4dVr%2FylOzYq1skHLsixGNH5MM%2BzVLxtHVssdJhopktJIhVa6pKx467NR5AqKMnNMZMB1X8gYMTZ5f5w2Mhvt5aoij0FOe15Z5ms0r7M4W30osRwRezTvuLb4rzEvQ8Xi7CpZIE3TBfuSQlKC0aFzrdQzi0kHFe%2BIwHUbplrHwtiOxjHbVSruYXRxhvIpR01T5f6Egl65q%2BoSVYTvt0n47OxThMI1jg60fqvPyTREfc85Q5WXyjPblg2Jj1pueuDKRFwIOkLRpy5PVqp0HkJFpPEMVXGEykRmBFCmrdX0rVMwOqWJ%2BPR6A6wRDgbjRfAC%2Bz8ObD9BXkf1z%2BQC%2B6nz3aCpd4JUhghSJBQB5vUxgNGsXd6EnUvvxivXU96b21P03T12Qz59dS9t68NfpqV%2BAh7XT%2BO33u4Z6%2BMGkNSH%2B276D09f3uo7q4525vtfvXya%2BMQXW95QP%2BrodR%2F9kH9Vj31sbSUd%2Fan56p%2F5RucV7VACyGQqeqWryN6Ysx0NCuoY2JdYVk4TsRlvi2QVUtGg5jGEOSxg1YUICm14lBQ5j4pMAWJcpIocVSHM6JswiGMO4pha%2BJv9hSWapR7qgnd6bJiLDdRaS2yTw7zqc7ykQxc2Exj3r2NUKRVHmmwRZV9x5zozVQuMGdyZXRlt9iVCEZXuVUAXZwDgG2Q85Wv6JVIU7MXy1mTlwpc5ohdeLvfaSJUFVZ%2Fa118Ar%2B%2F%2B5%2FsDNe8ZjRv9OyW9G681oXYrR0szuWqMlBwen05O3yf1NTy5fT7ypJ%2FdgANK5bzO4oQQ8NBYfELAOTgkM3S2O7YejMvA8u8VJpXGBKY0wdA8gaceChSeNc%2FDWCKeHajjnLj7xNUECKxgMpPh6aT3TfilD8FcZrIjpZwhYsZ0aulv9ixvDh8sSJXUFrovooRM0tEfWee276Uka7PsqSG7xIi%2FBgHhjMUmtHf6KanL38JFM7WRaF3ITc9W7Ibsx3mJ%2FA8a0KjYNvzM%2Fg7okeQEf2XIq4lPot4PsVtHCZqOvg%2BppBdCqectOJ4zsTkaiWPku%2BdfnZMjw1zrKrXlel5tv3bzOtxIUj5Bo7E1OUwY7kwF92GCKvQ9qxaRUgBzQtv0aB%2Bc97UZdnr7XUPxQuucgZLYRZ0OTmeXbJQipBOsk06EYfLcbpI%2BfSQjUKPuTLn%2BnyOlb3fcF1X0Hwf6M5VkrvwM1KG0WGizJO8KYfdQaRBVbe5O0C5I0ee%2FOQGcozypqTRGdIGtfihpPwzGdzNMUVhUtQLhnC6LJiIQib5J2yZJmmbZYpei51vSiNukq8AuP5Zoaw7PUvR7Jxv7Uwm5Ys7Nttq1DTUkMgPkdxlFYEu%2FuEZKgI0IJRRupi02ONyE2MD07xmuqrWZNsVXVWrWoY9UMsukhacROIjF4H%2B%2Feffzj93efH2Z8kVUfhKuAmnvxywFJrYEu%2F4AqAUlSeyW619iI0dOshRb3xgaNnvfaJmNOAmDBOp1ma2x8ZykPZ3m84QxVRZZa%2FHfsdvJMtD6HsKR7vpdlLe39fjH7veut7IQLA6czz5335U5innVi%2BJOjbdJbUVxPt4eDrfOGRsPbTENFRbX7BRqshL%2BBE2hWEVuCmVrLrwHkOmAcJhZ4Yt2bofZia%2FJodBoFWVnTXB%2FF5%2FAkUcGsBm1Jc5jn%2BLG4kao2QB1eXzX3htydB7nrXcvyk0F3pub9YT%2B9nZS33OBLGqezkpqXkA22khtq4ZYAMH8pRY%2FU0w%2F1K6X6LeGbsZrMWPW9lO2nM1a6MiXZWDXSA9OQOLw3mjp0Efbai5YNCDPpza45BqYFxJrnuRP3tI3izKAV5Cv6WoFmT1u2RdE9rSzHf2t4BcoSZEQb7wkT7795Lm40rQXdZHXCEh3TkHckMLXrEX1VGsd7DbfmbRCnCUF%2FYXVelDvY8YwwV0JKDWZ2VWuas1dxMoeTv1%2Fz4qLVE%2BxVcoGhKkdqfviVl%2BMuoFfSbbtfXux6ix3dR1pvr3l58WkU6eH2Az73%2BQDwpn3%2FAlY%2BspsbM%2B57Nmqb0CzKPuTA97H8wOpPfFggQt0t64nb9AHFgPT4Hw%3D%3D)
## Solutions
diff --git a/patterns/1-initial/migrating-from-innersource-to-open-source.md b/patterns/1-initial/migrating-from-innersource-to-open-source.md
new file mode 100644
index 000000000..316517067
--- /dev/null
+++ b/patterns/1-initial/migrating-from-innersource-to-open-source.md
@@ -0,0 +1,141 @@
+## Title
+
+Migrating from InnerSource to Open Source
+
+## Patlet
+
+When an InnerSource project succeeds internally and meets criteria for external release, organizations often lack a structured approach for the transition. Establish a process that addresses legal, security, governance, and community readiness to transition the project to open source while maintaining its internal value.
+
+## Problem
+
+Organizations with successful InnerSource projects may want to transition to open source but lack structured processes for this evolution. While InnerSource provides a foundation of collaborative development practices, internal governance, and community management skills, the transition to external open source introduces new challenges. Without proper planning, projects risk legal issues, security vulnerabilities, governance conflicts, and community challenges that could harm both the project's success and the organization's reputation in the broader open source ecosystem.
+
+## Story
+
+A tech company developed a popular internal tool using InnerSource, achieving strong adoption and good documentation. When they open sourced it, they found corporate information in comments, unclear licenses, and no community processes. The rushed release caused legal issues, security risks, and overwhelmed maintainers struggling with external contributions.
+
+## Context
+
+This pattern applies when:
+
+- An InnerSource project has achieved internal success and adoption, demonstrating proven collaborative development practices.
+- The organization has established InnerSource practices and governance, providing a foundation for external community management.
+- There is strategic value in releasing the project publicly while maintaining its internal utility.
+- Legal and compliance frameworks are in place for open source releases.
+- The project team has experience with InnerSource collaborative development practices and internal community management.
+- External market demand or strategic positioning justifies open sourcing, leveraging the project's InnerSource success.
+
+## Forces
+
+- **Legal Complexity**: Existing code may contain proprietary information, unclear licensing, or patent concerns that must be resolved before public release
+- **Security Exposure**: Internal security practices may not be suitable for public code, requiring a comprehensive security review
+- **Governance Transition**: Internal governance structures may conflict with open source community expectations and meritocracy principles
+- **Community Readiness**: Internal teams may lack experience managing external contributors and community dynamics
+- **Resource Allocation**: Open source projects require ongoing maintenance and community support that may conflict with internal priorities
+- **Brand and Reputation**: Public release represents the organization to external communities and may impact brand perception
+- **Competitive Advantage**: Releasing code publicly may reduce competitive advantages while potentially increasing market influence
+- **Regulatory Compliance**: Industry-specific regulations may impose additional requirements for public code releases
+
+## Solutions
+
+Establish a comprehensive migration process that includes:
+
+1. **Pre-Migration Assessment**: Evaluate the project's readiness using established criteria, including adoption metrics, documentation quality, and community management capabilities
+ - Assess business value and strategic alignment for external release.
+ - Ensure InnerSource templates align with open source standards to reduce transition friction.
+
+2. **Legal and Compliance Review**:
+ - Conduct a thorough code review to identify and remove proprietary information.
+ - Establish clear licensing terms and intellectual property ownership.
+ - Perform patent and copyright clearance.
+ - Create legal documentation for external contributors.
+ - Maintain contributor history and credits during the transition to avoid losing valuable contribution records.
+
+3. **Security Hardening**:
+ - Remove internal credentials, API keys, and sensitive configuration.
+ - Implement security best practices suitable for public code.
+ - Establish vulnerability disclosure processes.
+ - Create security documentation and guidelines.
+
+4. **Governance Structure Design**:
+ - Define decision-making processes that balance internal needs with community input to ensure effective outcomes.
+ - Establish maintainer roles and responsibilities.
+ - Create contribution guidelines and code of conduct.
+ - Design community management processes.
+ - Add contributor acknowledgment sections to READMEs to appropriately credit all contributors during the transition.
+
+5. **Community Preparation**:
+ - Train maintainers on open source community management
+ - Establish communication channels and documentation standards.
+ - Create onboarding processes for external contributors.
+ - Develop community engagement strategies.
+
+6. **Infrastructure Setup**:
+ - Migrate to public repositories with appropriate access controls.
+ - Set up CI/CD pipelines suitable for public development.
+ - Establish issue tracking and project management tools.
+ - Create public documentation and websites.
+
+7. **Gradual Release Strategy**:
+ - Start with limited external access or beta releases.
+ - Gradually expand community participation.
+ - Monitor adoption and community health metrics.
+ - Adjust processes based on community feedback.
+
+8. **Ongoing Support Framework**:
+ - Establish maintenance and support processes.
+ - Create escalation procedures for critical issues.
+ - Define success metrics and review cycles.
+ - Plan for long-term sustainability
+ - Implement systems to measure and demonstrate business value produced by open source developers.
+ - Identify and automate repetitive processes in project setup and maintenance.
+
+## Resulting Context
+
+After successful migration:
+
+- The project gains external contributors and broader adoption, building on its InnerSource foundation.
+- Internal teams leverage their InnerSource community management experience to manage external contributors effectively.
+- The organization builds a reputation within the open source ecosystem, demonstrating a successful evolution from InnerSource to open source.
+- Legal and compliance frameworks are established for future open source releases.
+- The project may require ongoing resource allocation for community management, but it benefits from established InnerSource practices.
+- Internal development processes adapt to external community needs while maintaining InnerSource principles.
+- New opportunities for collaboration and innovation emerge through external partnerships, extending the collaborative culture developed through InnerSource.
+- Open sourcing projects often leads to increased internal usage and adoption, contrary to initial expectations.
+- Aligning InnerSource and open source templates reduces friction for future transitions.
+
+## Rationale
+
+Migrating from InnerSource to open source is a natural evolution for successful internal projects, but requires careful planning to avoid pitfalls. A structured approach addresses legal, security, and governance issues proactively. By building on established InnerSource practices, organizations can leverage their collaborative development skills, community management experience, and internal governance structures to adapt to external community challenges.
+
+This migration leverages the foundation of InnerSource success—proven collaboration patterns, established contribution workflows, and internal community management—to create sustainable open source projects. The gradual approach enables organizations to apply their InnerSource learnings while minimizing risks to both the project and the organization's reputation in the broader open source ecosystem.
+
+## References
+
+- [Open Source Guides: How to Contribute to Open Source (by GitHub)](https://opensource.guide/how-to-contribute/)
+- [Google's Open Source Documentation](https://opensource.google/documentation/reference)
+- [The Open Source Way](https://www.theopensourceway.org/)
+- [Apache Software Foundation: How to Open Source](https://www.apache.org/dev/apply-license.html)
+- [Microsoft Open Source Program: Releasing Projects](https://opensource.microsoft.com/program/#program-releasing)
+
+## Known Instances
+
+- **Nike** - Nike has migrated multiple open source projects from InnerSource to Open Source.
+
+## Status
+
+- Initial
+
+## Author
+
+- Jeff Bailey
+
+## Related Patterns
+
+- [InnerSource before Open Source](../1-initial/innersource-before-open-source.md)
+
+## Alias
+
+- InnerSource to Open Source Transition
+- Open Sourcing InnerSource Projects
+- Public Release of InnerSource Projects
diff --git a/patterns/1-initial/source-code-inventory.md b/patterns/1-initial/source-code-inventory.md
index 71bca0563..6cd6b3b0e 100644
--- a/patterns/1-initial/source-code-inventory.md
+++ b/patterns/1-initial/source-code-inventory.md
@@ -9,9 +9,9 @@ A unified source code inventory at organization-level addresses these issues, wh
## 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.
+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:
+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?
@@ -21,10 +21,10 @@ Can you get consistent answers within the Organization to questions like:
## 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 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 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.
@@ -32,14 +32,14 @@ Can you get consistent answers within the Organization to questions like:
## Forces
-* Fragmentation of source code hosting systems in the Organization.
-* Ad-hoc source code strategies scattered across the different Legal Entities in the Organization.
+* 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).
+* 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
+### Set up an organization-level source code inventory live dashboard
* Combination of manual and automated input data sources to a single source of truth
* API available to add new data sources and extend coverage of the source code repository
@@ -53,13 +53,13 @@ Can you get consistent answers within the Organization to questions like:
* 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
+Mock-up dashboard | Mock-up questionnaire
:-------------------------:|:-------------------------:
- | 
+ | 
### 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:
+* Help to define a source code strategy including an explicit definition of policies at organization and legal entity levels for:
* Inventory
* Sharing
* Consumption
@@ -69,25 +69,25 @@ Mockup dashboard | Mockup questionnaire
## Resulting Context
-### For the Organization, Legal Entity and Project maintainers
+### 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 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 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).
+* 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.
+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.
+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
@@ -95,7 +95,7 @@ The Source Code Strategy Assessment Framework helps teams to understand the valu
## References
-* Organization and Legal Entity terms as defined in the [InnerSource License Pattern - Glossary](../2-structured/innersource-license.md#glossary).
+* "Organization" and "Legal Entity" terms as defined in the [InnerSource License Pattern - Glossary](../2-structured/innersource-license.md#glossary).
* Explore using this pattern in combination with the [InnerSource Portal](../2-structured/innersource-portal.md) pattern.
## Status
diff --git a/patterns/1-initial/walk-the-innersource-talk.md b/patterns/1-initial/walk-the-innersource-talk.md
new file mode 100644
index 000000000..b3bd02788
--- /dev/null
+++ b/patterns/1-initial/walk-the-innersource-talk.md
@@ -0,0 +1,167 @@
+## Title
+
+Walk the InnerSource talk
+
+## Patlet
+
+Teams across the organization are encouraged to adopt InnerSource principles such as working openly, sharing code, and
+collaborating transparently. But, if the team behind the InnerSource initiative doesn’t follow these practices
+themselves, it undermines credibility and adoption. Therefore, this team should lead by example: documenting their
+decisions as code, working in the open, and treating their work as an InnerSource project to build trust and show others
+how it’s done.
+
+## Problem
+
+The team behind the InnerSource initiative promotes transparency, collaboration, and best practices across the
+organization. However, if the team itself does not adhere to these principles, others may perceive InnerSource as mere
+rhetoric rather than a transformative practice. Without leading by example, adoption and trust in InnerSource
+initiatives may suffer.
+
+## Story
+
+At Siemens, when the InnerSource journey began, many of the early contributors were deeply inspired by the Open Source
+culture, several were also active participants in community projects. For them, setting up an InnerSource platform
+wasn’t a stretch; it was a natural continuation of how they already worked: asynchronously across locations, sharing
+ideas through issues, and documenting decisions transparently.
+
+This Open Source-inspired mindset gave the InnerSource platform a distinctly different character - transparent,
+collaborative, and developer-friendly - compared to the closed, proprietary environments many developers were used to.
+Unsurprisingly, it quickly attracted experts and engineers seeking more open, cross-team collaboration and meaningful
+technical exchange.
+
+## Context
+
+In many large organizations, IT services rely on what we might call a “TicketOps” model: users submit requests into a
+system, but the people and decisions behind the process remain invisible. This lack of transparency often breeds
+frustration and mistrust, making true collaboration across departments difficult.
+
+In contrast, developer-centric initiatives like InnerSource thrive on openness and shared ownership. Instead of hiding
+behind tickets, teams work in open repositories, discuss decisions transparently, and empower others to contribute. This
+shift fosters trust, reduces the frustration of not knowing what happens behind the scenes, accelerates problem-solving,
+and turns support into collaboration.
+
+## Forces
+
+### What makes the problem difficult?
+
+- In large, traditionally structured organizations, teams - especially platform, architecture, or governance groups -
+are often used to working behind closed doors. Decision-making happens in meetings, documentation is internal or
+scattered, and ownership is unclear. Shifting to transparent, open collaboration requires both cultural change and a
+reevaluation of existing workflows.
+- Working in the open can feel scary - when everything is public, people might hold back from contributing because they worry their work isn't perfect enough. This fear of not being "good enough" can stop many valuable ideas from being shared.
+- People in central roles may fear scrutiny, overload from unsolicited input, or loss of control.
+- Moving towards open collaboration demands more discipline in documentation, async communication, and community management -
+skills not always prioritized in internal tooling teams.
+
+### What are the trade-offs?
+
+- **Transparency vs. Control**: Sharing decisions and code openly fosters trust, invites valuable feedback, and
+ increases acceptance, especially when people feel included in the process. However, it also requires a mindset shift:
+ embracing open discussion, being comfortable with disagreement, and being willing to justify decisions in public and
+ potentially critical forums.
+- **Speed vs. Quality**: working transparently can slow things down in the short term compared to quick, closed
+ decision-making. However, this slower pace often leads to higher-quality outcomes: better-informed decisions, fewer
+ misunderstandings, and solutions that are easier to maintain.
+- **Effort vs. Reuse**: documenting decisions, maintaining contribution guidelines, and curating issues takes time. But
+this investment leads to higher reusability, easier onboarding, and better scaling of knowledge.
+- **Risk vs. Trust**: opening up work may expose mistakes or half-finished ideas. But by showing authentic work in
+progress, teams build credibility and foster trust across organizational boundaries.
+
+The solution - working in the open, documenting decisions transparently, and following InnerSource best practices
+internally - addresses these forces by modelling the desired behavior. It increases alignment with developer
+expectations, improves trust in the initiative, and helps shift the broader organizational culture over time.
+
+## Solutions
+
+Rather than **telling** the teams in your organization how to practice InnerSource, find ways to **show** them how to do it.
+
+This role-modelling of the desired behaviors can be done by any team. However the more central that team is, i.e. the more touch points it has with other teams,
+the more effective this role-modelling will be as it disseminates the InnerSource behaviors into many different teams and parts of the organization.
+
+Therefore, we recommend to identify some central teams (e.g. platform teams, DevEx teams, enablement teams, or maybe even the team behind the InnerSource initiative to do this role-modelling.
+
+✅ Verified Resolutions
+
+These have been successfully applied in real-world InnerSource initiatives (including at Siemens) and are known to help
+solve the problem:
+
+1. Use version-controlled repositories for all InnerSource-related assets (policies, guidelines, tooling code,
+documentation), accessible to all relevant developers.
+1. Make decisions in the open by using issue trackers and discussions rather than closed-door meetings or emails.
+1. Apply contribution workflows to internal platforms and tools exactly as recommended for InnerSource projects: open
+pull requests, reviews, contribution guidelines, etc.
+1. Document frequently asked questions (FAQs), design rationales, and change histories transparently, as part of the
+repositories.
+1. Encourage asynchronous collaboration, especially across locations and time zones, to foster inclusiveness and reduce
+dependency on synchronous coordination.
+1. Guide new contributors with patience and understanding, creating a welcoming environment where mistakes are seen as learning opportunities. Provide constructive feedback in a respectful and supportive manner, remembering that everyone was once a beginner.
+
+💡 Possible Resolutions
+
+These could be explored to address the problem further, depending on organizational context and maturity:
+
+1. Create InnerSource “meta-projects” that transparently host governance decisions, tooling roadmaps, and shared
+architecture discussions - open to comment and contribution from the developer community.
+1. Embed technical community leads or advocates into platform/tooling teams to help translate feedback and improve
+transparency across organizational layers.
+1. Use lightweight tooling (e.g. chat bots, dashboards) to surface changes, decisions, and contributions happening
+within InnerSource-supporting teams, making their work more visible and discoverable.
+1. Promote a “working out loud” culture through internal blogs, changelogs, or recorded demos where teams share updates
+and learnings openly - even outside of the InnerSource platform.
+1. Set up health checks or self-assessments for InnerSource-supporting teams to reflect on how well they themselves are
+practicing the principles they advocate.
+
+## Resulting Context
+
+When the team behind the InnerSource initiative consistently applies the same principles they promote - working
+transparently, documenting decisions, and enabling contributions - credibility increases across the organization.
+Developers begin to see the InnerSource approach as authentic and achievable, not just aspirational.
+
+This fosters greater trust, encourages broader adoption, and creates a feedback loop where teams start to mirror these
+practices in their own projects. The organization gradually shifts toward a more open, collaborative engineering
+culture.
+
+However, this transparency can also surface new challenges, such as increased demand for contributions, the need for
+community moderation, or pressure on core maintainers. These may lead to follow-up patterns like "Growing a Trusted
+Committer Base" or "InnerSource Project Lifecycle Management" to ensure sustainability.
+
+## Known Instances
+
+- **Siemens** - The experts behind the InnerSource initiative applied the same principles they advocated, developing key
+assets such as documentation portals and contribution tooling transparently in shared repositories. Discussions about
+governance, onboarding, and platform features were handled openly using issue trackers and pull requests. This visible
+commitment to openness not only boosted trust among developers but also encouraged other teams to adopt similar
+practices, accelerating InnerSource adoption organically across departments.
+
+- **Europace** - This pattern was also successfully applied at Europace. Details about this case study can be found in
+the book [Adopting InnerSource][Adopting-InnerSource-book], see in particular the chapter _Leading by Example_.
+
+- **Robert Bosch** - The InnerSource team at Bosch has applied the InnerSource working model and collaboration values from the very beginning. Their issue tracker and Kanban boards are open for the whole community to see. Their automations and governance infrastructure are developed in InnerSource repositories. The most successful example is the InnerSource documentation, which is hosted in an InnerSource repository and follows the docs-as-code practice. The documentation has proven as a low barrier opportunity to contribute and has received numerous contributions from individuals throughout the company. More details can be found in the book [Adopting InnerSource][Adopting-InnerSource-book].
+
+## Status
+
+- Initial
+
+## Author(s)
+
+- Florian Greinacher (Siemens AG)
+- Marion Deveaud (Siemens AG)
+- Nejc Habjan (Siemens AG)
+- Roger Meier (Siemens AG)
+
+## Acknowledgments
+
+- Antoine Auger (Siemens AG)
+- Diego Louzan
+- Ercan Uçan (Siemens AG)
+- Fabio Huser (Siemens AG)
+- Max Wittig (Siemens AG)
+
+## Alias
+
+- Show, don't tell
+- Lead by example
+- Dogfooding the InnerSource behaviors
+- Role-modelling the InnerSource behaviors
+
+[Adopting-InnerSource-book]: https://innersourcecommons.org/documents/books/AdoptingInnerSource.pdf
diff --git a/patterns/2-structured/30-day-warranty.md b/patterns/2-structured/30-day-warranty.md
index b21ab814d..9f60805fd 100644
--- a/patterns/2-structured/30-day-warranty.md
+++ b/patterns/2-structured/30-day-warranty.md
@@ -46,10 +46,10 @@ In addition it helps to provide clear [contribution guidelines](./base-documenta
## Known Instances
-- This was tried and proven successful at PayPal.
-- GitHub internally uses this pattern with a modified warranty timeline of 6 weeks.
-- Microsoft recommends this pattern as a principle - teams set their own specific time target matching their needs and confidence.
-- SAP leverages this pattern in their InnerSource-based Everest project to transform collaboration, ensuring contributions are not just accepted but also supported, enhancing trust and driving forward the culture of shared responsibility and innovation. See: [InnerSource: First Contribution Explored](https://community.sap.com/t5/open-source-blogs/innersource-first-contribution-explored/ba-p/13644916)
+- **PayPal** Tried this and it was proven successful.
+- **GitHub** internally uses this pattern with a modified warranty timeline of 6 weeks.
+- **Microsoft** recommends this pattern as a principle - teams set their own specific time target matching their needs and confidence.
+- **SAP** leverages this pattern in their InnerSource-based Everest project to transform collaboration, ensuring contributions are not just accepted but also supported, enhancing trust and driving forward the culture of shared responsibility and innovation. See: [InnerSource: First Contribution Explored](https://community.sap.com/t5/open-source-blogs/innersource-first-contribution-explored/ba-p/13644916)
## Authors
diff --git a/patterns/2-structured/base-documentation.md b/patterns/2-structured/base-documentation.md
index 7fb1dfddd..9004df865 100644
--- a/patterns/2-structured/base-documentation.md
+++ b/patterns/2-structured/base-documentation.md
@@ -128,11 +128,12 @@ started right away: [README-template.md](templates/README-template.md),
## Known Instances
-* Europace AG - See blog post [InnerSource: Adding base documentation](https://tech.europace.de/post/innersource-base-documentation/)
-* Paypal Inc.
-* Mercado Libre - create a documentation site that contains how to get started with InnerSource and also define the basic artifacts that a repository must have to be InnerSource (README, CONTRIBUTING, CODING_GUIDELINES, etc).
-* Analog Devices Inc.
-* Airbus
+* **Europace AG** - See blog post [InnerSource: Adding base documentation](https://tech.europace.de/post/innersource-base-documentation/)
+* **Paypal Inc.**
+* **Mercado Libre** - create a documentation site that contains how to get started with InnerSource and also define the basic artifacts that a repository must have to be InnerSource (README, CONTRIBUTING, CODING_GUIDELINES, etc).
+* **Analog Devices Inc.**
+* **Airbus**
+* **Siemens** automatically creates a checklist issue for every new InnerSource project to make maintainers aware of mandatory requirements (e.g. business approval, license & copyright, export control, contributing guidelines, maintainer maturity) as well as best practices (e.g. documentation as code, semantic versioning, continuous integration/deployment).
## Authors
diff --git a/patterns/2-structured/communication-tooling.md b/patterns/2-structured/communication-tooling.md
index 08b1a33d3..b0605ee4d 100644
--- a/patterns/2-structured/communication-tooling.md
+++ b/patterns/2-structured/communication-tooling.md
@@ -74,9 +74,10 @@ to a lower need to repeat explanations.
## Known Instances
-* Europace AG
-* Paypal Inc.
-* Mercado Libre
+* **Europace AG**
+* **Paypal Inc.**
+* **Mercado Libre**
+* **Siemens** makes extensive use of communication channels accessible to all employees for all user questions and discussions around code.siemens.com, InnerSource and Open Source.
## Authors
diff --git a/patterns/2-structured/contracted-contributor.md b/patterns/2-structured/contracted-contributor.md
index 0790f6774..eba15100e 100644
--- a/patterns/2-structured/contracted-contributor.md
+++ b/patterns/2-structured/contracted-contributor.md
@@ -83,7 +83,7 @@ A formal contracting is also beneficial for contributors and communities:
## Known Instances
-- BIOS at Robert Bosch GmbH
+- BIOS at **Robert Bosch GmbH**
## Status
diff --git a/patterns/2-structured/crossteam-project-valuation.md b/patterns/2-structured/crossteam-project-valuation.md
index 96b89c8e2..dd2adfdab 100644
--- a/patterns/2-structured/crossteam-project-valuation.md
+++ b/patterns/2-structured/crossteam-project-valuation.md
@@ -92,7 +92,7 @@ They will provide a head-and-shoulders improvement in on-the-ground results over
## Known Instances
-* Nike
+* **Nike**
## Status
diff --git a/patterns/2-structured/dedicated-community-leader.md b/patterns/2-structured/dedicated-community-leader.md
index 8f5235d75..2799d3ec2 100644
--- a/patterns/2-structured/dedicated-community-leader.md
+++ b/patterns/2-structured/dedicated-community-leader.md
@@ -58,8 +58,8 @@ Having excellent and dedicated community leaders is a precondition for the succe
## Known Instances
-* _BIOS at Robert Bosch GmbH_. Note that InnerSource at Bosch was, for the majority, aimed at increasing innovation and to a large degree dealt with internal facing products. This pattern is currently not used at Bosch for lack of funding.
-* _Airbus_. A data scientist wanted to improve the collaboration with peers in the group and found: i) many developers (beyond data science) wanted that too and were happy someone was taking care of the issue, and ii) support from line manager and middle management to eventually act as the _de facto_ community leader, on top of his regular line of duty.
+* BIOS at **Robert Bosch GmbH**. Note that InnerSource at Bosch was, for the majority, aimed at increasing innovation and to a large degree dealt with internal facing products. This pattern is currently not used at Bosch for lack of funding.
+* **Airbus**. A data scientist wanted to improve the collaboration with peers in the group and found: i) many developers (beyond data science) wanted that too and were happy someone was taking care of the issue, and ii) support from line manager and middle management to eventually act as the _de facto_ community leader, on top of his regular line of duty.
## Alias
diff --git a/patterns/2-structured/document-your-guiding-principles.md b/patterns/2-structured/document-your-guiding-principles.md
index 01c423dfb..bfb50d097 100644
--- a/patterns/2-structured/document-your-guiding-principles.md
+++ b/patterns/2-structured/document-your-guiding-principles.md
@@ -121,9 +121,12 @@ All Trusted Committers of a project are published.
## Known Instances
-* Europace AG
-* GitHub
-* Robert Bosch GmbH
+* **Europace AG**
+* **GitHub**
+* **Robert Bosch GmbH**
+* **Siemens'** InnerSource strategy is built upon the guiding principles of Documentation, Workflow, Transparency, Continuous Integration and Culture which are detailed in their InnerSource portal.
+* **Mercedes-Benz**
+* **SAP** - The [SAP Open Source Manifesto](https://github.com/SAP/open-source-manifesto) mentions principles that SAP follows that related both to Open Source and InnerSource
### Europace AG
@@ -197,6 +200,10 @@ The principles _Openness_, _Transparency_ and _Voluntariness_ helped grow divers
_Meritocracy_ has proven to be an effective motivation for making great contributions.
_Self-Determination_ allowed the communities to use their limited time for contributions in the most effective and efficient way.
+### Mercedes-Benz
+
+Mercedes-Benz highlights the principles that they hold themselves accountable to in their [Mercedes-Benz AG - FOSS Manifesto](https://opensource.mercedes-benz.com/manifesto/). They differentiate between company principles and employee principles, which adds higher granularity. Further they combine both Open Source and InnerSource in the same manifesto, highlighting how both follow the same ideals.
+
## Status
Structured
diff --git a/patterns/2-structured/gig-marketplace.md b/patterns/2-structured/gig-marketplace.md
index 7e2ae3779..69552cb95 100644
--- a/patterns/2-structured/gig-marketplace.md
+++ b/patterns/2-structured/gig-marketplace.md
@@ -60,7 +60,7 @@ When used in combination with the InnerSource Portal pattern, the Gig Marketplac
## Known Instances
* A large financial services organization has used the creation of an InnerSource Gig Marketplace website to foster their InnerSource program.
-* SAP implemented the Gig Marketplace pattern - a new InnerSource program was added to the internal job platform where positions and similar offerings can be posted.
+* **SAP** implemented the Gig Marketplace pattern - a new InnerSource program was added to the internal job platform where positions and similar offerings can be posted.
* The Gig Marketplace pattern has been proven to work extremely well with the associated [InnerSource Portal](./innersource-portal.md) pattern in this context. The InnerSource Portal increases awareness of specific projects currently underway while the Gig Marketplace advertises tasks of a certain type available to be worked on within those projects.
## Status
diff --git a/patterns/2-structured/governance-levels.md b/patterns/2-structured/governance-levels.md
index b991ffb55..25af39e94 100644
--- a/patterns/2-structured/governance-levels.md
+++ b/patterns/2-structured/governance-levels.md
@@ -141,9 +141,9 @@ The same levels make sense inside of organizations.
## Known Instances
-- BBC - referenced in this talk: [Ownership in a DevOps and InnerSource environment - Tom Sadler (BBC)](https://www.youtube.com/watch?v=O8TK7QG3FjM)
-- Flutter Entertainment
-- Europace AG
+- **BBC** - referenced in this talk: [Ownership in a DevOps and InnerSource environment - Tom Sadler (BBC)](https://www.youtube.com/watch?v=O8TK7QG3FjM)
+- **Flutter Entertainment**
+- **Europace AG**
### Flutter Entertainment
diff --git a/patterns/2-structured/group-support.md b/patterns/2-structured/group-support.md
index 9bf49202e..71c154c9f 100644
--- a/patterns/2-structured/group-support.md
+++ b/patterns/2-structured/group-support.md
@@ -69,7 +69,7 @@ Feeling part of a group and being given some structure and responsibility genera
## Known Instances
-* WellSky
+* **WellSky**
## Status
diff --git a/patterns/2-structured/innersource-hackathon.md b/patterns/2-structured/innersource-hackathon.md
new file mode 100644
index 000000000..2f11878be
--- /dev/null
+++ b/patterns/2-structured/innersource-hackathon.md
@@ -0,0 +1,119 @@
+## Title
+
+InnerSource Hackathon
+
+## Patlet
+
+Only InnerSource enthusiasts practice InnerSource during the early stages of adoption, while most engineering teams lack the time or motivation to try it.
+Hosting a company-wide hackathon focused on InnerSource contributions provides a safe space for engineers to experiment with InnerSource practices and produces tangible contributions to InnerSource projects.
+
+## Problem
+
+The company wants to adopt InnerSource as a software development methodology but only those familiar with open source principles or those who understand the benefits of InnerSource adopt it. It results in just a handful of InnerSource projects and is difficult to scale beyond that.
+
+## Context
+
+The senior leadership believes in InnerSource and wants to drive it throughout the company. The engineers who are familiar with open source principles and/or understand the benefits of InnerSource are the early adopters. There is success with these initial pilot projects and teams.
+
+Now the next step is to drive it across the company. There might be reluctance from engineering teams due to various factors like:
+
+* not familiar with InnerSource or open source practices
+* not enough time to prioritize InnerSource, given the regular work deliverables
+* reluctance to changing ways of working when everything works well already
+* unclear return on investment for the upfront setup costs that an InnerSource project takes
+
+Even when teams slowly start adopting InnerSource and open up their repositories, there are not many contributors. It is challenging to build a community around those projects, in spite of publishing the projects in an [InnerSource Portal](./innersource-portal.md). This could be due to various reasons like:
+
+* engineers do not have time to explore new InnerSource projects and contribute, outside regular work deliverables
+* no additional incentive to this effort apart from being acknowledged
+* lack of motivation by middle management
+
+In organizations where developers charge time to specific contracts or projects (e.g. consulting firms, government contractors, nonprofits), the barrier is even higher: if InnerSource is not part of the funded tasking, it simply does not happen.
+
+## Forces
+
+Apart from the reasons listed in the Context section, there are other factors from different entities that prevent teams from adopting InnerSource like:
+
+* From middle management: perception of no direct benefit to the team apart from team skill development and individual growth; eventually resulting in no motivation by the middle management to the engineers in trying out InnerSource ways of working.
+* From engineers: investing time to try new ways of working when there is already time and resource constraint for regular work deliverables; it is also challenging to balance both and show outcomes in both; this curbs motivation from the engineers as there is little safe space to experiment.
+* From senior leadership: not prioritizing investment in InnerSource ways of working such as it being part of long term goals or objectives.
+
+For those new to InnerSource or any technology/methodology, there is a need for safe space to try and experiment without definite outcomes in the initial stages. These factors and forces hinder such an experiment ground.
+
+## Solution
+
+Organize a company-wide hackathon focused on InnerSource. An InnerSource hackathon provides a safe space for engineers to try and contribute to InnerSource projects without any presumption and prejudice. It could be a 1 or 2 day event.
+
+It can preferably be organized by an InnerSource Program Office (ISPO), if it exists in the organization, or by the Open Source Program Office (OSPO), if OSPO also drives InnerSource within the company. It can also be organized by a software best practices team, a developer experience team, or any central team or group of individuals who believe in InnerSource.
+
+### Preparation
+
+A successful hackathon requires preparation in several areas:
+
+* **Funding**: Secure a charge code or budget that participants can bill their time against, removing the barrier of contract-based time allocation. Even funding for 20-30 attendees for a single day is sufficient to start.
+* **Awareness**: Send out emails, post in messaging channels, and leverage existing developer community channels. Consider sending an opening survey to gauge existing knowledge of InnerSource and understand what languages and skills participants bring.
+* **Task preparation**: Reach out to maintainers of existing InnerSource projects and ask them to identify features that need to be implemented or issues that contributors could work on. Document each task with the languages involved, skills required, background context, clear definition of done, and the impact the contribution will have. Making the impact visible helps participants feel good about their contributions.
+* **Task boards**: Organize all tasks in a central location (e.g. a task board) where participants can browse and select tasks. Include a task flowchart with links to all relevant repositories and resources.
+* **Access**: Ensure participants have the necessary permissions to repositories and resources before the event to avoid bottlenecks on the day.
+
+### Participation
+
+All engineers in the organization can participate in the hackathon. The participants can be new to InnerSource or InnerSource practitioners already. They can participate individually or as a team. Participating as a team also provides a safe environment; for example, those who are new to InnerSource can team up with InnerSource practitioners.
+
+There could be one or more categories to participate as follows:
+
+* **Contribute to an existing InnerSource project**: InnerSource project owners list features in issues as a prerequisite before the hackathon and participants can contribute during the event.
+* **Start a new InnerSource project**: Either start a new project from scratch as InnerSource or make an existing project InnerSource ready.
+* **Participate as a mentor**: Participants can also mentor new InnerSource practitioners, providing knowledge transfer or coaching during the event. Having at least one maintainer from every participating project available for Q&A is highly valuable.
+
+### Event Format
+
+The event could be held virtually, in person, or as a hybrid event. A hybrid format allows broader participation but requires extra effort to ensure collaboration across geographically dispersed sites.
+
+A typical event day includes:
+
+1. **Introduction**: Provide an overview of InnerSource for newcomers, introduce the available projects and tasks, and show participants where to find the task boards and resources.
+2. **Work session**: Have an open communication channel (e.g. a video call or chat room) where participants can ask questions and get help. Maintainers and organizers should be available throughout.
+3. **Closing**: Thank participants, share early results, and distribute a closing survey to capture feedback and metrics.
+4. **Follow-up**: Work with participants who did not finish their tasks to close out remaining work. Coordinate with project maintainers to review and merge outstanding pull requests.
+
+The winners and participants should be recognized and acknowledged in a company-wide forum at the end of the hackathon (see [Praise Participants](./praise-participants.md)). This is important as it keeps motivating them and more engineers to adopt and practice InnerSource going forward.
+
+Such an event provides a safe space for engineers who want to adopt or contribute to InnerSource but did not have the time and motivation to do it, or for those who kept putting it off due to higher priority work deliverables. From a middle management point of view, 1 or 2 days for such an event is not much of an ask and hence they are more likely to accept.
+
+## Resulting Context
+
+* There is increased adoption of InnerSource by providing such a safe platform to try and experiment combined with recognition and support by the senior leadership and middle management.
+* More InnerSource projects are published within the company.
+* The InnerSource projects receive more contributions.
+* Communities start to form around these InnerSource projects.
+* This happens not only during the event but continues after the event too, with the hackathon participants acting as InnerSource ambassadors in their teams.
+* It also helps ISPO and OSPO spread awareness about InnerSource best practices quickly, across the whole engineering community in the organization.
+* Such an event also gives more exposure to projects that were developed to solve the needs of a specific team but turns out that many teams have similar requirements.
+
+All these help scale InnerSource in the organization.
+
+## Related Patterns
+
+* [Start as an Experiment](./start-as-experiment.md) - a hackathon can serve as a low-risk experiment to demonstrate the value of InnerSource to management.
+* [Praise Participants](./praise-participants.md) - recognizing contributors during and after the hackathon helps sustain momentum.
+* [InnerSource Portal](./innersource-portal.md) - a portal helps participants discover projects to contribute to during the hackathon, and helps them stay engaged afterward.
+* [Dedicated Community Leader](./dedicated-community-leader.md) - the hackathon organizers often serve as community leaders who sustain InnerSource adoption after the event.
+* [Gig Marketplace](./gig-marketplace.md) - a gig marketplace can help match participants with tasks during the hackathon based on their skills and interests.
+
+## Known Instances
+
+* **IKEA** (Ingka Group)
+* **The Aerospace Corporation** organized an internal InnerSource contribution festival inspired by open source contribution festivals at conferences like KubeCon/CloudNativeCon. Aerospace is a Federally Funded Research and Development Center (FFRDC) where developers charge time to government contracts, making InnerSource adoption especially challenging because work not embedded in funded tasking does not happen. The event was organized by a software best practices team and held as a hybrid event (virtual and in-person in El Segundo, California). They secured dedicated funding so that all 31 participants across 21 departments could charge their time to the event. Tasks were prepared with project maintainers, documented with clear definitions of done and impact statements, and organized on task boards. At least one maintainer from every participating project was available for Q&A throughout the day. During and shortly after the event, 15 tickets were closed. Notably, one developer used the event to contribute a feature he needed back to an internal library rather than forking it — a direct demonstration of InnerSource solving the "fork storm" problem the company had been experiencing. Two-thirds of participants had never heard of InnerSource before the event, yet 100% of survey respondents agreed that InnerSource would have a positive impact on development and wanted to participate in a future event. Traffic to the company's internal documentation site nearly doubled in the month following the event. See: [Kickstarting InnerSource with a Contribfest](https://www.youtube.com/watch?v=J5KeCHFbnWA) (InnerSource Commons Summit 2025 talk by Trin Baumgarten and Caroline T Jones).
+
+## Status
+
+* Structured
+
+## Author
+
+* Shanmugapriya Manoharan
+
+## Acknowledgments
+
+* Trin Baumgarten and Caroline T Jones (The Aerospace Corporation) for [sharing their experience](https://www.youtube.com/watch?v=J5KeCHFbnWA) at the InnerSource Commons Summit.
diff --git a/patterns/2-structured/innersource-license.md b/patterns/2-structured/innersource-license.md
index bc031e933..981c4f9cb 100644
--- a/patterns/2-structured/innersource-license.md
+++ b/patterns/2-structured/innersource-license.md
@@ -55,6 +55,8 @@ The license simplifies the conversations within our organization about sharing s
- **Robert Bosch GmbH**
- **Airbus**
- **GovTech (Singapore Government)**
+- **Siemens** has developed their own InnerSource license alongside other necessary legal agreements between subsidiaries.
+- **Mercedes-Benz**
### DB Systel
@@ -107,5 +109,5 @@ For more details see the InnerSource Commons Community call from 09/2023 [Improv
- **organization** - An umbrella for multiple legal entities. (synonyms: group, enterprise) (e.g. Lufthansa)
- **legal entity** - An entity that has its own legal rights and obligations (synonyms: company, subsidiary) (e.g. Lufthansa Systems GmbH, Lufthansa Industry Solutions TS GmbH, ...)
-[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/blob/master/DB-Inner-Source-License.md
+[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/tree/master/inner-source-license
[eupl]: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
diff --git a/patterns/2-structured/innersource-portal.md b/patterns/2-structured/innersource-portal.md
index 0473fd5a6..823af865c 100644
--- a/patterns/2-structured/innersource-portal.md
+++ b/patterns/2-structured/innersource-portal.md
@@ -108,6 +108,7 @@ It is a good solution for a portal with a few dozen projects, though.
* **Mercado Libre** use an instance of the [SAP portal](https://github.com/SAP/project-portal-for-innersource) to discover existing InnerSource projects within the organization.
* **Mercedes-Benz** is [using](https://opensource.mercedes-benz.com/news/sponsor_innersource_commonsoss) the SAP reference implementation mentioned above for their InnerSource Portal.
* **WellSky** has a simple _Confluence Wiki_ page were InnerSource and reusable projects are listed.
+* **Siemens** has set up an internal portal that provides documentation for InnerSource maintainers, contributors, users and their managers. It also serves as an entry point to explore available projects and gives hints to improve project visibility.
## References
diff --git a/patterns/2-structured/issue-tracker.md b/patterns/2-structured/issue-tracker.md
index ffbda0591..17bb85dd9 100644
--- a/patterns/2-structured/issue-tracker.md
+++ b/patterns/2-structured/issue-tracker.md
@@ -49,7 +49,8 @@ development but also during the planning phase of new features:
## Known Instances
-* Europace AG - See blog post [Issue Use Cases](https://tech.europace.de/post/using-issues-for-asking-questions-and-tracking-work/)
+* **Europace AG** - See blog post [Issue Use Cases](https://tech.europace.de/post/using-issues-for-asking-questions-and-tracking-work/)
+* **Siemens** manages work on their InnerSource Platform in a fully transparent way. Therefore the work on the InnerSource Platform itself is organized as an InnerSource project. This includes tracking enhancements and bugs, as well as marketing, communication activities and support requests from users.
## Authors
diff --git a/patterns/2-structured/maturity-model.md b/patterns/2-structured/maturity-model.md
index 629c2e477..4dac8dff4 100644
--- a/patterns/2-structured/maturity-model.md
+++ b/patterns/2-structured/maturity-model.md
@@ -15,7 +15,7 @@ yet aware of.
When InnerSource adoption in an enterprise starts to increase, individual
mentoring of each project through one evangelist becomes unfeasible. Also, more
and more people are gaining at least a basic understanding of what it means to
-work in an InnerSource project. Looking at all InnerSource projects though the
+work in an InnerSource project. Looking at all InnerSource projects though, the
depth of understanding for the concept will diverge. Teams may not be aware of
proven patterns that would help them move to the next level and solve issues and
pain points that they are dealing with.
@@ -33,8 +33,7 @@ InnerSource project differs depending on each team.
Teams sharing InnerSource learnings run into misunderstandings as they are not
aware of their respective level of InnerSource adoption.
-Teams believe that "it's all about migrating to a shared software development
-[forge](https://en.wikipedia.org/wiki/Forge_%28software%29)" (GitLab, GitHub, or Bitbucket being well known examples of such forges).
+Teams believe that "it's all about migrating to a shared software development [forge](https://en.wikipedia.org/wiki/Forge_%28software%29)" (GitLab, GitHub, or Bitbucket being well known examples of such forges).
Teams are not aware of best practices that would help them solve issues that
they run into in their daily doing.
@@ -210,10 +209,11 @@ long term.
## Known Instances
-* Entelgy
-* Zylk
-* Bitergia
-* Airbus
+* **Entelgy**
+* **Zylk**
+* **Bitergia**
+* **Airbus**
+* **Adyen**
## Authors
diff --git a/patterns/2-structured/praise-participants.md b/patterns/2-structured/praise-participants.md
index b8c32b2c2..7836f815b 100644
--- a/patterns/2-structured/praise-participants.md
+++ b/patterns/2-structured/praise-participants.md
@@ -71,8 +71,9 @@ Overdoing it may feel insincere and mechanical and defeat your purpose in reachi
## Known Instances
-* Nike (multiple projects)
-* SAP - InnerSource initiatives like the Dojo and Everest projects are elevated by the 'Praise Participants' pattern, where the SAP Appreciate program plays a key role in fostering a culture of gratitude and recognition, driving innovation and collaboration to new heights. See: [InnerSource: First Contribution Explored](https://community.sap.com/t5/open-source-blogs/innersource-first-contribution-explored/ba-p/13644916)
+* **Nike** (multiple projects)
+* **SAP** - InnerSource initiatives like the Dojo and Everest projects are elevated by the 'Praise Participants' pattern, where the SAP Appreciate program plays a key role in fostering a culture of gratitude and recognition, driving innovation and collaboration to new heights. See: [InnerSource: First Contribution Explored](https://community.sap.com/t5/open-source-blogs/innersource-first-contribution-explored/ba-p/13644916)
+* **Siemens** awards successful InnerSource projects and contributors at their yearly internal InnerSource Summit.
## Status
diff --git a/patterns/2-structured/project-setup/README.md b/patterns/2-structured/project-setup/README.md
index b4045fc26..2ba1eb0e5 100644
--- a/patterns/2-structured/project-setup/README.md
+++ b/patterns/2-structured/project-setup/README.md
@@ -1,3 +1,3 @@
# Files moved
-Files from this folder were moved [here](../).
+Files from this folder were moved to the [2-structured folder](../).
diff --git a/patterns/2-structured/release-process.md b/patterns/2-structured/release-process.md
index ae46068fd..86105babc 100644
--- a/patterns/2-structured/release-process.md
+++ b/patterns/2-structured/release-process.md
@@ -47,7 +47,7 @@ The following are key elements to achieve this:
- Releases are clearly labeled and tagged with [semantic versioning](https://github.com/semantic-release/semantic-release)
- Releases include notes on New Features, Bug Fixes, and any "Breaking Changes"
-A good example of quality release notes can be found [here](https://github.com/jaegertracing/jaeger/releases).
+A good example of quality release notes can be found in the [jaeger project](https://github.com/jaegertracing/jaeger/releases).
## Resulting Context
@@ -57,8 +57,8 @@ Release notes are also a great opportunity to [praise participants](praise-parti
## Known Instances
-* Comcast (multiple projects)
-* GitHub (multiple projects)
+* **Comcast** (multiple projects)
+* **GitHub** (multiple projects)
## Authors
diff --git a/patterns/2-structured/repository-activity-score.md b/patterns/2-structured/repository-activity-score.md
index dae8f3e2b..73c26a57f 100644
--- a/patterns/2-structured/repository-activity-score.md
+++ b/patterns/2-structured/repository-activity-score.md
@@ -114,8 +114,9 @@ The repository activity score is a simple calculation based on the GitHub API. I
## Known Instances
-* Used in SAP's InnerSource project portal to define the default order of the InnerSource projects. It was first created in July 2020 and is fine-tuned and updated frequently ever since. When proposed to the InnerSource Commons in July 2020, this pattern emerged. Also see [Michael Graf & Harish B (SAP) at ISC.S11 - The Unexpected Path of Applying InnerSource Patterns](https://www.youtube.com/watch?v=6r9QOw9dcQo&list=PLCH-i0B0otNQZQt_QzGR9Il_kE4C6cQRy&index=6).
-* Airbus took a lot of inspiration from this pattern to create an "InnerSource score" that combines the activity score together with checks from the [Standard Base Documentation](./base-documentation.md) and the [InnerSource License](./innersource-license.md).
+* **SAP** - Used in SAP's InnerSource project portal to define the default order of the InnerSource projects. It was first created in July 2020 and is fine-tuned and updated frequently ever since. When proposed to the InnerSource Commons in July 2020, this pattern emerged. Also see [Michael Graf & Harish B (SAP) at ISC.S11 - The Unexpected Path of Applying InnerSource Patterns](https://www.youtube.com/watch?v=6r9QOw9dcQo&list=PLCH-i0B0otNQZQt_QzGR9Il_kE4C6cQRy&index=6).
+* **Airbus** took a lot of inspiration from this pattern to create an "InnerSource score" that combines the activity score together with checks from the [Standard Base Documentation](./base-documentation.md) and the [InnerSource License](./innersource-license.md).
+* **Siemens** includes repository activity in their InnerSource project quality score. Maintainers can use the quality score to improve their project and communicate their score via badges.
## Status
diff --git a/patterns/2-structured/review-committee.md b/patterns/2-structured/review-committee.md
index f27d793ea..1252af272 100644
--- a/patterns/2-structured/review-committee.md
+++ b/patterns/2-structured/review-committee.md
@@ -41,7 +41,7 @@ Company A wants to introduce its first InnerSource initiative. Most managers in
## Known Instances
-* BIOS at Robert Bosch GmbH (in the early stages of adoption, only - 2009-2012)
+* BIOS at **Robert Bosch GmbH** (in the early stages of adoption, only - 2009-2012)
## Status
diff --git a/patterns/2-structured/service-vs-library.md b/patterns/2-structured/service-vs-library.md
index 51bde3c20..7370bb1a7 100644
--- a/patterns/2-structured/service-vs-library.md
+++ b/patterns/2-structured/service-vs-library.md
@@ -72,9 +72,9 @@ Related to this pattern is the [30 Day Warranty](30-day-warranty.md) pattern tha
## Known Instances
-* Europace AG
-* Flutter Entertainment: A [Flutter InnerSource application](https://innersource.flutter.com/sdlc/) has a shared code "service" repository with cross-team contribution and CI pipeline to build and publish a shared release artifact. Each adopting team has a "deployment config" repository defining their own deployment. This is driven by varying regulatory requirements, service and incident management practices and infrastructure skill sets in different areas of the business.
-* WellSky (see [Continuous InnerSource in Production - 5 Times](https://www.youtube.com/watch?v=loSTj4yIG9Q&pp=ygUkY29udGludW91cyBpbm5lcnNvdXJjZSBpbiBwcm9kdWN0aW9u))
+* **Europace AG**
+* **Flutter Entertainment**: A [Flutter InnerSource application](https://innersource.flutter.com/sdlc/) has a shared code "service" repository with cross-team contribution and CI pipeline to build and publish a shared release artifact. Each adopting team has a "deployment config" repository defining their own deployment. This is driven by varying regulatory requirements, service and incident management practices and infrastructure skill sets in different areas of the business.
+* **WellSky** (see [Continuous InnerSource in Production - 5 Times](https://www.youtube.com/watch?v=loSTj4yIG9Q&pp=ygUkY29udGludW91cyBpbm5lcnNvdXJjZSBpbiBwcm9kdWN0aW9u))
## Status
diff --git a/patterns/2-structured/start-as-experiment.md b/patterns/2-structured/start-as-experiment.md
index 56e0c7d31..13451ae0f 100644
--- a/patterns/2-structured/start-as-experiment.md
+++ b/patterns/2-structured/start-as-experiment.md
@@ -53,8 +53,9 @@ Finally, starting as an experiment makes it much easier to sidestep regulations
## Known Instances
-- Robert Bosch GmbH (globally distributed software development)
-- Airbus: the data science community collaborated on shared Python libraries that eventually lead to a group-wide InnerSource scheme for any software.
+- **Robert Bosch GmbH** (globally distributed software development)
+- **Airbus**: the data science community collaborated on shared Python libraries that eventually lead to a group-wide InnerSource scheme for any software.
+- **Siemens** started their [InnerSource Platform](https://about.gitlab.com/customers/siemens/) code.siemens.com from a single department with a few hundred users. Over the years they scaled it to a company-wide service with 50,000 active users.
## Status
diff --git a/patterns/2-structured/trusted-committer.md b/patterns/2-structured/trusted-committer.md
index 085513c77..b826f19bf 100644
--- a/patterns/2-structured/trusted-committer.md
+++ b/patterns/2-structured/trusted-committer.md
@@ -123,12 +123,10 @@ there is a plan for responsible stewardship.
## Known Instances
-This has been tried and proven successful at:
-
-- Nike
-- PayPal
-- Mercado Libre - adds a section in the `CONTRIBUTING.md` file to inform who the Trusted Committers are.
-- Robert Bosch GmbH - we didn't call the role 'Trusted Committer' but we had this role at the beginning of our InnerSource journey. Trusted Committers would be funded for 100 % of their time to be able to focus on this role.
+- **Nike**
+- **PayPal**
+- **Mercado Libre** - adds a section in the `CONTRIBUTING.md` file to inform who the Trusted Committers are.
+- **Robert Bosch GmbH** - we didn't call the role 'Trusted Committer' but we had this role at the beginning of our InnerSource journey. Trusted Committers would be funded for 100 % of their time to be able to focus on this role.

diff --git a/translation/README.md b/translation/README.md
index 780429647..872323a06 100644
--- a/translation/README.md
+++ b/translation/README.md
@@ -49,7 +49,7 @@ However, since git does not create empty folders, it is better to create directo
Most of the translations have not translated the text in the visuals (e.g. in images, the mindmap, etc). However if you like, you can!
-- To translate the mindmap, create a new folder similar to [pattern-categorization/gl](../pattern-categorization/gl/). Then edit the file `innersource-program-mind-map.md` in there, and run the scripts as explained [here](../pattern-categorization/README.md).
+- To translate the mindmap, create a new folder similar to [pattern-categorization/gl](../pattern-categorization/gl/). Then edit the file `innersource-program-mind-map.md` in there, and run the scripts as explained in the [Pattern Categorization README](../pattern-categorization/README.md).
- To add translated visuals, add a subfolder in `assets/img`, see [assets/img/gl/](../assets/img/gl/) as an example. Make sure that in the markdown files of your patterns you link to the correct image files.
### Translation Quality and Review Process
diff --git a/translation/es/patterns/innersource-license.md b/translation/es/patterns/innersource-license.md
index bf1530549..e59d13bbc 100644
--- a/translation/es/patterns/innersource-license.md
+++ b/translation/es/patterns/innersource-license.md
@@ -107,7 +107,7 @@ Para más detalles, vea la llamada de la Comunidad InnerSource Commons de 09/202
- **organización** - Un paraguas para múltiples entidades legales. (sinónimos: grupo, empresa) (por ejemplo, Lufthansa)
- **entidad legal** - Una entidad que tiene sus propios derechos y obligaciones legales (sinónimos: empresa, subsidiaria) (por ejemplo, Lufthansa Systems GmbH, Lufthansa Industry Solutions TS GmbH, ...)
-[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/blob/master/DB-Inner-Source-License.md
+[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/tree/master/inner-source-license
[eupl]: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
## Histórico de Traducciones
diff --git a/translation/gl/patterns/innersource-license.md b/translation/gl/patterns/innersource-license.md
index 3a13891a2..024a19efe 100644
--- a/translation/gl/patterns/innersource-license.md
+++ b/translation/gl/patterns/innersource-license.md
@@ -51,7 +51,7 @@ A licenza simplifica as conversas dentro da organización sobre o feito de compa
## Exemplos coñecidos
-DB Systel creou a súa propia licenza InnerSource, pódese consultar en [DB Inner Source License](https://github.com/dbsystel/open-source-policies/blob/master/DB-Inner-Source-License.md). Usaron a [EUPL](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12), xa que ofrecía un software libre como punto de partida, e despois elaboraron as limitacións e as regras adicionais necesarias no seu contexto organizativo específico.
+DB Systel creou a súa propia licenza InnerSource, pódese consultar en [DB Inner Source License][db-inner-source-license]. Usaron a [EUPL][eupl], xa que ofrecía un software libre como punto de partida, e despois elaboraron as limitacións e as regras adicionais necesarias no seu contexto organizativo específico.
As primeiras entidades xurídicas (empresas) dentro da DB AG están a usar a súa licenza InnerSource.
@@ -80,13 +80,16 @@ Paga a pena mencionar que, ata agora, o software compartido baixo esta licenza I
## Referencias
- Presentación FOSSBack 2020: [Cornelius Schumacher - Blending Open Source and Corporate Values](https://youtu.be/hikC6U8X_Ec) [Cornelius Schumacher: Mesturando código aberto e valores corporativos]; vexa a partir do minuto 27:30 para máis información sobre a licenza InnerSource.
-- [DB Inner Source License](https://github.com/dbsystel/open-source-policies/blob/master/DB-Inner-Source-License.md).
+- [DB Inner Source License][db-inner-source-license].
## Glosario
- **Organización**: un paraugas para varias entidades xurídicas. (Sinónimos: grupo, empresa. Por exemplo, Lufthansa.).
- **Entidade xurídica**: unha entidade que ten os seus propios dereitos e obrigas legais. (Sinónimos: empresa, filial. Por exemplo, Lufthansa Systems GmbH, Lufthansa Industry Solutions TS GmbH etc).
+[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/tree/master/inner-source-license
+[eupl]: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+
## Tradución
- Leticia Gómez Cadahía
diff --git a/translation/ja/patterns/innersource-license.md b/translation/ja/patterns/innersource-license.md
index d12df4d08..44376f734 100644
--- a/translation/ja/patterns/innersource-license.md
+++ b/translation/ja/patterns/innersource-license.md
@@ -89,7 +89,7 @@ DB 社の中で最初の法人(企業) は、このインナーソース ライ
- **組織** - 複数の企業の母体(同義語: グループ、ホールディング、エンタープライズ) (例: Microsoft Corporation)
- **法的エンティティ** - 独自の法的権利と義務を有するエンティティ (同義語: グループ子会社、子会社、関連会社) (例: Microsoft Japan, GitHub, LinkedIn)
-[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/blob/master/DB-Inner-Source-License.md
+[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/tree/master/inner-source-license
[eupl]: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
## 翻訳の履歴
diff --git a/translation/pt-br/patterns/innersource-license.md b/translation/pt-br/patterns/innersource-license.md
index e8c3957ea..aff5f8f3d 100644
--- a/translation/pt-br/patterns/innersource-license.md
+++ b/translation/pt-br/patterns/innersource-license.md
@@ -87,7 +87,7 @@ Vale mencionar que até agora, o software compartilhado sob essa licença InnerS
- organização - um guarda-chuva para várias entidades legais. (sinônimos: grupo, empresa) (e.g., Lufthansa)
-entidade jurídica - Uma entidade que possui seus próprios direitos e obrigações legais (sinônimos: empresa, subsidiária) (por exemplo, Lufthansa Systems GmbH, Lufthansa Industry Solutions TS GmbH, ...)
-[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/blob/master/DB-Inner-Source-License.md
+[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/tree/master/inner-source-license
[eupl]: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
## Histórico de Tradução
diff --git a/translation/zh/patterns/innersource-license.md b/translation/zh/patterns/innersource-license.md
index d60262768..5fc1eb414 100644
--- a/translation/zh/patterns/innersource-license.md
+++ b/translation/zh/patterns/innersource-license.md
@@ -87,7 +87,7 @@ DB AG内部的第一批法律实体(公司)正在使用他们的内源许可
- **组织** - 多个法律实体的综合体。(同义词:集团、企业)(如汉莎航空)。
- **法律实体** - 拥有自身的法律权利和义务的实体(同义词:公司,子公司)(例如汉莎系统有限公司,汉莎工业解决方案TS有限公司,...)
-[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/blob/master/DB-Inner-Source-License.md
+[db-inner-source-license]: https://github.com/dbsystel/open-source-policies/tree/master/inner-source-license
[eupl]: https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
## 翻译校对