Skip to content

Relicense under PolyForm Noncommercial 1.0.0 - #104

Merged
IanHeinrich merged 1 commit into
mainfrom
claude/polyform-noncommercial-license-gryzzc
Aug 26, 2026
Merged

Relicense under PolyForm Noncommercial 1.0.0#104
IanHeinrich merged 1 commit into
mainfrom
claude/polyform-noncommercial-license-gryzzc

Conversation

@IanHeinrich

Copy link
Copy Markdown
Owner

What and why

Switches the project from Apache-2.0 to the PolyForm Noncommercial License
1.0.0, and makes the three places that state the licence agree with each other.

  • LICENSE — the verbatim PolyForm Noncommercial 1.0.0 text, taken from the
    SPDX license list (spdx/license-list-data) rather than transcribed, so it
    is character-for-character the canonical wording. It carries a
    Required Notice: Copyright 2026 Ian Heinrich (…) line under the title:
    PolyForm's Notices section is the mechanism that propagates attribution
    downstream, and without such a line the licence names no copyright holder
    at all.
  • README.md — badge and License section. The section now says plainly that
    the project is source-available rather than open source, and names the
    purposes the licence actually permits (personal use, hobby projects, study
    and research, charities, schools, public research bodies, government), since
    "noncommercial" on its own is the part people guess wrong about.
  • lib/ui/views/terms/terms_view.dart — the in-app Terms page had a section
    headed "Open source" whose body already said "source-available". Under
    Apache-2.0 that was loose; under PolyForm it is wrong. The heading is now
    "Source available" and the body names the licence, so the terms a user reads
    in the app match the repository.

assets/fonts/Roboto_LICENSE.txt stays Apache-2.0 — that is the font's
licence, not this project's.

How it was verified

None of the below were run: this session's container has no Dart or Flutter
SDK (dart: command not found, and no SDK anywhere on the filesystem), so CI
is the first thing to actually execute them. Flagging that rather than ticking
boxes on trust.

  • dart format --output=none --set-exit-if-changed .
  • flutter analyze
  • flutter test --exclude-tags=golden
  • Checked in the browser (required for anything under
    lib/features/studio/widgets/, which has no golden coverage)

What was checked instead, by inspection:

  • The Dart edit is a string-literal change inside an existing LegalSection
    list — no new identifiers, no signature or import changes.
  • No line in the edited Dart file exceeds 80 columns except a pre-existing
    import on line 1, which dart format does not wrap. The added literals
    follow the same adjacent-string continuation shape as the lines around them,
    which were already format-clean.
  • grep over the tree confirms no remaining Apache references outside the
    Roboto font licence and vendored web/pdfjs/.

Goldens

  • No golden baselines affected

TermsView has no golden test — test/golden/ covers drafts list, settings
and vault only.

Anything else

CONTRIBUTING.md now has a gap worth a decision. It states no inbound
contribution terms. Under Apache-2.0 that was survivable, because §5 supplies
a default inbound grant on the same terms as the outbound licence. PolyForm
has no equivalent clause, so with this merged, contributions arrive with no
stated licence at all. If the project keeps taking PRs, that wants either a
one-line inbound clause in CONTRIBUTING.md or a CLA. Deliberately left out
of this PR: it is a policy call, not a mechanical consequence of the swap.

Relicensing is only clean while the copyright is yours alone. Apache-2.0
is irrevocable for versions already published, so anyone who took a copy
before this commit keeps those rights to that code — this changes the terms
going forward, not retroactively. If any third-party contribution is already
in the history, that contributor's Apache-2.0 grant does not permit
relicensing their lines without their agreement. Worth confirming before this
lands.


Generated by Claude Code

Replace the Apache-2.0 LICENSE with the verbatim PolyForm Noncommercial
License 1.0.0 text (taken from the SPDX license list), carrying a
Required Notice line for the copyright holder as the licence's Notices
section provides for.

Update the README badge and License section to match, and state plainly
that the project is source-available rather than open source, with the
noncommercial purposes the licence permits.

The Terms page said "Open source" while its body already said
source-available; correct the heading and name the licence there too, so
the in-app terms and the repository agree.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jf6C8spZrjdfGdQMEqxMow
@IanHeinrich
IanHeinrich merged commit 6bbf67d into main Aug 26, 2026
3 checks passed
@IanHeinrich
IanHeinrich deleted the claude/polyform-noncommercial-license-gryzzc branch August 26, 2026 11:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants