Open-Source Wikis

/

MinIO

/

Lore

minio/minio

Lore

This is the timeline of how MinIO got from a 2014 prototype to the codebase you see today. Dates are derived from git history (git log, tag dates, directory creation dates).

Eras

Genesis era (Oct 2014 – early 2016)

The first commit is 30 Oct 2014 ("Initial commit"). The project was an early Go object-storage prototype well before the minio/minio brand became a thing on the Go bucket scene. 2015 was the busiest year in the project's history with 1,986 commits, followed by 1,504 in 2016. The original layout included a contrib/linenoise/ vendored copy (an interactive shell helper) — a relic of the prototype days.

Most of the abstractions a contributor still touches today — ObjectLayer, the storage interface, the format file, S3 handlers — were laid down in this era and have been refactored ever since.

S3 fidelity era (2016 – 2018)

By 2016 the focus had shifted to becoming a credible drop-in S3 replacement. This is when bucket policy, lifecycle, versioning hooks, and the broad set of S3 verbs landed. 806 commits in 2017 and 836 in 2018 mark a more mature, slower-growing phase.

Distributed and enterprise era (2019 – 2022)

Activity accelerated again with 1,375 commits in 2020 and 1,405 in 2021 as the team built out distributed features:

  • Erasure server pools (cmd/erasure-server-pool.go): the abstraction that lets a single deployment grow by adding new pools.
  • Bucket replication (cmd/bucket-replication.go): asynchronous, per-bucket replication to a peer S3 endpoint.
  • Site replication (cmd/site-replication.go): cluster-to-cluster sync of buckets, IAM, and lifecycle.
  • ILM and tiering (cmd/bucket-lifecycle.go, cmd/tier.go, cmd/warm-backend-*.go): expiration, transition, and warm tiers (Azure, GCS, S3, MinIO).
  • KMS abstraction (internal/kms/, internal/crypto/): SSE-S3, SSE-KMS, SSE-C, with KES integration.
  • Decommission and rebalance (cmd/erasure-server-pool-decom.go, cmd/erasure-server-pool-rebalance.go).
  • xl.meta v2 (cmd/xl-storage-format-v2.go): a single MessagePack-encoded file replacing the older split JSON metadata.

v3 metrics and console era (2023 – 2024)

2023 (1,141 commits) and 2024 (984 commits) brought the v3 metrics endpoints (cmd/metrics-v3*.go — 23 distinct collectors), broader admin API surface (cmd/admin-handlers-*.go), continued replication hardening, and tighter integration with the embedded MinIO Console UI from github.com/minio/console.

Maintenance wind-down (2025 – 2026)

2025 commit volume dropped sharply (201 commits). The README at README.md now states explicitly:

THIS REPOSITORY IS NO LONGER MAINTAINED.

It directs new users to AIStor (free) or AIStor Enterprise. The latest tag is RELEASE.2025-10-15T17-29-55Z (Oct 2025); the latest commit on master is from Feb 2026, mostly README clarifications.

Longest-standing features

A few subsystems have been continuously evolving since the early years:

  • ObjectLayer — the interface in cmd/object-api-interface.go has been the spine of the server since the first releases. Almost every refactor (server pools, sets, healing, tiering) preserves its shape.
  • Format file (cmd/format-erasure.go, cmd/format-meta.go) — the on-disk format for "which drive belongs to which set" has been versioned and migrated multiple times but is fundamentally the same idea as on day one.
  • HighwayHash bitrotgithub.com/minio/highwayhash is used today exactly as it was when introduced for whole-file checksums.

Major rewrites

  • xl.meta v1 → v2 (around 2020). The legacy split format (cmd/xl-storage-format-v1.go) was replaced by a single MessagePack object (cmd/xl-storage-format-v2.go), with cmd/xl-storage-format-v2-legacy.go carrying the migration code.
  • Storage REST → Grid. The legacy storage REST RPC (cmd/storage-rest-*.go) is supplemented by internal/grid/, a binary multiplex protocol for low-latency intra-cluster traffic. Both still ship.
  • Metrics v2 → v3. cmd/metrics-v2.go (one giant file) was reorganised into ~23 focused collectors under cmd/metrics-v3-*.go for the v3 endpoint family.
  • IAM backend pluggability. The IAM store grew from a single in-memory model to swappable backends in cmd/iam-object-store.go and cmd/iam-etcd-store.go.
  • Embedded console. The standalone mc plus a separate UI repo were unified into github.com/minio/console, mounted directly by the server (cmd/api-router.go).

Deprecated features

Things that were once front-and-centre but are now legacy or removed:

  • Federationdocs/federation/ still exists but is documented as deprecated; the recommended path is site replication.
  • MinIO Gateway — older releases let MinIO front a remote S3, NAS, Azure, GCS, or HDFS backend. The gateway code was removed before the current master. Tier backends (cmd/warm-backend-*.go) keep a more focused subset of that idea for ILM transitions only.
  • Linenoise contrib — an early vendored interactive shell library, gone for years.
  • Deprecated server flags. Several flags in cmd/server-main.go (e.g. --listeners, --shutdown-timeout) are marked Hidden: true and explicitly noted as deprecated.

Growth trajectory

  • 2014: project starts (302 commits in two months).
  • 2015–2016: peak feature development (3,490 combined commits).
  • 2017–2019: maturity, ~800/year, S3 fidelity work.
  • 2020–2022: distribution + enterprise features, ~1,300/year.
  • 2023–2024: metrics v3, console, replication polish, ~1,000/year.
  • 2025+: maintenance only; README signals retirement of the community repo.

The codebase grew from a few thousand lines in 2014 to ~350K lines of Go today across 902 source files. The project has had hundreds of contributors over its lifetime; the core has been driven for years by Harshavardhana (the author of >5,600 commits), Anis Elleuch, Klaus Post, Frederick Kautz, and Aditya Manthramurthy.

For background on specific architectural decisions see Background.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Lore – MinIO wiki | Factory