feat!: own the module path and drop the Silo Go SDK replacement - #2
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Declares
module github.com/pgsty/silo-pkg/v3instead of continuing to claim upstream'sgithub.com/minio/pkg/v3, and drops thepgsty/silo-goreplacement in favour of upstream minio-go.Why the path change
Keeping upstream's path made this fork selectable only through a
replacedirective, and Go does not inherit those from dependency modules. Three concrete costs showed up while preparing the next Silo release:requireline had to name an upstream version this source no longer matches —ParseConfigStrictfirst appears upstream in v3.11.0 andResource.IsBareARNexists in no upstream version at all;pgsty/mcneeded 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 forcedsilo-console's deliberately low floor upward.The upstream path has little to offer in return here:
minio/pkgis a 33-star internal library, and this module's consumers aresilo,silo-console, andmc. The Silo Go SDK keeps upstream'sgithub.com/minio/minio-go/v7path, where drop-in compatibility is worth having.Why drop the Silo Go SDK replacement
pgsty/silo-gocarries 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.0predates 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 requiresv7.3.1-0.20260828014306-0e78d3f18efeuntil 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 .cleango test ./...— 23 packages passmc(194 files),silo-console(36 files), andsilo(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.