Repository navigation
Conversation
The repo carried three conflicting license states: root LICENSE = GPL-2.0 (changed in 5f28b6f), 73 files with an Apache-2.0 header, 13 files with an LGPL-2.1 header. GPL-2.0-only cannot cover this project: the Apache-2.0 files contributed by outside contributors (no CLA was ever in place) cannot be relicensed to GPLv2, Apache-2.0 is incompatible with GPLv2 anyway, and Qt's LGPLv3 option can only be upgraded to GPLv3. The LGPL-2.1 headers were based on the mistaken belief that calling the FFmpeg API makes a file a derivative work of FFmpeg. The prebuilt binaries are a separate matter and keep a GPL-3.0 notice (next commit). [how] 1. Restore the root LICENSE to the Apache-2.0 text used before 5f28b6f 2. Replace the LGPL-2.1 header of 13 files with the standard Apache-2.0 header 3. Add the missing header to main.cpp, transcoder_test.cpp, enhance_module.py and the 8 shell scripts under tool/ and src/resources 4. Delete src/common/LICENSE and src/transcoder/LICENSE (LGPL-2.1 texts) 5. Update README, CLAUDE.md and .augment-guidelines 6. Add a pre-commit hook rejecting any source file without a header
The packages are built against a GPL-enabled FFmpeg (libx264/libx265) and the LGPLv3 build of Qt, so each package as a whole is GPL-3.0 - but they shipped with no license text at all and nothing told the recipient. [how] 1. Add licenses/GPL-3.0.txt and THIRD_PARTY_NOTICES.md (bundled components, their licenses, and where to get the corresponding source) 2. Bundle both plus LICENSE into the Linux tar.gz, the Windows zip, the macOS app (Contents/Resources) and the Linglong layer (share/licenses) 3. Add the macOS step before the bundle is re-signed so the files are covered by the signature; the Linglong step drops the copy that arrives with the binary artifact to avoid a duplicate under bin/ 4. State the source/binary license split in README.md and README_ZH.md 5. Document the LGPL vs GPL FFmpeg trade-off in doc/CompileGuide.md 6. Fix the repository URL in the DMG install instructions (it pointed at TSGU-OSC/OpenConverter, a different repository)
lqh-watch
enabled auto-merge (rebase)
October 10, 2026 02:11
|
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.



What
The repository declared three different licenses for itself, and the release packages shipped with no license text at all.
LICENSEsrc/common,src/component,src/transcoderTHIRD_PARTY_NOTICES.mdWhy
5f28b6fchanged the rootLICENSEto GPL-2.0, but that commit touched only that one file — the README, every file header and the developer docs still said Apache-2.0. Thatstate is also the one option that cannot legally cover this project:
libx264/libx265from BtbN's*-gpl-sharedbuild, Homebrewffmpeg@5on macOS — so copyleft covers the combinedbinary.
Apache-2.0 when they contributed), so GPL-2.0 cannot absorb them either.
All three constraints point the same way for the binaries — GPL-3.0 — while the source itself can stay Apache-2.0.
How
Source (
0612a78)LICENSEto the Apache-2.0 text used before5f28b6fmain.cpp,transcoder_test.cpp,enhance_module.pyand the 8 shell scripts undertool/andsrc/resourcessrc/common/LICENSEandsrc/transcoder/LICENSE(the LGPL-2.1 texts)README,CLAUDE.mdand.augment-guidelinesto one consistent story.github/pre-commit/check_license_header.pyso a new source file cannot land without a headerPackages (
be3a35e)licenses/GPL-3.0.txtandTHIRD_PARTY_NOTICES.md(bundled components, their licenses, and where to obtain the corresponding source)LICENSEinto the Linux tar.gz, the Windows zip, the macOS app (Contents/Resources) and the Linglong layer (share/licenses)to avoid a duplicate under
bin/README.md/README_ZH.mddoc/CompileGuide.mdTSGU-OSC/OpenConverter, a different repository), and add a license note there for end usersNotes
Testing
pre-commit run --files ...— all 11 hooks pass (including the new license-header hook)bash -non every shell script; YAML parse check on all workflowslicenses/licenses