Open-Source Wikis

/

Istio

/

By the numbers

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.

By the numbers – Istio wiki | Factory