Skip to content

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:

GOOS=linux GOARCH=amd64 goda graph "my_tag_1=1(my_tag_2=1(.:all))"
  • . — 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:

GOOS=linux GOARCH=amd64 goda graph "reach(my_tag_1=1(my_tag_2=1(.:all)), ./target/package)"

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:

Complementary tools

  • go list -f '{{ join .Deps "\n" }}'what is in the binary.
  • godawhy (import paths + reach()).
  • systems/go-size-analyzerhow much each dep costs in bytes.

The three together turn "we accidentally ship Kubernetes" into an actionable one-edge fix.

Seen in

Last updated · 200 distilled / 1,178 read