Repository navigation
chore(license): state GPL-3.0-or-later in every file and manifest - #12
Conversation
The intent is or-later, but nothing in the repo said so, so a consumer cannot tell whether GPLv4 is permitted. The grant only helps if it is made while the contribution is, while a re-grant would mean writing to every contributor. - 79 source files (77 `.go`, `scripts/live-e2e.sh`, `scripts/update-homebrew-formula.py`) | SPDX identifier plus a copyright line. LICENSE is left byte-identical to the FSF text. Prepending the notice above it was tried first and reverted on evidence: GitHub's detector has no GPL-3.0-or-later entry to match against (the vendored database only carries GPL-3.0, and the package matcher strips -or-later), and an augmented LICENSE stops matching the canonical text at all - the repo went from GPL-3.0 to NOASSERTION. The per-file SPDX identifier, the manifest field and the README are where the grant is readable. Verified: - `go build ./...` — clean. - `go vet ./...` — clean. - `go test -count=1 ./...` — every package `ok`. - `gofmt -l .` — reports `internal/tidb/lookup.go` on **both** this branch and `main` (verified by `git stash`-ing and re-running), i.e. pre-existing. Not touched. - `gh api repos/TheIntroDB/plex-sync/license?ref=chore/licensing` — `GPL-3.0`, unchanged from `main`.
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
Why
The intent for this repo is GPL-3.0-or-later, but nothing in it said so:
LICENSEis the plain FSF GPL-3 text, no source file carried an identifier. Or-later is only
worth anything if it is written down while the contribution is being made — it is what
lets the project adopt a future GPL version without hunting down every contributor for a
re-grant, and right now a downstream author copying a file, or reading the sidebar, cannot
tell whether GPLv4 is permitted.
What the PR does
LICENSE.go,scripts/live-e2e.sh,scripts/update-homebrew-formula.py)README.mdLICENSE.No functional change: comments, manifest fields and prose.
LICENSEis deliberately untouchedThe obvious move is to prepend that notice to
LICENSEitself. I tried exactly that first,and backed it out on the evidence:
GPL-3.0-or-laterfrom a license file. Thevendored database licensee matches against (
choosealicense.com) carriesGPL-3.0,GPL-2.0,AGPL-3.0,LGPL-*— there is nogpl-3.0-or-laterentry, and the file matcherreturns the matched entry's
spdx_id. The package-manifest matcher normalises-or-lateraway (
SPDX_SUFFIX_REGEXinmatchers/package.rb), so it cannot produce it either. Sampledagainst twelve real GPL projects (
obsproject/obs-studio,gnuradio/gnuradio,KDE/krita,mpv-player/mpv,blender/blender,qBittorrent/qBittorrent, …): every one reportsGPL-2.0,GPL-3.0orNOASSERTION— none report an-or-laterid.LICENSEmakes it strictly worse. With the notice prepended, the branchreported
NOASSERTIONinstead ofGPL-3.0: the file no longer matches the canonical textclosely enough, and the repo loses the license it did have.
So the grant is stated where it is both human-visible and machine-readable: the SPDX
identifier on every file (the location the SPDX spec prescribes for a per-file grant), the
manifest field, and the README.
LICENSEstays byte-identical to what the FSF ships, so thesidebar keeps reading
GPL-3.0. If you would rather have the notice physically insideLICENSEand accept the sidebar saying "Other", that is a two-line change — say the word.Tests
go build ./...— clean.go vet ./...— clean.go test -count=1 ./...— every packageok.gofmt -l .— reportsinternal/tidb/lookup.goon both this branch andmain(verified bygit stash-ing and re-running), i.e. pre-existing. Not touched.gh api repos/TheIntroDB/plex-sync/license?ref=chore/licensing—GPL-3.0, unchanged frommain.Not in this PR
TestLiveLookup— a live smoke test gated onTIDB_LIVE=1; not run, and nothing here can change its result.internal/tidb/lookup.go's pre-existing formatting.Summary by CodeRabbit