Skip to content

rebrand: adopt Silo client identity, close SUBNET paths, add brand gate - #2

Merged
Vonng merged 7 commits into
mainfrom
rebrand/silo-client
Aug 6, 2026
Merged

rebrand: adopt Silo client identity, close SUBNET paths, add brand gate#2
Vonng merged 7 commits into
mainfrom
rebrand/silo-client

Conversation

@Vonng

@Vonng Vonng commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

Completes the mc-side rebranding per the Silo rebranding manual (§8.1 mc rules): the CLI now identifies as the Silo client, every outbound path to MinIO SUBNET is closed, commercial upsell is removed, and protocol/compatibility surfaces are untouched. Four commits, reviewable independently:

  1. fix: disable SUBNET connectivity and licensing upsell pathssubnetReqDo returns a stable error before building any HTTP request (nothing can reach subnet.min.io); license register / support upload exit with a stable error; license update keeps the local license-file path and refuses only the SUBNET renew form; license unregister/info operate on local state only; support diag/perf/profile/inspect always run in airgap mode and save reports locally without requiring registration; support callhome enable refused (status/disable still work); fresh configs no longer seed the play alias with MinIO demo credentials; AGPL message de-upselled. Pinned by new regression tests in cmd/subnet-disabled_test.go.
  2. rebrand: adopt Silo identity in CLI help and examples--help first line, author, and --version now carry the Silo identity with an explicit based on MinIO technology source statement; ~220 help strings use the Silo/MinIO wording for managed servers; example aliases/hosts de-branded (myminiomysilo, playmysilo, minio1/2silo1/2, MINIOTIERSILOTIER, dc=min,dc=iodc=example,dc=com, …); issue links point at pgsty/mc, SQL docs at silo.pgsty.com.
  3. docs: align governance files and package metadata with the fork — CoC contact no longer dev@min.io; CONFLICT.md rewritten in the fork's voice; CONTRIBUTING points at pgsty/mc (was the archived upstream + GOPATH-era steps); PR-template CLA now AGPL-3.0-or-later (was a leftover Apache-2 contradiction); package description now describes the client, not a server, updated atomically across nfpm.yml / Dockerfile.goreleaser / sign-release-rpms.sh (test-release.yml keeps them in lockstep); README Silo-bundle rows point at pgsty/silo; NOTICE gains a modification statement while keeping the original MinIO attribution.
  4. test: default functional tests to a local server and add brand gate — bare ./functional-tests.sh no longer fires a destructive suite at play.min.io with MinIO's public credentials (defaults to localhost:9000, matching CI); new buildscripts/check-branding.sh gate wired into make verifiers and the vetchecks CI job.

Deliberately preserved (compatibility contract)

MINIO_*/MC_* env vars, x-minio-* headers, --type minio log/tier enums, /minio/* metrics paths, minio-job scrape name, .part.minio transfer suffix, minio-go SDK user agent, github.com/minio/mc module and import paths, mc/mcli names, ~/.mc/~/.mcli config-dir semantics, all original copyright headers, NOTICE/CREDITS/LICENSE attribution, and legacy config-migration defaults.

Verification

  • go build ./..., go vet ./..., golangci-lint (0 issues), full go test ./... green
  • Built binary: --version prints the Silo identity plus retained MinIO copyright; license register/support upload exit 1 with the stable disabled error; fresh config contains local/s3/gcs and no play
  • check-branding.sh passes; protected-identifier diff scan confirms zero changes to compat surfaces

Follow-ups (not in this PR)

  • GitHub repo description/topics still carry upstream wording (external metadata, needs owner action)
  • silo.pgsty.com reference pages may want to mirror the mysilo example alias

🤖 Generated with Claude Code

Vonng and others added 6 commits August 6, 2026 11:20
Close every outbound path to MinIO SUBNET while keeping command names,
flags and exit semantics stable for CLI compatibility:

- subnetReqDo returns a stable error before any HTTP request is built,
  so no code path can reach subnet.min.io (defense in depth behind the
  per-command gates below)
- license register and support upload always exit with the stable
  disabled error; license update keeps the local license-file path and
  rejects only the SUBNET renew form; license unregister and info now
  operate strictly on locally stored state
- support diag/perf/profile/inspect always run in local (airgap) mode
  and save their reports to disk; SUBNET registration is never required
- support callhome enable is refused; status and disable keep working
- fresh configurations no longer seed the play alias pointing at
  MinIO's public demo cluster (existing user configs are untouched)
- commercial subscription pitch removed from license info output
- disabled-update wording aligned with the Silo brand

Regression tests pin the disabled network layer, the play-free default
config, and the upsell-free AGPL message.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
Apply the brand policy across all user-visible cmd/ strings:

- product identity: app usage line, author, and version output now
  identify the Silo client, with an explicit 'based on MinIO technology'
  source statement; original MinIO copyright lines are retained
- server references in help and messages use the 'Silo/MinIO' wording
  since mc administers both Silo and upstream MinIO deployments
- example aliases and hosts de-branded: myminio->mysilo, minio1/2->
  silo1/2, play->mysilo, MINIOTIER->SILOTIER, minio.example.com->
  silo.example.com, dc=min,dc=io->dc=example,dc=com, and similar
- stale upstream links replaced: issue reporting now points at
  pgsty/mc, SQL docs at silo.pgsty.com

Protocol and compatibility surfaces are deliberately untouched:
MINIO_*/MC_* env vars, x-minio-* headers, --type minio log/tier enums,
/minio/* metrics paths, prometheus job name minio-job, the .part.minio
transfer suffix, minio-go SDK user agent, module and import paths, and
all license headers.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
- code of conduct reports now reach the fork maintainer instead of
  dev@min.io
- CONFLICT.md rewritten in the fork's own voice, documenting the actual
  mcli naming scheme instead of speaking as MinIO, Inc.
- CONTRIBUTING.md points at pgsty/mc and go-modules workflow instead of
  the archived upstream repository and GOPATH-era instructions
- PR template licenses contributions under AGPL-3.0-or-later (matching
  the project license, previously a leftover Apache-2 CLA) and no longer
  links to minio/docs
- shared package description now says what the package is - the Silo
  object storage client - instead of describing a server; updated
  atomically in nfpm.yml, Dockerfile.goreleaser and sign-release-rpms.sh
  which test-release.yml keeps in lockstep
- README Silo bundle rows point at pgsty/silo (Docker Hub successor of
  pgsty/minio); issue template asks for mcli --version to match the
  shipped binary name; stray duplicate root issue template and upstream
  jekyll _config.yml removed
- NOTICE gains a modification statement identifying the Silo fork while
  keeping the original MinIO attribution intact

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
- functional-tests.sh no longer targets play.min.io with MinIO's public
  demo credentials when SERVER_ENDPOINT is unset; it now defaults to
  localhost:9000 with the same credentials CI already uses, so a bare
  local run never fires the destructive suite at third-party
  infrastructure
- new buildscripts/check-branding.sh fails the build when user-visible
  surfaces reintroduce MinIO endpoints, commercial upsell, branded
  example aliases, or lose the Silo identity or the SUBNET hard-disable;
  wired into make verifiers and the vetchecks CI job; deliberately never
  inspects protocol-compatibility identifiers

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
This is a mixed fork: upstream MinIO development covers 2015-2025 and
the PGSTY fork starts in 2025. Version output and the help template now
print both lines - MinIO fixed at 2015-2025, PGSTY from 2025 through the
release-stamped CopyrightYear. The fork-authored test file carries the
dual header and the NOTICE modification statement uses the same range.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
The core of this fork is Copyright MinIO, Inc., so the combined work can
never be relicensed; a CLA would create signing friction while buying
nothing. Contributions are therefore accepted inbound=outbound under
AGPL-3.0-or-later with contributors keeping their copyright.

What a fork built on third-party code does need is provenance, so the
Developer Certificate of Origin 1.1 becomes mandatory: every non-bot
commit must carry a Signed-off-by trailer matching the author email,
enforced by a dependency-free workflow check. CONTRIBUTING.md documents
the sign-off, repair (git rebase --signoff), cherry-pick provenance
(-x plus relayer sign-off), dual copyright headers for fork-authored
files, and trailer preservation across squash merges; README (EN/zh)
and the PR template point at the policy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
@Vonng
Vonng force-pushed the rebrand/silo-client branch from 7b15441 to 6930657 Compare August 6, 2026 03:21
- README (EN/zh) gains a Related Projects section linking pgsty/silo,
  pgsty/silo-console, pgsty/silo-pkg, and pgsty/pigsty alongside this
  repository
- the container quick-start example listed the removed play alias;
  'alias ls' works against the fresh default config
- PR template links CONTRIBUTING.md by absolute URL (relative links do
  not resolve from the pull-request page)
- CONTRIBUTING example commit command now carries the -s sign-off the
  policy itself requires

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Feng Ruohang <rh@vonng.com>
@Vonng
Vonng merged commit 95326ce into main Aug 6, 2026
8 checks passed
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