Wave 2: make default build MIT-clean (public-domain Blowfish, opt-in GPL for Kogado/WARC RNG) - #2
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…pt-in via INCLUDE_GPL) KogadoCocotte.cs (GPLv2) also defines the CRangeCoder used by ShiinaRio's WARC RNG index decompression, so both consumers are guarded with #if INCLUDE_GPL: ArcKogado (Cocotte, compression type 2) and ArcWARC (UnpackRNG, WARC versions 120-169). Default build now contains zero GPLv2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…tte opt-in) - Remove Blowfish from the GPL disclosure (now a public-domain reimplementation, MIT). - Kogado Cocotte (KogadoCocotte.cs, GPLv2) is excluded from the default build and opt-in via INCLUDE_GPL; note it also gates older ShiinaRio WARC RNG decompression (shared range coder). Default ArcFormats.dll is MIT-clean. - Keep KogadoCocotte.cs and licenses/GPL-2.0.txt for the opt-in build; keep the arm's-length non-infection note. Bilingual README + NOTICE updated consistently. - Correct release.yml bundling comment. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.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.
Summary — Wave 2: make the default release binary truly MIT
Builds on #1. Removes GPL code from the default build so the released
ArcFormats.dllis MIT-clean, while keeping the GPL-dependent format paths available behind an opt-in build flag.Replaced GPLv2 Blowfish with a public-domain implementation
ArcFormats/Blowfish.cswas Novell's GPLv2 file. Rewrote it from the public-domain Blowfish reference (Schneier / Kocher), preserving the exact public API and per-path byte order.Verified byte-identical to the old implementation:
Decipher(byte[]),CreateDecryptor().TransformBlock,Decipher(ref,ref)— at 20,000 random cases each: 0 mismatches; round-trip 0 failures.So the engines that use Blowfish (CatSystem2, TanukiSoft, Tamamo, Musica, Aims) are unaffected.
Excluded the remaining GPLv2 file from the default build
ArcFormats/KogadoCocotte.cs(GPLv2 — Schindler qsmodel range coder, ported by morkt) has no clean MIT replacement, so it is now compiled only whenINCLUDE_GPLis defined. It providesCRangeCoder, used by two format paths, both gated behind#if INCLUDE_GPL(throwing a clearNotSupportedExceptionotherwise):ArcKogado, compression type 2)ArcWARC.UnpackRNG). WARC ≥170 uses ZLib and is unaffected.Result: the default build produces an MIT-clean
ArcFormats.dll— verified thatKogadoCocotte.csis not in the default compile set (MSBuild -getItem:Compile) and that no compiled source contains GPL text. Building with-p:DefineConstants="TRACE;INCLUDE_GPL"restores those two format paths (that binary is then GPLv2).Docs
README.md/NOTICEupdated (EN + 繁中): the default release is MIT-clean; the optionalINCLUDE_GPLbuild adds one GPLv2 component (and which formats it enables).licenses/GPL-2.0.txtretained for that build.Testing
INCLUDE_GPLbuild: 0 errors.data.pacextraction regression: the 3 extracted files are SHA-256-identical to baseline (SoftPal uses none of the changed code; confirms the pipeline is intact).Depends on #1 (based on its branch; will retarget to
mainonce #1 merges).🤖 Generated with Claude Code