2.9 KiB
License-debt — relicense AGPL-3.0 → MIT
Status: shipped v2.7.0-mit
Decision: Sam, 2026-05-31 — relicense BooCode back to MIT.
Source: boocode_code_review_v2.md §1 #1, §5k; roadmap ## License-debt batch.
Why
The tree is currently AGPL-3.0 — root LICENSE is GNU Affero GPL v3 and all five
package.json declare "license": "AGPL-3.0-only". Cause: the v2.4.0/v2.4.1
Unsloth-Studio lifts pulled in three AGPL-3.0-only files. BooCode is network-served, so
AGPL §13 network-copyleft is a live liability. Clearing the three files makes the MIT flip
valid; nothing else AGPL remains once they are gone.
Core insight (supersedes the roadmap's staged steps)
The roadmap entangled the relicense with retiring tool-call-parser.ts behind a live
qwen3.6 validation window. That is not necessary: the Unsloth-ported algorithm
(parseToolCallsFromText / scanBalancedBraces + unused constants) is dead code —
no production consumer imports it (verified: only the file and its test reference it). The
load-bearing parser (extractToolCallBlocks, under the file's own "BooCode streaming
helpers" banner) and stripToolMarkup are BooCode-authored. So the relicense strips
provenance, not capability — zero behavior change, no validation gate. The
native-llama-server-parsing retirement remains a separate, optional future optimization.
The three AGPL-3.0-only files to clear
apps/server/src/services/web/html-to-md.ts(←_html_to_md.py) — swap tonode-html-markdown(MIT). A different third-party library, not a rewrite-from-memory (which would still be a derivative). Consumed byweb_fetchviaweb/index.ts;htmlToMarkdown(html): stringsignature preserved.apps/server/src/services/inference/llama-args-validator.ts(←llama_server_args.py) — clean-room re-derive the flag denylist from the public llama-server README (CLI flag names are facts, not copyrightable); the shadowing logic is already BooCode's own.apps/server/src/services/inference/tool-call-parser.ts(←tool_call_parser.py) — delete the dead Unsloth-ported code; keep BooCode's streaming helpers +stripToolMarkup(re-derive its strip regexes from qwen's wire format); drop the header. No change to the live tool-call path.
Decisions (Sam, 2026-06-01)
- html-to-md library: node-html-markdown (single MIT dep, GFM tables built-in).
- tool-call-parser: relicense-only — defer native-parsing retirement.
- MIT copyright line:
Copyright (c) 2026 indifferentketchup. - Leave
boocode_code_review*.md(point-in-time snapshots) untouched; update the roadmap batch (planned → shipped) and add a README License section.
Out of scope
- Retiring
tool-call-parserpatterns 1 & 2 in favour of native llama-server parsing. - Bumping the stale README "Latest release" line / AGENTS.md pointer.