From 5a9c738755819f49247c2654484d131d7af550e8 Mon Sep 17 00:00:00 2001 From: Alex Boten <223565+codeboten@users.noreply.github.com> Date: Fri, 2 Oct 2026 08:37:05 -0700 Subject: [PATCH 1/4] introduce a sig ledger to summarize tc/gc involvement This is all based off of the data in workstreams, provides an easier to parse visualization of the workload across gc/tc members. Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com> --- CONTRIBUTING.md | 2 +- Makefile | 2 + scripts/generate-sponsorship-ledger.py | 238 +++++++++++++++++++++++++ sig-sponsorship-ledger.md | 127 +++++++++++++ 4 files changed, 368 insertions(+), 1 deletion(-) create mode 100755 scripts/generate-sponsorship-ledger.py create mode 100644 sig-sponsorship-ledger.md 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..175a836d0 --- /dev/null +++ b/scripts/generate-sponsorship-ledger.py @@ -0,0 +1,238 @@ +#!/usr/bin/env python3 +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", "other") + 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..b6ddd1a29 --- /dev/null +++ b/sig-sponsorship-ledger.md @@ -0,0 +1,127 @@ +# 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 · **8 TC members** with at least one sponsor assignment · **1 SIG** missing a GC liaison · **14 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 | 2 | 3 | 0 | 8 | +| [Carlos Alberto Cortez](https://github.com/carlosalberto) | 0 | 1 | 5 | 0 | 6 | +| [Jack Berg](https://github.com/jack-berg) | 1 | 1 | 4 | 0 | 6 | +| [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)** (8 SIGs): Contributor Experience, Developer Experience, Network, Semantic Conventions and Instrumentation: GenAI, Semantic Conventions: General, Semantic Conventions: RPC, Semantic Conventions: Tooling, Specification: Logs +- **[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 +- **[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) | [Liudmila Molkova](https://github.com/lmolkova) (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) | +| 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) | +| .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) | +| 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) | tbd | +| 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 | From 86fb30c79e35a00317ae279e08285f577e4fe304 Mon Sep 17 00:00:00 2001 From: Alex Boten <223565+codeboten@users.noreply.github.com> Date: Wed, 7 Oct 2026 12:50:39 -0700 Subject: [PATCH 2/4] add license Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com> --- scripts/generate-sponsorship-ledger.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/generate-sponsorship-ledger.py b/scripts/generate-sponsorship-ledger.py index 175a836d0..dbc961cc5 100755 --- a/scripts/generate-sponsorship-ledger.py +++ b/scripts/generate-sponsorship-ledger.py @@ -1,4 +1,7 @@ #!/usr/bin/env python3 +# +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 import subprocess import sys from collections import defaultdict From 7dd19fa960c2b7fbcd0f4a3a22ff4a9687b0f539 Mon Sep 17 00:00:00 2001 From: Alex Boten <223565+codeboten@users.noreply.github.com> Date: Wed, 7 Oct 2026 13:02:13 -0700 Subject: [PATCH 3/4] ignore missing sig category Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com> --- scripts/generate-sponsorship-ledger.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/generate-sponsorship-ledger.py b/scripts/generate-sponsorship-ledger.py index dbc961cc5..b771f795f 100755 --- a/scripts/generate-sponsorship-ledger.py +++ b/scripts/generate-sponsorship-ledger.py @@ -73,7 +73,9 @@ def parent_name(ws): tc_load_by_level = defaultdict(lambda: defaultdict(list)) for ws in workstreams: - category = ws.get("sigCategory", "other") + 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] From dffa9f829550815bc3d0facb2093ea5b9fe8d700 Mon Sep 17 00:00:00 2001 From: Alex Boten <223565+codeboten@users.noreply.github.com> Date: Thu, 8 Oct 2026 09:32:06 -0700 Subject: [PATCH 4/4] apply latest changes Signed-off-by: Alex Boten <223565+codeboten@users.noreply.github.com> --- sig-sponsorship-ledger.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/sig-sponsorship-ledger.md b/sig-sponsorship-ledger.md index b6ddd1a29..5c7c8bace 100644 --- a/sig-sponsorship-ledger.md +++ b/sig-sponsorship-ledger.md @@ -4,7 +4,7 @@ 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 · **8 TC members** with at least one sponsor assignment · **1 SIG** missing a GC liaison · **14 SIGs** missing a TC sponsor +**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 @@ -26,9 +26,10 @@ Every OpenTelemetry SIG with its Governance Committee (GC) liaison and Technical | --- | --- | --- | --- | --- | --- | | [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 | 2 | 3 | 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 | @@ -38,9 +39,10 @@ Every OpenTelemetry SIG with its Governance Committee (GC) liaison and Technical - **[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)** (8 SIGs): Contributor Experience, Developer Experience, Network, Semantic Conventions and Instrumentation: GenAI, Semantic Conventions: General, Semantic Conventions: RPC, Semantic Conventions: Tooling, Specification: Logs +- **[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 @@ -57,12 +59,12 @@ _Sponsorship of "Specification: General + OTel Maintainers Sync" is collective a | --- | --- | --- | | 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) | [Liudmila Molkova](https://github.com/lmolkova) (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) | +| 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) | @@ -83,11 +85,11 @@ _Sponsorship of "Specification: General + OTel Maintainers Sync" is collective a | 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) | +| .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) | +| 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) | @@ -120,7 +122,7 @@ _Sponsorship of "Specification: General + OTel Maintainers Sync" is collective a | 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) | 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 |