containerd/containerd
By the numbers
Data collected on 2026-04-30 from the main branch at commit 2976f38c.
Size
- 1357 Go and proto source files outside
vendor/. - 307 of those are test files (
_test.go) — roughly a 1:3.4 test-to-code file ratio. - ~16,701 commits in the repository's history (since the initial commit on 2015-11-05).
- 129+ built-in plugins registered via
cmd/containerd/builtins/builtins.goand the snapshotter packages.
Languages
xychart-beta horizontal
title "Source files by language (non-vendored)"
x-axis "Files" 0 --> 1400
y-axis [Go, "Protobuf (.proto)", "Bash / shell", "Markdown"]
bar [1290, 60, 35, 80](Counts are approximate; Markdown excludes the releases/ notes directory but includes docs/ and the README/CONTRIBUTING/etc. at the root.)
Activity
- Top committers (all time, by commit count): Derek McGowan, Michael Crosby, Phil Estes, Lantao Liu, Maksym Pavlenko, Akihiro Suda, Wei Fu, Sebastiaan van Stijn, Stephen J Day, Mike Brown, Kenfe-Mickaël Laventure, Samuel Karp, Kazuyoshi Kato.
- Bot-attributed commits (lower bound): ~444 commits authored by
dependabot[bot]. This counts only commits whose author is the bot itself; PRs that mentionCo-authored-by: ...[bot]are not separately tallied here. - The daemon's
cmd/containerd/builtinsand the snapshotter packages are touched in nearly every release because new plugins land or are gated on platforms.
Repository structure
| Top-level directory | Files (Go/proto, non-test) |
|---|---|
core/ |
Largest source area; contains content, images, runtime, snapshots, sandbox, transfer interfaces and built-ins |
plugins/ |
Plugin registrations and platform-specific implementations |
internal/cri/ |
The CRI plugin — by itself ~150 Go files |
pkg/ |
Reusable helper packages (oci, namespaces, archive, ioutil, sys, …) |
client/ |
Embeddable client (~30 files) |
cmd/ |
main packages for the binaries |
api/ |
Protobuf definitions for all gRPC/ttrpc services |
Build & CI footprint
- 19 GitHub Actions workflows under
.github/workflows/(CI, nightly, Windows, fuzz, code-scan, release, etc.). - The Makefile defines 50+ targets;
make cirunscheck binaries check-protos coverage. - Lint config:
.golangci.yml(~3 KB).
Test surface
~307_test.gofiles. Tests segment into three buckets:- Plain unit tests (
make test) - Tests requiring root (
make root-test, gated bytestutil.RequiresRoot) - End-to-end tests in
integration/and CRI integration inscript/test/cri-integration.sh
- Plain unit tests (
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.