diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index c5331d9dc..11f619d67 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -7,7 +7,7 @@ requirements and recommendations.
## Updating SIG information
-The SIG summary tables on the [README.md](README.md) page and the detailed SIG information on the [`sigs.md`](sigs.md) page are generated from [`workstreams.yml`](workstreams.yml) and [`people.yml`](people.yml).
+The SIG summary tables on the [README.md](README.md) page, the detailed SIG information on the [`sigs.md`](sigs.md) page, and the sponsorship load tables on the [`sig-sponsorship-ledger.md`](sig-sponsorship-ledger.md) page are generated from [`workstreams.yml`](workstreams.yml) and [`people.yml`](people.yml).
The [`community-members.md`](community-members.md) page is also generated from [`people.yml`](people.yml).
To regenerate after updating any `workstreams.yml` or `people.yml` content, run:
diff --git a/Makefile b/Makefile
index 47bd351ec..4c8170270 100644
--- a/Makefile
+++ b/Makefile
@@ -8,6 +8,7 @@ export MSYS_NO_PATHCONV=1
generate:
docker run --rm -v ${PWD}:/repo -w /repo python:3-alpine python ./scripts/update-sig-tables.py --install;
docker run --rm -v ${PWD}:/repo -w /repo python:3-alpine python ./scripts/update-community-members.py --install;
+ docker run --rm -v ${PWD}:/repo -w /repo python:3-alpine python ./scripts/generate-sponsorship-ledger.py --install;
.PHONY: validate-sigs
validate-sigs:
@@ -17,6 +18,7 @@ validate-sigs:
check-generate:
docker run --rm -v ${PWD}:/repo -w /repo python:3-alpine python ./scripts/update-sig-tables.py --install --check;
docker run --rm -v ${PWD}:/repo -w /repo python:3-alpine python ./scripts/update-community-members.py --install --check;
+ docker run --rm -v ${PWD}:/repo -w /repo python:3-alpine python ./scripts/generate-sponsorship-ledger.py --install --check;
.PHONY: markdown-link-check
markdown-link-check:
diff --git a/scripts/generate-sponsorship-ledger.py b/scripts/generate-sponsorship-ledger.py
new file mode 100755
index 000000000..b771f795f
--- /dev/null
+++ b/scripts/generate-sponsorship-ledger.py
@@ -0,0 +1,243 @@
+#!/usr/bin/env python3
+#
+# Copyright The OpenTelemetry Authors
+# SPDX-License-Identifier: Apache-2.0
+import subprocess
+import sys
+from collections import defaultdict
+
+# in the Makefile we use an unmodified python container to run this script, so we need to install pyyaml if it's not already installed
+if (len(sys.argv) > 1) and (sys.argv[1] == "--install"):
+ subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'pyyaml'])
+ sys.argv = sys.argv[1:]
+
+import yaml
+
+# Do not save the file but verify that it is different from the original one.
+run_in_check_mode = (len(sys.argv) > 1) and (sys.argv[1] == "--check")
+
+WORKSTREAMS_FILE = "workstreams.yml"
+METADATA_FILE = "people.yml"
+LEDGER_FILE = "sig-sponsorship-ledger.md"
+
+LEVELS = ["leading", "guiding", "escalating", "tbd"]
+LEVEL_LABEL = {
+ "leading": "Leading",
+ "guiding": "Guiding",
+ "escalating": "Escalating",
+ "tbd": "No level set",
+}
+
+CATEGORY_LABEL = {
+ "specification": "Specification",
+ "implementation": "Implementation",
+ "cross-cutting": "Cross-cutting",
+}
+CATEGORY_ORDER = ["specification", "implementation", "cross-cutting"]
+
+with open(WORKSTREAMS_FILE, encoding="utf-8") as f:
+ workstreams = yaml.safe_load(f)
+
+try:
+ with open(METADATA_FILE, encoding="utf-8") as f:
+ _metadata = yaml.safe_load(f)
+ _people = _metadata.get("people", {})
+except FileNotFoundError:
+ print(
+ f"Warning: {METADATA_FILE} not found — display names will fall back to GitHub handles.",
+ file=sys.stderr,
+ )
+ _people = {}
+
+
+def person_link(username):
+ if not username or username == "tbd":
+ return "tbd"
+ name = _people.get(username, {}).get("name", username)
+ return f"[{name}](https://github.com/{username})"
+
+
+by_id = {w["id"]: w for w in workstreams}
+
+
+def parent_name(ws):
+ parent = ws.get("parent", "none")
+ if not parent or parent == "none":
+ return None
+ parent_ws = by_id.get(parent)
+ return parent_ws["name"] if parent_ws else parent
+
+
+rows_by_category = defaultdict(list)
+gc_load = defaultdict(list)
+tc_load_by_level = defaultdict(lambda: defaultdict(list))
+
+for ws in workstreams:
+ category = ws.get("sigCategory", False)
+ if not category:
+ next
+ collective = ws.get("tcSponsorship") == "collective"
+
+ gc_liaisons = [e["gcLiaison"] for e in ws.get("people", []) if "gcLiaison" in e]
+ tc_sponsors = [e["tcSponsor"] for e in ws.get("people", []) if "tcSponsor" in e]
+
+ for gc in gc_liaisons:
+ if gc and gc != "tbd":
+ gc_load[gc].append(ws["name"])
+
+ if not collective:
+ seen = set()
+ for sponsor in tc_sponsors:
+ username = sponsor.get("username")
+ if not username or username == "tbd" or username in seen:
+ continue
+ seen.add(username)
+ level = sponsor.get("level") or "tbd"
+ if level not in LEVELS:
+ level = "tbd"
+ tc_load_by_level[username][level].append(ws["name"])
+
+ gc_cell = ", ".join(person_link(g) for g in gc_liaisons) if gc_liaisons else "tbd"
+ if collective:
+ tc_cell = "[Technical Committee](./community-members.md#technical-committee)"
+ elif tc_sponsors:
+ parts = []
+ for sponsor in tc_sponsors:
+ link = person_link(sponsor.get("username"))
+ level = sponsor.get("level")
+ if level and level != "tbd":
+ link += f" ({level})"
+ parts.append(link)
+ tc_cell = ", ".join(parts)
+ else:
+ tc_cell = "tbd"
+
+ name_cell = ws["name"]
+ parent = parent_name(ws)
+ if parent:
+ name_cell += f"
under {parent}"
+
+ rows_by_category[category].append((name_cell, gc_cell, tc_cell))
+
+
+def rank_gc(load):
+ items = list(load.items())
+ items.sort(key=lambda kv: (-len(kv[1]), kv[0]))
+ return items
+
+
+def rank_tc(load_by_level):
+ items = []
+ for username, by_level in load_by_level.items():
+ total = sum(len(v) for v in by_level.values())
+ all_sigs = sorted({name for sigs in by_level.values() for name in sigs})
+ items.append((username, by_level, total, all_sigs))
+ items.sort(key=lambda row: (-row[2], row[0]))
+ return items
+
+
+gc_ranked = rank_gc(gc_load)
+tc_ranked = rank_tc(tc_load_by_level)
+
+missing_gc = sum(
+ 1
+ for ws in workstreams
+ if not any(e.get("gcLiaison") not in (None, "tbd") for e in ws.get("people", []) if "gcLiaison" in e)
+)
+missing_tc = 0
+for ws in workstreams:
+ if ws.get("tcSponsorship") == "collective":
+ continue
+ sponsors = [e["tcSponsor"] for e in ws.get("people", []) if "tcSponsor" in e]
+ if not sponsors or all(s.get("username") == "tbd" for s in sponsors):
+ missing_tc += 1
+
+
+def plural(n, noun="SIG"):
+ return f"{n} {noun}" if n == 1 else f"{n} {noun}s"
+
+
+lines = []
+lines.append("# SIG Sponsorship Ledger")
+lines.append("")
+lines.append("")
+lines.append("")
+lines.append(
+ "Every OpenTelemetry SIG with its Governance Committee (GC) liaison and Technical "
+ "Committee (TC) sponsor(s), followed by how many SIGs each GC and TC member is "
+ "currently responsible for. For full per-SIG details (meetings, Slack, repos), see [sigs.md](./sigs.md)."
+)
+lines.append("")
+lines.append(
+ f"**{plural(len(workstreams))}** · **{plural(len(gc_ranked), 'GC member')}** with at least one liaison "
+ f"assignment · **{plural(len(tc_ranked), 'TC member')}** with at least one sponsor assignment · "
+ f"**{plural(missing_gc)}** missing a GC liaison · **{plural(missing_tc)}** missing a TC sponsor"
+)
+lines.append("")
+
+lines.append("## GC liaison load")
+lines.append("")
+lines.append("| GC member | SIGs | List |")
+lines.append("| --- | --- | --- |")
+for who, sigs in gc_ranked:
+ lines.append(f"| {person_link(who)} | {len(sigs)} | {', '.join(sigs)} |")
+lines.append("")
+
+lines.append("## TC sponsor load")
+lines.append("")
+header = ["TC member"] + [LEVEL_LABEL[lvl] for lvl in LEVELS] + ["Total"]
+lines.append("| " + " | ".join(header) + " |")
+lines.append("| " + " | ".join(["---"] * len(header)) + " |")
+for username, by_level, total, _all_sigs in tc_ranked:
+ level_counts = [str(len(by_level.get(lvl, []))) for lvl in LEVELS]
+ lines.append(f"| {person_link(username)} | " + " | ".join(level_counts) + f" | {total} |")
+lines.append("")
+lines.append("")
+lines.append("SIGs sponsored, per TC member
")
+lines.append("")
+for username, by_level, total, all_sigs in tc_ranked:
+ lines.append(f"- **{person_link(username)}** ({plural(total)}): {', '.join(all_sigs)}")
+lines.append("")
+lines.append(" ")
+lines.append("")
+lines.append(
+ '_Sponsorship of "Specification: General + OTel Maintainers Sync" is collective '
+ "across the whole Technical Committee and is not counted toward individual totals above._"
+)
+lines.append("")
+
+lines.append("## SIG directory")
+lines.append("")
+for category in CATEGORY_ORDER:
+ rows = rows_by_category.get(category, [])
+ if not rows:
+ continue
+ lines.append(f"### {CATEGORY_LABEL[category]} ({len(rows)})")
+ lines.append("")
+ lines.append("| SIG | GC liaison | TC sponsor(s) |")
+ lines.append("| --- | --- | --- |")
+ for name_cell, gc_cell, tc_cell in rows:
+ lines.append(f"| {name_cell} | {gc_cell} | {tc_cell} |")
+ lines.append("")
+
+ledger_result = "\n".join(lines).rstrip() + "\n"
+
+
+def file_matches(path, expected):
+ try:
+ with open(path, encoding="utf-8") as f:
+ return f.read() == expected
+ except FileNotFoundError:
+ return False
+
+
+if run_in_check_mode:
+ if file_matches(LEDGER_FILE, ledger_result):
+ sys.exit(0)
+ else:
+ print(f"{LEDGER_FILE} is out of date. Run 'make generate' to update it.", file=sys.stderr)
+ sys.exit(1)
+else:
+ with open(LEDGER_FILE, "w", encoding="utf-8") as f:
+ f.write(ledger_result)
+ print(f"{LEDGER_FILE} has been updated.")
diff --git a/sig-sponsorship-ledger.md b/sig-sponsorship-ledger.md
new file mode 100644
index 000000000..5c7c8bace
--- /dev/null
+++ b/sig-sponsorship-ledger.md
@@ -0,0 +1,129 @@
+# SIG Sponsorship Ledger
+
+
+
+Every OpenTelemetry SIG with its Governance Committee (GC) liaison and Technical Committee (TC) sponsor(s), followed by how many SIGs each GC and TC member is currently responsible for. For full per-SIG details (meetings, Slack, repos), see [sigs.md](./sigs.md).
+
+**60 SIGs** · **9 GC members** with at least one liaison assignment · **9 TC members** with at least one sponsor assignment · **1 SIG** missing a GC liaison · **13 SIGs** missing a TC sponsor
+
+## GC liaison load
+
+| GC member | SIGs | List |
+| --- | --- | --- |
+| [Severin Neumann](https://github.com/svrnm) | 15 | Specification: Entities, C++: SDK, Dart and Flutter: SDK, PHP: SDK, eBPF Instrumentation, Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.), Bengali (bn), Chinese (zh-CN), French (fr-FR), Japanese (ja-JA), Polish (pl-PL), Portuguese (pt-BR), Romanian (ro-RO), Spanish (es-ES), Ukrainian (uk-UA) |
+| [Ted Young](https://github.com/tedsuo) | 9 | Semantic Conventions and Instrumentation: GenAI, OpAMP, Client Instrumentation, Android: SDK + Automatic Instrumentation, Browser, Packaging, Ruby: SDK, Rust: SDK, Network |
+| [Marylia Gutierrez](https://github.com/maryliag) | 7 | Semantic Conventions: CI/CD, GoLang: SDK, JavaScript: SDK, Python: SDK, Community Demo Application, End-User SIG, Contributor Experience |
+| [Trask Stalnaker](https://github.com/trask) | 7 | Specification: Logs, Semantic Conventions: General, Semantic Conventions: RPC, Semantic Conventions: Service and Deployment, Arrow, Java: SDK + Instrumentation, Security |
+| [Juraci Paixão Kröhling](https://github.com/jpkrohling) | 5 | Specification: Sampling, GoLang: Automatic Instrumentation, GoLang: Compile-Time Instrumentation, Kubernetes Operator, Semantic Conventions: Tooling |
+| [Morgan McLean](https://github.com/mtwo) | 5 | Profiling, OpenTelemetry on Mainframes, .NET: Automatic Instrumentation, .NET: SDK, Injector |
+| [Pablo Baeyens](https://github.com/mx-psi) | 5 | Semantic Conventions: System Metrics, Prometheus Interoperability, Policies, Collector, Kubernetes Helm Charts |
+| [Alolita Sharma](https://github.com/alolita) | 3 | Semantic Conventions: K8s, Kotlin: SDK, Swift: SDK |
+| [Austin Parker](https://github.com/austinlparker) | 3 | Functions as a Service (FAAS), Erlang/Elixir: SDK, Developer Experience |
+
+## TC sponsor load
+
+| TC member | Leading | Guiding | Escalating | No level set | Total |
+| --- | --- | --- | --- | --- | --- |
+| [Reiley Yang](https://github.com/reyang) | 1 | 0 | 7 | 1 | 9 |
+| [David Ashpole](https://github.com/dashpole) | 3 | 1 | 4 | 0 | 8 |
+| [Liudmila Molkova](https://github.com/lmolkova) | 3 | 1 | 3 | 0 | 7 |
+| [Carlos Alberto Cortez](https://github.com/carlosalberto) | 0 | 1 | 5 | 0 | 6 |
+| [Jack Berg](https://github.com/jack-berg) | 1 | 1 | 4 | 0 | 6 |
+| [Robert Pająk](https://github.com/pellared) | 0 | 5 | 0 | 0 | 5 |
+| [Tigran Najaryan](https://github.com/tigrannajaryan) | 1 | 2 | 1 | 0 | 4 |
+| [Joshua MacDonald](https://github.com/jmacd) | 1 | 2 | 0 | 0 | 3 |
+| [Armin Ruech](https://github.com/arminru) | 1 | 0 | 1 | 0 | 2 |
+
+
+SIGs sponsored, per TC member
+
+- **[Reiley Yang](https://github.com/reyang)** (9 SIGs): .NET: Automatic Instrumentation, .NET: SDK, C++: SDK, Chinese (zh-CN), Community Demo Application, Python: SDK, Rust: SDK, Security, Swift: SDK
+- **[David Ashpole](https://github.com/dashpole)** (8 SIGs): GoLang: Automatic Instrumentation, GoLang: Compile-Time Instrumentation, GoLang: SDK, Kubernetes Operator, Policies, Prometheus Interoperability, Semantic Conventions: K8s, eBPF Instrumentation
+- **[Liudmila Molkova](https://github.com/lmolkova)** (7 SIGs): Contributor Experience, Developer Experience, Network, Semantic Conventions and Instrumentation: GenAI, Semantic Conventions: General, Semantic Conventions: RPC, Semantic Conventions: Tooling
+- **[Carlos Alberto Cortez](https://github.com/carlosalberto)** (6 SIGs): Browser, Client Instrumentation, Dart and Flutter: SDK, JavaScript: SDK, Kotlin: SDK, Semantic Conventions: CI/CD
+- **[Jack Berg](https://github.com/jack-berg)** (6 SIGs): Android: SDK + Automatic Instrumentation, Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.), End-User SIG, Injector, Java: SDK + Instrumentation, PHP: SDK
+- **[Robert Pająk](https://github.com/pellared)** (5 SIGs): .NET: Automatic Instrumentation, GoLang: SDK, Polish (pl-PL), Semantic Conventions: CI/CD, Specification: Logs
+- **[Tigran Najaryan](https://github.com/tigrannajaryan)** (4 SIGs): OpAMP, Packaging, Profiling, Specification: Entities
+- **[Joshua MacDonald](https://github.com/jmacd)** (3 SIGs): Arrow, Collector, Specification: Sampling
+- **[Armin Ruech](https://github.com/arminru)** (2 SIGs): Ruby: SDK, Semantic Conventions: General
+
+
+
+_Sponsorship of "Specification: General + OTel Maintainers Sync" is collective across the whole Technical Committee and is not counted toward individual totals above._
+
+## SIG directory
+
+### Specification (18)
+
+| SIG | GC liaison | TC sponsor(s) |
+| --- | --- | --- |
+| Specification: General + OTel Maintainers Sync | tbd | [Technical Committee](./community-members.md#technical-committee) |
+| Specification: Sampling
under Specification: General + OTel Maintainers Sync | [Juraci Paixão Kröhling](https://github.com/jpkrohling) | [Joshua MacDonald](https://github.com/jmacd) (guiding) |
+| Specification: Logs
under Specification: General + OTel Maintainers Sync | [Trask Stalnaker](https://github.com/trask) | [Robert Pająk](https://github.com/pellared) (guiding) |
+| Semantic Conventions: General
under Specification: General + OTel Maintainers Sync | [Trask Stalnaker](https://github.com/trask) | [Armin Ruech](https://github.com/arminru) (leading), [Liudmila Molkova](https://github.com/lmolkova) (leading) |
+| Semantic Conventions: System Metrics
under Semantic Conventions: General | [Pablo Baeyens](https://github.com/mx-psi) | tbd (escalating) |
+| Semantic Conventions: K8s
under Semantic Conventions: General | [Alolita Sharma](https://github.com/alolita) | [David Ashpole](https://github.com/dashpole) (leading) |
+| Semantic Conventions and Instrumentation: GenAI
under Semantic Conventions: General | [Ted Young](https://github.com/tedsuo) | [Liudmila Molkova](https://github.com/lmolkova) (leading) |
+| Semantic Conventions: CI/CD
under Semantic Conventions: General | [Marylia Gutierrez](https://github.com/maryliag) | [Carlos Alberto Cortez](https://github.com/carlosalberto) (escalating), [Robert Pająk](https://github.com/pellared) (guiding) |
+| Semantic Conventions: RPC
under Semantic Conventions: General | [Trask Stalnaker](https://github.com/trask) | [Liudmila Molkova](https://github.com/lmolkova) (guiding) |
+| Semantic Conventions: Service and Deployment
under Semantic Conventions: General | [Trask Stalnaker](https://github.com/trask) | tbd (guiding) |
+| Specification: Entities
under Specification: General + OTel Maintainers Sync | [Severin Neumann](https://github.com/svrnm) | [Tigran Najaryan](https://github.com/tigrannajaryan) (guiding) |
+| OpAMP | [Ted Young](https://github.com/tedsuo) | [Tigran Najaryan](https://github.com/tigrannajaryan) (leading) |
+| Prometheus Interoperability | [Pablo Baeyens](https://github.com/mx-psi) | [David Ashpole](https://github.com/dashpole) (leading) |
+| Functions as a Service (FAAS) | [Austin Parker](https://github.com/austinlparker) | tbd |
+| Profiling | [Morgan McLean](https://github.com/mtwo) | [Tigran Najaryan](https://github.com/tigrannajaryan) (guiding) |
+| OpenTelemetry on Mainframes | [Morgan McLean](https://github.com/mtwo) | tbd |
+| Client Instrumentation | [Ted Young](https://github.com/tedsuo) | [Carlos Alberto Cortez](https://github.com/carlosalberto) (escalating) |
+| Policies | [Pablo Baeyens](https://github.com/mx-psi) | [David Ashpole](https://github.com/dashpole) (guiding) |
+
+### Implementation (28)
+
+| SIG | GC liaison | TC sponsor(s) |
+| --- | --- | --- |
+| Android: SDK + Automatic Instrumentation | [Ted Young](https://github.com/tedsuo) | [Jack Berg](https://github.com/jack-berg) (escalating) |
+| Arrow | [Trask Stalnaker](https://github.com/trask) | [Joshua MacDonald](https://github.com/jmacd) (leading) |
+| Browser | [Ted Young](https://github.com/tedsuo) | [Carlos Alberto Cortez](https://github.com/carlosalberto) (escalating) |
+| Collector | [Pablo Baeyens](https://github.com/mx-psi) | [Joshua MacDonald](https://github.com/jmacd) (guiding) |
+| C++: SDK | [Severin Neumann](https://github.com/svrnm) | [Reiley Yang](https://github.com/reyang) (escalating) |
+| .NET: Automatic Instrumentation | [Morgan McLean](https://github.com/mtwo) | [Reiley Yang](https://github.com/reyang) (escalating), [Robert Pająk](https://github.com/pellared) (guiding) |
+| .NET: SDK | [Morgan McLean](https://github.com/mtwo) | [Reiley Yang](https://github.com/reyang) (escalating) |
+| Dart and Flutter: SDK | [Severin Neumann](https://github.com/svrnm) | [Carlos Alberto Cortez](https://github.com/carlosalberto) (escalating) |
+| Erlang/Elixir: SDK | [Austin Parker](https://github.com/austinlparker) | tbd (escalating) |
+| GoLang: SDK | [Marylia Gutierrez](https://github.com/maryliag) | [David Ashpole](https://github.com/dashpole) (leading), [Robert Pająk](https://github.com/pellared) (guiding) |
+| GoLang: Automatic Instrumentation | [Juraci Paixão Kröhling](https://github.com/jpkrohling) | [David Ashpole](https://github.com/dashpole) (escalating) |
+| GoLang: Compile-Time Instrumentation | [Juraci Paixão Kröhling](https://github.com/jpkrohling) | [David Ashpole](https://github.com/dashpole) (escalating) |
+| Injector | [Morgan McLean](https://github.com/mtwo) | [Jack Berg](https://github.com/jack-berg) (guiding) |
+| Java: SDK + Instrumentation | [Trask Stalnaker](https://github.com/trask) | [Jack Berg](https://github.com/jack-berg) (leading) |
+| JavaScript: SDK | [Marylia Gutierrez](https://github.com/maryliag) | [Carlos Alberto Cortez](https://github.com/carlosalberto) (escalating) |
+| Kotlin: SDK | [Alolita Sharma](https://github.com/alolita) | [Carlos Alberto Cortez](https://github.com/carlosalberto) (guiding) |
+| Packaging | [Ted Young](https://github.com/tedsuo) | [Tigran Najaryan](https://github.com/tigrannajaryan) (escalating) |
+| PHP: SDK | [Severin Neumann](https://github.com/svrnm) | [Jack Berg](https://github.com/jack-berg) (escalating) |
+| Python: SDK | [Marylia Gutierrez](https://github.com/maryliag) | [Reiley Yang](https://github.com/reyang) (escalating) |
+| Ruby: SDK | [Ted Young](https://github.com/tedsuo) | [Armin Ruech](https://github.com/arminru) (escalating) |
+| Rust: SDK | [Ted Young](https://github.com/tedsuo) | [Reiley Yang](https://github.com/reyang) (escalating) |
+| Swift: SDK | [Alolita Sharma](https://github.com/alolita) | [Reiley Yang](https://github.com/reyang) (escalating) |
+| Network | [Ted Young](https://github.com/tedsuo) | [Liudmila Molkova](https://github.com/lmolkova) (escalating) |
+| eBPF Instrumentation | [Severin Neumann](https://github.com/svrnm) | [David Ashpole](https://github.com/dashpole) (escalating) |
+| Kubernetes Operator | [Juraci Paixão Kröhling](https://github.com/jpkrohling) | [David Ashpole](https://github.com/dashpole) (escalating) |
+| Kubernetes Helm Charts | [Pablo Baeyens](https://github.com/mx-psi) | tbd |
+| Community Demo Application | [Marylia Gutierrez](https://github.com/maryliag) | [Reiley Yang](https://github.com/reyang) (escalating) |
+| Semantic Conventions: Tooling
under Semantic Conventions: General | [Juraci Paixão Kröhling](https://github.com/jpkrohling) | [Liudmila Molkova](https://github.com/lmolkova) (leading) |
+
+### Cross-cutting (14)
+
+| SIG | GC liaison | TC sponsor(s) |
+| --- | --- | --- |
+| Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | [Jack Berg](https://github.com/jack-berg) (escalating) |
+| End-User SIG | [Marylia Gutierrez](https://github.com/maryliag) | [Jack Berg](https://github.com/jack-berg) (escalating) |
+| Security | [Trask Stalnaker](https://github.com/trask) | [Reiley Yang](https://github.com/reyang) (leading) |
+| Contributor Experience | [Marylia Gutierrez](https://github.com/maryliag) | [Liudmila Molkova](https://github.com/lmolkova) (escalating) |
+| Developer Experience | [Austin Parker](https://github.com/austinlparker) | [Liudmila Molkova](https://github.com/lmolkova) (escalating) |
+| Bengali (bn)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | tbd |
+| Chinese (zh-CN)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | [Reiley Yang](https://github.com/reyang) |
+| French (fr-FR)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | tbd |
+| Japanese (ja-JA)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | tbd |
+| Polish (pl-PL)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | [Robert Pająk](https://github.com/pellared) (guiding) |
+| Portuguese (pt-BR)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | tbd |
+| Romanian (ro-RO)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | tbd |
+| Spanish (es-ES)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | tbd |
+| Ukrainian (uk-UA)
under Communications (Website, [Documentation](https://opentelemetry.io/docs/), etc.) | [Severin Neumann](https://github.com/svrnm) | tbd |