design.md 4.3 KB

Context

Repository currently has no LICENSE file. The user wants to adopt the WTFPL (version 2, December 2004) — the most permissive license commonly recognized: it imposes no restrictions beyond not changing the name of the license itself if modified. The verbatim text is short (under 20 lines) and is maintained at http://www.wtfpl.net/.

Goals / Non-Goals

Goals:

  • Ship an unambiguous, maximally permissive license.
  • Use the canonical WTFPL v2 wording verbatim (avoid modifying the license body, per its own terms).
  • Make the license discoverable: top-level LICENSE plus a README mention.

Non-Goals:

  • Add SPDX headers to every source file. WTFPL does not require per-file notices; a repo-level LICENSE is sufficient.
  • Relicense any vendored dependencies. github.com/fatih/color, gopkg.in/yaml.v3, github.com/mattn/go-isatty, github.com/mattn/go-colorable, and golang.org/x/sys retain their own (MIT/BSD-family) licenses; WTFPL only governs original code in this repo.
  • Add a copyright-header linter or CI check.

Decisions

1. Filename: LICENSE (no extension)

Decision: Place the license at ./LICENSE. Why: This is the path GitHub, pkg.go.dev, and most license scanners look for. Using LICENSE.txt or LICENSE.md works but is less conventional for single-file licenses.

2. Exact body

Decision: Use the standard WTFPL v2 text with a single project copyright line, omitting the upstream Sam Hocevar attribution. WTFPL's own clause permits modifying the license document as long as the name is not changed; replacing the upstream copyright with the project's is common practice among adopters. Final body:

        DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                    Version 2, December 2004

 Copyright (C) 2026 kotoyuuko

 Everyone is permitted to copy and distribute verbatim or modified
 copies of this license document, and changing it is allowed as long
 as the name is changed.

            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. You just DO WHAT THE FUCK YOU WANT TO.

Why: Keeps the LICENSE file minimal — exactly one copyright line, pointing at the project author. WTFPL's "copy and distribute… modified copies" clause explicitly covers this edit. Alternatives considered: Keeping Sam Hocevar's original copyright line as a second line — technically more conventional but visually noisy and unnecessary (the author explicitly requested a single line).

3. README section placement

Decision: Append a short ## License section at the bottom of README.md, after "API":

## License

This project is released under the [WTFPL v2](LICENSE) — Do What The Fuck You Want To Public License. Use it however you like.

Why: Conventional README footer position; avoids disrupting the existing section flow. Alternatives considered: Adding a shields.io badge near the title — not worth the HTML clutter or external asset dependency for a single-repo change.

4. No per-file notices or go.mod changes

Decision: Do not add SPDX-License-Identifier comments to Go source files; do not add anything to go.mod (Go's module system doesn't track licenses there). Why: WTFPL doesn't require per-file headers; go list -m and pkg.go.dev pick up the LICENSE file automatically.

Risks / Trade-offs

  • WTFPL is not OSI-approved. Some corporate policy scanners reject it. Mitigation: the user explicitly chose it; this is a personal/hobby-scale CLI where that trade-off is acceptable. Users who need a stricter posture can fork.
  • Copyright-year staleness. Copyright (C) 2026 will feel dated next year. Mitigation: year ranges aren't required; we'll add a year range (2026-2027) or move to a single "current year" convention in a future change when it matters.
  • License text not verbatim from wtfpl.net. We replaced the upstream copyright line with the project's own. Mitigation: WTFPL's own terms permit "verbatim or modified copies of this license document" as long as the name isn't changed, which it isn't.

Migration Plan

N/A — new file and a README addendum. No runtime impact, no rollback complexity. Downstream consumers who had forked before this commit were already under implicit "no license = all rights reserved"; WTFPL strictly broadens what they can do.