52 lines
2.9 KiB
Markdown
52 lines
2.9 KiB
Markdown
# 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
|
|
|
|
1. `apps/server/src/services/web/html-to-md.ts` (← `_html_to_md.py`) — **swap** to
|
|
`node-html-markdown` (MIT). A different third-party library, not a rewrite-from-memory
|
|
(which would still be a derivative). Consumed by `web_fetch` via `web/index.ts`;
|
|
`htmlToMarkdown(html): string` signature preserved.
|
|
2. `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.
|
|
3. `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-parser` patterns 1 & 2 in favour of native llama-server parsing.
|
|
- Bumping the stale README "Latest release" line / AGENTS.md pointer.
|