Add the MIT LICENSE file and README licence statement (1.0 blocker) #102

Open
opened 2026-08-09 03:37:20 +02:00 by clawbot · 3 comments
Collaborator

@sneak — this one needs your decision; I cannot pick a license on your behalf.

Situation

There is no LICENSE file anywhere in the repository (find . -iname 'licen*' returns nothing). README.md says so explicitly:

> License has not yet been chosen for this project. Pending decision by the author (MIT, GPL, or WTFPL).

REPO_POLICIES.md lists LICENSE under "New repos must contain at minimum", and the README requirements section says: "License: MIT, GPL, or WTFPL. Ask the user for new projects. Include a LICENSE file in the repo root and a License section in the README."

It is also the only required-minimum file missing from this repo — everything else (.editorconfig, .dockerignore, .gitea/workflows/check.yml, all twelve script/ entrypoints, Dockerfile, .golangci.yml) is present.

Shipping a 1.0.0 tag of a publicly readable repo with no license means the code is, by default, all-rights-reserved and nobody may legally use it. That makes this a hard 1.0 blocker rather than a nicety.

Options

  1. MIT — permissive, shortest, the most common choice for small Go daemons, and consistent with how µPaaS is described in REPO_POLICIES.md ("µPaaS is an MIT-licensed Go web application by @sneak..."). Maximum adoption, no copyleft obligations on downstream users.
  2. GPL (v3) — copyleft; downstream modifications that are distributed must also be GPL. Appropriate if you want redistributed forks of a monitoring daemon to stay open.
  3. WTFPL — maximally permissive, no warranty disclaimer. Note it lacks the explicit warranty/liability disclaimer MIT carries, which is a real (if small) consideration for a network-facing daemon.

Recommendation

MIT. It matches the precedent set by µPaaS in your own policy document, it carries the warranty disclaimer that WTFPL omits, and dnswatcher is infrastructure tooling where permissive licensing maximises usefulness with no obvious downside. It is also the option that requires no further thought if you later publish this anywhere.

Definition of done (once you answer)

  1. A LICENSE file in the repo root containing the verbatim, unmodified text of the chosen license, with the copyright line reading the current year and your name/handle as you want it to appear.
  2. The README "License" section replaced — the "has not yet been chosen" sentence removed and replaced with a statement naming the license.
  3. The README first line updated to include the license, per the Description requirement in REPO_POLICIES.md ("First line must include the project name, purpose, category ..., license, and author"). It currently reads "dnswatcher is a pre-1.0 Go daemon by @sneak that monitors..." with no license named.
  4. make check green; TODO.md updated in the same commit.

This is a docs-only change, so once the license is chosen it skips adversarial review and goes straight to the merge gate.

Reply with which license you want and I will dispatch it immediately. I am not blocking on this — I am proceeding with the other 1.0 items in the meantime.

@sneak — this one needs your decision; I cannot pick a license on your behalf. ## Situation There is **no `LICENSE` file** anywhere in the repository (`find . -iname 'licen*'` returns nothing). `README.md` says so explicitly: > License has not yet been chosen for this project. Pending decision by the author (MIT, GPL, or WTFPL). `REPO_POLICIES.md` lists `LICENSE` under "New repos must contain at minimum", and the README requirements section says: "**License**: MIT, GPL, or WTFPL. Ask the user for new projects. Include a `LICENSE` file in the repo root and a License section in the README." It is also the **only** required-minimum file missing from this repo — everything else (`.editorconfig`, `.dockerignore`, `.gitea/workflows/check.yml`, all twelve `script/` entrypoints, `Dockerfile`, `.golangci.yml`) is present. Shipping a 1.0.0 tag of a publicly readable repo with no license means the code is, by default, all-rights-reserved and nobody may legally use it. That makes this a hard 1.0 blocker rather than a nicety. ## Options 1. **MIT** — permissive, shortest, the most common choice for small Go daemons, and consistent with how µPaaS is described in `REPO_POLICIES.md` ("µPaaS is an MIT-licensed Go web application by @sneak..."). Maximum adoption, no copyleft obligations on downstream users. 2. **GPL (v3)** — copyleft; downstream modifications that are distributed must also be GPL. Appropriate if you want redistributed forks of a monitoring daemon to stay open. 3. **WTFPL** — maximally permissive, no warranty disclaimer. Note it lacks the explicit warranty/liability disclaimer MIT carries, which is a real (if small) consideration for a network-facing daemon. ## Recommendation **MIT.** It matches the precedent set by µPaaS in your own policy document, it carries the warranty disclaimer that WTFPL omits, and dnswatcher is infrastructure tooling where permissive licensing maximises usefulness with no obvious downside. It is also the option that requires no further thought if you later publish this anywhere. ## Definition of done (once you answer) 1. A `LICENSE` file in the repo root containing the verbatim, unmodified text of the chosen license, with the copyright line reading the current year and your name/handle as you want it to appear. 2. The README "License" section replaced — the "has not yet been chosen" sentence removed and replaced with a statement naming the license. 3. The README first line updated to include the license, per the Description requirement in `REPO_POLICIES.md` ("First line must include the project name, purpose, category ..., license, and author"). It currently reads "dnswatcher is a pre-1.0 Go daemon by @sneak that monitors..." with no license named. 4. `make check` green; `TODO.md` updated in the same commit. This is a docs-only change, so once the license is chosen it skips adversarial review and goes straight to the merge gate. **Reply with which license you want and I will dispatch it immediately.** I am not blocking on this — I am proceeding with the other 1.0 items in the meantime.
clawbot added this to the 1.0 milestone 2026-08-09 03:37:20 +02:00
sneak was assigned by clawbot 2026-08-09 03:37:20 +02:00
Author
Collaborator

DECIDED by sneak, 2026-08-09, as standing policy across all repos rather than a per-repo call:

add MIT to any public repo lacking a license. private repos with no license are all rights reserved.

So for this repo: if it is public, add MIT. If it is private, absence of a licence already means all rights reserved and nothing should be added.

Verify the repo's actual visibility on Gitea before acting rather than assuming. If MIT applies, use a standard MIT LICENSE with sneak as copyright holder and the correct year.

Unblocked; no further owner input needed here.

DECIDED by sneak, 2026-08-09, as standing policy across all repos rather than a per-repo call: > add MIT to any public repo lacking a license. private repos with no license are all rights reserved. So for this repo: if it is public, add MIT. If it is private, absence of a licence already means all rights reserved and nothing should be added. Verify the repo's actual visibility on Gitea before acting rather than assuming. If MIT applies, use a standard MIT `LICENSE` with sneak as copyright holder and the correct year. Unblocked; no further owner input needed here.
Author
Collaborator

[manager] Resolved by org-wide policy, no further decision needed. The standing ruling is: any PUBLIC repo lacking a licence gets MIT; a PRIVATE repo with no licence is all-rights-reserved and needs nothing.

sneak/dnswatcher is public (verified against the Gitea repo record, private: false), so this is MIT. That matches the recommendation above, so the definition of done in the issue body stands unchanged.

Unassigning @sneak and queueing it as a docs-only unit.

**[manager] Resolved by org-wide policy, no further decision needed.** The standing ruling is: any PUBLIC repo lacking a licence gets MIT; a PRIVATE repo with no licence is all-rights-reserved and needs nothing. `sneak/dnswatcher` is public (verified against the Gitea repo record, `private: false`), so this is MIT. That matches the recommendation above, so the definition of done in the issue body stands unchanged. Unassigning @sneak and queueing it as a docs-only unit.
clawbot changed title from DECISION NEEDED: choose a license and add the LICENSE file (1.0 blocker) to Add the MIT LICENSE file and README licence statement (1.0 blocker) 2026-08-10 14:30:12 +02:00
sneak was unassigned by clawbot 2026-08-10 14:30:12 +02:00
clawbot self-assigned this 2026-08-10 14:30:12 +02:00
Author
Collaborator

Done, MIT, per the standing policy above. Landed on next as 168281a, accumulating in #136.

  • LICENSE at the repo root: canonical MIT text byte-for-byte, only the copyright line filled in (Copyright (c) 2026 sneak). No clauses added, removed, reworded, or reflowed.
  • README.md first line now reads "dnswatcher is an MIT-licensed, pre-1.0 Go daemon by @sneak that monitors...", satisfying the Description requirement.
  • README.md License section states MIT and points at the LICENSE file; the "has not yet been chosen" sentence is gone.
  • TODO.md updated in the same commit.

Verification: the licence text was not typed from memory. It was copied from a verbatim MIT template already on disk with only the copyright line edited (a diff against that template shows that one line and nothing else changed), then word-diffed against SPDX MIT.txt from spdx/license-list-data ignoring line wrapping and the placeholder — identical.

make fmt does not touch LICENSE and cannot: script/fmt runs gofmt -s -w . and goimports -w . only, with no prettier or markdown step in this repo, so no exclusion was needed.

make check green, exit 0 — tests executed rather than replayed (zero (cached) lines) and the Docker lint stage ran uncached (0 issues., 36.7s).

Done, MIT, per the standing policy above. Landed on `next` as `168281a`, accumulating in https://git.eeqj.de/sneak/dnswatcher/pulls/136. - `LICENSE` at the repo root: canonical MIT text byte-for-byte, only the copyright line filled in (`Copyright (c) 2026 sneak`). No clauses added, removed, reworded, or reflowed. - `README.md` first line now reads "dnswatcher is an MIT-licensed, pre-1.0 Go daemon by @sneak that monitors...", satisfying the Description requirement. - `README.md` License section states MIT and points at the `LICENSE` file; the "has not yet been chosen" sentence is gone. - `TODO.md` updated in the same commit. Verification: the licence text was not typed from memory. It was copied from a verbatim MIT template already on disk with only the copyright line edited (a `diff` against that template shows that one line and nothing else changed), then word-diffed against SPDX `MIT.txt` from `spdx/license-list-data` ignoring line wrapping and the placeholder — identical. `make fmt` does not touch `LICENSE` and cannot: `script/fmt` runs `gofmt -s -w .` and `goimports -w .` only, with no prettier or markdown step in this repo, so no exclusion was needed. `make check` green, exit 0 — tests executed rather than replayed (zero `(cached)` lines) and the Docker lint stage ran uncached (`0 issues.`, 36.7s).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/dnswatcher#102