minio/minio
By the numbers
Data collected on 2026-04-30, against master at commit 7aac2a2c5b7c882e68c1ce017d8256be2feea27f.
Size
The repo is overwhelmingly Go, with a heavy supporting cast of shell harnesses and operational docs.
xychart-beta horizontal
title "Lines of code by language (rough)"
x-axis ["Go", "JSON", "Markdown", "Shell", "YAML"]
y-axis "Lines" 0 --> 360000
bar [350006, 14605, 11931, 7757, 5087]| Language | Files | Approx. lines |
|---|---|---|
| Go | 902 | 350,006 |
| JSON | 23 | 14,605 |
| Markdown | 86 | 11,931 |
| Shell | 53 | 7,757 |
| YAML | 39 | 5,087 |
| .yml | 17 | 649 |
Splitting Go further:
| Bucket | Approx. lines |
|---|---|
Production code (cmd/, internal/, excluding _test.go and _gen.go) |
205,151 |
Test code (*_test.go) |
96,813 |
cmd/ is 20 MB across 470 files; internal/ is 4 MB across 455 files; docs/ is 11 MB across 218 files (mostly shell harnesses and tutorial markdown).
Activity
- Total commits: 12,565 across the project's lifetime (since the initial commit on 30 Oct 2014).
- Tags / releases: 523 historical release tags. The most recent are
RELEASE.2025-10-15T17-29-55ZandRELEASE.2025-09-07T16-13-09Z. The latest commit onmasteris dated 12 Feb 2026. - Yearly commit volume:
| Year | Commits |
|---|---|
| 2014 | 302 |
| 2015 | 1,986 |
| 2016 | 1,504 |
| 2017 | 806 |
| 2018 | 836 |
| 2019 | 830 |
| 2020 | 1,375 |
| 2021 | 1,405 |
| 2022 | 1,193 |
| 2023 | 1,141 |
| 2024 | 984 |
| 2025 | 201 |
| 2026 | 2 |
The slowdown in 2025 lines up with the public note in README.md that the repository is no longer actively maintained.
Bot-attributed commits
A scan of Co-authored-by: trailers across all commits returned ~18 bot-attributed commits — a tiny fraction of the 12,565 total. No bot accounts appear in the top contributors. AI-assisted work performed via inline tools (Copilot etc.) leaves no git trace, so this is a strict lower bound. MinIO has historically been written by a small, hands-on core team.
Complexity hotspots
The biggest production source files in the repo, by raw byte count:
| File | Bytes (≈) |
|---|---|
cmd/site-replication.go |
189,199 |
cmd/metrics-v2.go |
136,834 |
cmd/object-handlers.go |
123,497 |
cmd/bucket-replication.go |
121,043 |
cmd/admin-handlers.go |
102,056 |
cmd/api-errors.go |
95,264 |
cmd/xl-storage.go |
93,937 |
cmd/admin-handlers-users.go |
92,766 |
cmd/erasure-server-pool.go |
91,306 |
cmd/iam-store.go |
89,181 |
These ten files cover most of the surface a contributor will touch when working on replication, S3 verbs, the admin API, drives, and IAM. Each of them is also reflected in the Cleanup opportunities page.
The top auto-generated files (excluded above) are the MessagePack *_gen.go and *_gen_test.go siblings, generated by the tinylib/msgp go:generate directive in main.go.
TODO/FIXME/HACK
A grep for TODO, FIXME, or HACK in cmd/ and internal/ Go sources returns roughly 83 matches. That is small for a 200K-line codebase. See Cleanup opportunities for the highlights.
Test-to-code ratio
*_test.go lines / production lines ≈ 96,813 / 205,151 ≈ 0.47. About 1 line of test for every 2 lines of production code, which is in line with mature Go infrastructure projects. Many of MinIO's "tests" are actually shell-driven integration scripts in docs/ and buildscripts/ that the tables above don't include.
Dependencies
go.mod has ~80 direct dependencies and dozens more indirect dependencies. A hand-picked sample:
| Layer | Library |
|---|---|
| Erasure coding | github.com/klauspost/reedsolomon |
| Compression | github.com/klauspost/compress, pgzip, pierrec/lz4/v4, pbzip2 |
| Hashing / encryption | github.com/minio/highwayhash, github.com/minio/sio, secure-io/sio-go, golang.org/x/crypto |
| KMS | github.com/minio/kms-go/{kes,kms} |
| HTTP routing | github.com/minio/mux, github.com/rs/cors |
| MessagePack codegen | github.com/tinylib/msgp, github.com/philhofer/fwd |
| Object storage SDKs | github.com/minio/minio-go/v7, cloud.google.com/go/storage, github.com/Azure/azure-sdk-for-go/sdk/storage/azblob |
| Identity | github.com/coreos/go-oidc/v3, github.com/go-ldap/ldap/v3, github.com/lestrrat-go/jwx/v2, github.com/golang-jwt/jwt/v4 |
| Notification targets | github.com/IBM/sarama (Kafka), nats.go, eclipse/paho.mqtt.golang, rabbitmq/amqp091-go, lib/pq, go-sql-driver/mysql, gomodule/redigo, nsqio/go-nsq, elastic/go-elasticsearch/v7 |
| Console UI | github.com/minio/console |
| FTP / SFTP | goftp.io/server/v2, pkg/sftp |
| Coordination | go.etcd.io/etcd/client/v3 |
| Metrics | github.com/prometheus/client_golang |
See reference/dependencies for an annotated list.
Releases
523 release tags shipped between 2014 and 2025 with the RELEASE.<UTC-timestamp>Z format produced by buildscripts/gen-ldflags.go. The release cadence has historically been 1–2 a month, sometimes more during heavy feature development.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.