istio/istio
By the numbers
Data collected on 2026-04-30 against master at commit 9c526047be.
A quantitative snapshot of the istio/istio repository: what it weighs, how active it is, where the churn is, and how much code review is bot-mediated. Aggregate stats only — see Maintainers for ownership mapping.
Size
| Metric | Value |
|---|---|
| Total commits in history | 26,160 |
| Total Go files | 1,962 |
| Of which test files | 703 (~36%) |
| Total lines of Go (incl. tests) | 569,071 |
| Test-file lines | 274,949 (~48% of Go) |
| YAML files | 2,963 (41,829 lines) |
| Markdown files | 99 (8,822 lines) |
| Shell scripts | 65 (5,964 lines) |
Release-note YAMLs (releasenotes/notes/) |
~1,000+ |
xychart-beta horizontal
title "Lines of code by file type"
x-axis ["Go", "Go (tests)", "YAML", "Markdown", "Shell"]
y-axis "Lines" 0 --> 600000
bar [569071, 274949, 41829, 8822, 5964]Top-level directory sizes (source code only, excluding .git):
| Path | Disk size |
|---|---|
pilot/ |
11 MB |
pkg/ |
11 MB |
tests/ |
5.7 MB |
operator/ |
4.0 MB |
manifests/ |
3.0 MB |
istioctl/ |
2.3 MB |
samples/ |
2.3 MB |
cni/ |
1.4 MB |
security/ |
1.3 MB |
tools/ |
1.3 MB |
Activity
Commits per month over the last 12 months:
| Month | Commits |
|---|---|
| 2025-05 | 110 |
| 2025-06 | 129 |
| 2025-07 | 117 |
| 2025-08 | 107 |
| 2025-09 | 115 |
| 2025-10 | 106 |
| 2025-11 | 98 |
| 2025-12 | 60 |
| 2026-01 | 96 |
| 2026-02 | 85 |
| 2026-03 | 125 |
| 2026-04 | 128 |
Trailing windows:
- 90-day commits: 339
- 365-day commits: 1,276
- 365-day diff: 6,809 files touched, +178,948 / −86,177 lines
- Unique committers in last 180 days: 106
xychart-beta horizontal
title "Commits per calendar year"
x-axis ["2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025"]
y-axis "Commits" 0 --> 5000
bar [2811, 3465, 4314, 3624, 2686, 2355, 2539, 2340, 1459]The shape is a classic OSS curve: a steep ramp through the 1.x foundational releases in 2018–2019 (peaking near 4,300 commits/year), gradual decline as the codebase stabilized, and a renewed plateau around the 2,000–2,500 commits/year mark since 2022 driven by the Ambient mode push.
Churn hotspots (last 90 days)
The five most-changed non-generated, non-test Go files:
| File | Commits |
|---|---|
pilot/pkg/config/kube/gateway/conversion.go |
11 |
pilot/pkg/model/service.go |
8 |
pilot/pkg/config/kube/agentgateway/agentgateway_controller.go |
8 |
pilot/pkg/serviceregistry/serviceentry/conversion.go |
6 |
pilot/pkg/serviceregistry/kube/controller/ambient/services.go |
6 |
The most-touched files overall are bumps and generated code:
| File | Commits |
|---|---|
istio.deps |
69 (ztunnel/proxy SHA bumps; the Automator is the largest committer) |
go.sum |
35 |
go.mod |
35 |
common/.commonfiles.sha |
15 |
common/scripts/setup_env.sh |
13 |
Makefile.core.mk |
10 |
Bot-attributed activity
Istio uses several automated committers. They account for a large fraction of commits, mostly via dependency bumps and code generation:
| Author | Commits (all-time) |
|---|---|
| Istio Automation | 3,808 (the dominant pattern: Automator: update <something>@master) |
| istio-bot | 201 |
| dependabot[bot] | 38 |
| imgbot[bot] | 1 |
In commit trailers (the Co-authored-by line that conventional bot signatures use), the count is much lower — only 39 commits across all of history have a Co-authored-by: ...[bot] trailer. That suggests the automation tools commit directly under the Istio Automation author rather than as co-authors. The total of bot-authored commits is therefore approximately:
~4,050 / 26,160 ≈ 15.5%This is a lower bound on machine-assisted work — inline AI coding tools like Copilot leave no trace in git history, and the GitHub PR template in .github/copilot-instructions.md confirms Copilot is officially configured for this repo.
Complexity
The largest non-generated source files (lines):
| File | Lines |
|---|---|
pkg/config/validation/validation_test.go |
8,559 |
tests/integration/pilot/common/routing.go |
5,173 |
pilot/pkg/networking/core/cluster_test.go |
5,005 |
pilot/pkg/networking/core/gateway_test.go |
4,893 |
tests/integration/ambient/baseline_test.go |
3,993 |
pilot/pkg/model/sidecar_test.go |
3,987 |
pilot/pkg/networking/core/cluster_builder_test.go |
3,945 |
pilot/pkg/model/push_context_test.go |
3,841 |
Generated giants (skipped above): operator/pkg/apis/values_types.pb.go at 6,369 lines and the Envoy filter type registry at pkg/config/xds/filter_types.gen.go.
The 9 of the 10 longest files are tests — the pilot/pkg/networking/core/ test suite alone exceeds 17,000 lines across cluster, gateway, listener, and HTTP route tests. This is consistent with a project where translation correctness is enforced primarily through golden-file and table-driven tests rather than runtime assertions.
TODOs and FIXMEs
Total TODO / FIXME / HACK comments across *.go: 1,266. That is roughly one comment per 450 lines of Go and one per 1.5 source files. Some of these are decade-old, see fun-facts.md.
Modules
go.mod declares the single module istio.io/istio and pins Go 1.25.7. Direct require blocks list ~120 dependencies; the module imports the rest of the Istio platform via istio.io/api and istio.io/client-go, both of which are tagged in lockstep with this repo (currently 1.30.0-alpha.1).
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.