Skip to content

chore: add Contributor License Agreement and roll the BUSL Change Date per release - #211

Merged
IAmBod merged 3 commits into
mainfrom
chore/licensing-cla-rebased
Aug 20, 2026
Merged

chore: add Contributor License Agreement and roll the BUSL Change Date per release#211
IAmBod merged 3 commits into
mainfrom
chore/licensing-cla-rebased

Conversation

@IAmBod

@IAmBod IAmBod commented Aug 20, 2026

Copy link
Copy Markdown
Owner

Supersedes #195, which had gone dirty against main. Same three files'
worth of intent, rebased onto current main and de-conflicted.

What changed during the rebase:

  • Dropped the duplicate contact-address commit. chore: change contact address to info@iambod.dev #204 landed the same change
    on main while this branch was open. Its one uncovered corner — the CLA docs
    added by this branch — is fixed here instead, so info@iambod.dev is now the
    only address in the repo (verified: no randombullsh.it remains anywhere).
  • Resolved the README license-paragraph conflict by keeping this branch's
    more precise per-version wording ("on its Change Date, four years after that
    version is released") with the new contact address.

Otherwise unchanged from #195: CLA.md, the contributor-assistant workflow,
CONTRIBUTING + docs updates, and rolling the BUSL Change Date on every release.

Before this can actually gate PRs

Two maintainer steps, neither of which this branch can do:

  1. Add the CLA_SIGNATURES_TOKEN secret. The repo currently has zero Actions
    secrets, so as-is the CLA job will fail when it tries to commit a signature.
  2. Require the "CLA Assistant" check on main — needs branch protection, which
    needs the repo to be public (or Pro).

Worth considering: the action is pinned to the tag @v2.6.1. For a
pull_request_target workflow holding contents: write, pinning to a commit
SHA is the safer habit.

Verification

scripts/check-doc-links.sh passes, actionlint clean on all workflows.

IAmBod and others added 3 commits August 20, 2026 14:11
rss2msg is source-available under BUSL 1.1, and the maintainer offers
separate commercial licenses on top of it. Contributions previously came
in under "the same terms as the rest of the project", which licenses the
contributor's copyright to the project under BUSL — including its own
no-hosted-service carve-out. That leaves contributed code unusable in a
commercial or hosted offering, and blocks the Apache-2.0 conversion each
version is supposed to get on its Change Date.

Add an Apache-ICLA-derived CLA granting the maintainer the right to
license contributions under the project's current and future terms.
Contributors keep their copyright.

Signing is automated with contributor-assistant/github-action, which
records signatures in a `cla-signatures` branch. Two manual setup steps
are required before the check can pass and are documented in the
workflow header: a CLA_SIGNATURES_TOKEN secret, and a branch-protection
rule requiring the "CLA Assistant" status check on main.

Also correct README and CONTRIBUTING to describe the project as
source-available rather than implying it is open source: BUSL's
field-of-use restriction is incompatible with the OSI definition.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CtBEGzKLXr9iBXibFVKJHx
LICENSE carried a single fixed Change Date (2030-06-01) and nothing in
the release process touched it. BUSL applies "separately for each
version" and the Change Date "may vary for each version", so a fixed
date means every version converts on the same day: a release cut in
2029 would have gotten one year of protection instead of four, and any
release after 2030-06-01 would have shipped already converted to
Apache-2.0.

Add a step to the release procedure that rewrites the Change Date line
to four years out — the BUSL ceiling, since it also converts on "the
fourth anniversary of the first publicly available distribution of a
specific version" — and stages LICENSE alongside CHANGELOG.md. Because
the tag captures the tree, each tag and each artifact built from it
carries the Change Date belonging to that version.

Wired into both the documented manual steps and the cut-release skill
that /release drives. The legal text itself is untouched.

Also fix a contradiction the new step exposed: releasing.md still told
the maintainer to put [skip ci] in the changelog commit, which is what
silently skipped the v0.3.0 release. The skill already forbids it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CtBEGzKLXr9iBXibFVKJHx
The contact-address change landed on main via #204 while this branch was
open; #204 didn't cover the CLA files, which are added here. Align them
so a single address appears repo-wide.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015aZ5qHYBsde5ysgUrRmbwD
@IAmBod
IAmBod merged commit b9e1c6c into main Aug 20, 2026
11 checks passed
@IAmBod
IAmBod deleted the chore/licensing-cla-rebased branch August 20, 2026 12:32
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant