Skip to content

feat!: own the module path and drop the Silo Go SDK replacement - #2

Merged
Vonng merged 1 commit into
mainfrom
migrate/own-module-path
Aug 30, 2026
Merged

feat!: own the module path and drop the Silo Go SDK replacement#2
Vonng merged 1 commit into
mainfrom
migrate/own-module-path

Conversation

@Vonng

@Vonng Vonng commented Aug 30, 2026

Copy link
Copy Markdown
Member

Declares module github.com/pgsty/silo-pkg/v3 instead of continuing to claim upstream's github.com/minio/pkg/v3, and drops the pgsty/silo-go replacement in favour of upstream minio-go.

Why the path change

Keeping upstream's path made this fork selectable only through a replace directive, and Go does not inherit those from dependency modules. Three concrete costs showed up while preparing the next Silo release:

  • every consumer had to repeat the redirect, and one that forgot built against upstream silently;
  • the require line had to name an upstream version this source no longer matches — ParseConfigStrict first appears upstream in v3.11.0 and Resource.IsBareARN exists in no upstream version at all;
  • pgsty/mc needed a compile-time sentinel to turn that silent downgrade into a build failure, and raising its floor to make the metadata honest propagated through the graph and forced silo-console's deliberately low floor upward.

The upstream path has little to offer in return here: minio/pkg is a 33-star internal library, and this module's consumers are silo, silo-console, and mc. The Silo Go SDK keeps upstream's github.com/minio/minio-go/v7 path, where drop-in compatibility is worth having.

Why drop the Silo Go SDK replacement

pgsty/silo-go carries no functional divergence from upstream. Its only unique change, Return CopyObject checksums in UploadInfo, was merged upstream on 2026-08-24; everything else in the fork is a version string, a logo, a README, and a lint-tool block.

Upstream's newest tag v7.3.0 predates that merge by 14 commits, including #2290 fix: race on shared checksum hasher in parallel multipart upload, so pinning the tag would be a regression. This requires v7.3.1-0.20260828014306-0e78d3f18efe until upstream tags again.

Consumer impact

Consumers still on the old arrangement keep building against the versions they already pinned. To move: drop the replace, require this path, rewrite the imports.

Verification

  • go build ./..., go vet ./..., go mod tidy -diff, gofmt -l . clean
  • go test ./... — 23 packages pass
  • The downstream migration was validated end to end against this branch before it was opened: mc (194 files), silo-console (36 files), and silo (181 files) all build, vet, and pass their suites; silo's rebrand guard passes with a compatibility-baseline diff of exactly 19 deleted import entries and no change to env, metrics, headers, routes, policy values, or exported symbols.

Declare `module github.com/pgsty/silo-pkg/v3` instead of continuing to claim
upstream's `github.com/minio/pkg/v3`.

Keeping upstream's path made the fork selectable only through a `replace`
directive, and Go does not inherit those from dependency modules. Every
consumer had to repeat the redirect, a consumer that forgot silently built
against upstream, and the `require` line had to name an upstream version this
source no longer matches -- v3.12 policy APIs such as ParseConfigStrict and
Resource.IsBareARN do not exist there. Owning the path removes the redirect and
makes the requirement honest.

The upstream import path has little to offer here in return: `minio/pkg` is a
33-star internal library, and this module's consumers are silo, silo-console,
and mc. The Silo Go SDK keeps upstream's `github.com/minio/minio-go/v7` path,
where drop-in compatibility is worth having.

Also drop the `github.com/pgsty/silo-go/v7` replacement and require upstream
minio-go directly. The fork carries no functional divergence: its only unique
change, "Return CopyObject checksums in UploadInfo" (minio/minio-go#2295), was
merged upstream on 2026-08-24, and everything else is a version string, a logo,
and README text. Upstream's newest tag v7.3.0 predates that merge by 14 commits,
including a data race fix in parallel multipart checksum hashing, so this
requires a pseudo-version until upstream tags again.

Signed-off-by: Feng Ruohang <rh@vonng.com>
@Vonng
Vonng merged commit 215f116 into main Aug 30, 2026
4 checks passed
@Vonng
Vonng deleted the migrate/own-module-path branch September 1, 2026 09:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant