SYSTEM Cited by 1 source
goda¶
goda (github.com/loov/goda) is
an OSS Go-dependency-graph tool. Where go list tells you which
packages a binary includes, goda tells you why — it renders
the transitive import graph and supports a reach(...) function
that lists all paths from the main package to a target package.
Invocation¶
Takes GOOS, GOARCH, and build tags like the standard Go
toolchain:
.— start from the current package.:all— include every direct + indirect dependency.my_tag_1=1(...)— same build-tag syntax as the compiler.
The reach function restricts the graph to paths reaching a
specific target:
This is the decisive tool for pinpointing one-function-pulls-a- dep-stack cases (patterns/single-function-forced-package-split).
Canonical application: Datadog Agent¶
Used in the 2026-02-18 Datadog binary-size post to trace:
- 526
k8s.io/*packages / 36 MiB of accidental Kubernetes inclusion in thetrace-agentbinary back to one function in one package (PR #32174). - 245 MiB
amd64-only regression back tocontainerd/plugin/plugin_go18.go's import of the stdlibpluginpackage (concepts/go-plugin-dynamic-linking-implication).
Complementary tools¶
go list -f '{{ join .Deps "\n" }}'— what is in the binary.- goda — why (import paths +
reach()). - systems/go-size-analyzer — how much each dep costs in bytes.
The three together turn "we accidentally ship Kubernetes" into an actionable one-edge fix.
Seen in¶
- sources/2026-02-18-datadog-how-we-reduced-agent-go-binaries-up-to-77-percent — primary tool used to localise two pathological imports.