license: relicense AetherSDR from GPL v3 to AGPL v3 + add CLA#3287
Closed
ten9876 wants to merge 4 commits into
Closed
license: relicense AetherSDR from GPL v3 to AGPL v3 + add CLA#3287ten9876 wants to merge 4 commits into
ten9876 wants to merge 4 commits into
Conversation
…greement
AetherSDR moves from GPL v3 to AGPL v3 using the combined-work mechanism
of GPL v3 section 13. Historical GPL v3 contributions retain their
original license; new contributions are AGPL v3 (gated by the new
Contributor License Agreement); the combined work is governed by AGPL
v3's network-use clause.
Motivation
==========
FlexRadio's SmartSDR EULA (revised 2026-01-19) requires a separate
commercial license for any use that 'directly or indirectly generates
revenue, compensation, or other commercial benefit.' Under the previous
GPL v3 license, an operator could run AetherSDR instead of SmartSDR as
the engine of a paid remote-SDR-as-a-service offering and remain outside
the licensing structure FlexRadio has put in place, without sharing
their hosting modifications. AGPL v3 section 13 closes that gap by
requiring source disclosure for network-delivered services.
This aligns AetherSDR's licensing posture with FlexRadio's stated
commercial position. Personal, non-commercial, community, and private
use are unaffected.
Files added
===========
LICENSE-AGPL-v3.txt canonical AGPL v3 text (Free Software Foundation)
LICENSE-GPL-v3.txt preserved original GPL v3 text for historical
contributions under section 13
CLA.md Contributor License Agreement (Apache-derived)
.github/workflows/cla-assistant.yml
CLA Assistant Lite GitHub Action enforcing CLA
signature on all incoming PRs
src/core/ProjectLicenseNotice.h
src/core/ProjectLicenseNotice.cpp
new AGPL-v3-licensed module that anchors the
combined work and provides the license summary
shown at startup / in the About dialog
Files modified
==============
LICENSE replaced GPL v3 text with combined-work notice
pointing to the two license files above
CMakeLists.txt added ProjectLicenseNotice.cpp to CORE_SOURCES
src/main.cpp logs projectLicenseOneLine() at startup so the
AGPL module is a live dependency of main()
README.md replaced GPL v3 reference with AGPL v3 summary
and motivation
CONTRIBUTING.md added CLA acceptance step (#3) to PR checklist
CHANGELOG.md Unreleased entry documenting the relicense
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The combined-work LICENSE notice introduced in this PR references
TRADEMARK.md ("if present") for the AetherSDR name + logo trademark
policy. The "if present" hedge was a placeholder; this commit makes
the file real.
Content is intentionally short and practical:
- what you may do (fork freely, build personally, talk about
AetherSDR — nominative use)
- what needs permission (distributing a modified binary or hosting
a modified service under the AetherSDR name; commercial use of
the name/logo)
- what's never granted (no trademark right implied by code use;
FlexRadio's trademarks aren't ours to grant either)
The trademark fence is intentionally separate from the AGPL code
license — name rules apply to forks regardless of how the code is
licensed downstream.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The original cla-assistant.yml in this PR pointed at an external aethersdr/cla-signatures repo, which would have required: - Creating + maintaining a second repo - Minting a long-lived PAT with cross-repo write - Storing the PAT as a repo secret + remembering to rotate it For a personal/small-org project, that's overhead without a matching benefit. Switching to in-repo storage on a dedicated `cla-signatures` branch of THIS repo: - Runs on the built-in GITHUB_TOKEN (zero credential management) - Matches the CLA Assistant Lite default for single-org projects - Keeps signatures public + auditable as a feature, not a bug Inline comment in the YAML records the design choice so future readers don't try to "fix" it back to external storage. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
437ef90 to
2e41593
Compare
Two user-facing strings still showed "GPL v3" after the relicense: - README.md badge linked to gpl-3.0 and labelled "GPL v3" - About dialog footer (MainWindow.cpp:9533) said "Licensed under GPLv3" with a gpl-3.0 hyperlink Both now reflect the AGPL v3 combined-work posture established by this PR. The About dialog footer also gains the "(combined with GPL v3 — see LICENSE)" hedge so users see the same combined-work framing the LICENSE file uses. Principle XIV.
Collaborator
Author
|
Closing this PR — dropping the AGPL relicense effort. The CLA infrastructure overhead and the irreversibility risk aren't worth the marginal protection against the FlexRadio EULA workaround scenario. AetherSDR remains under GPL v3. Existing contributors keep their original GPL v3 grant. Deleting the branch as part of close. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Relicense AetherSDR from GPL v3 to AGPL v3 using the combined-work mechanism of GPL v3 section 13. Introduce a Contributor License Agreement enforced by the CLA Assistant Lite GitHub Action.
Status: DRAFT for maintainer review before merge. Operator (KK7GWY) should read the actual artifacts — particularly
LICENSE,CLA.md, andLICENSE-AGPL-v3.txt— before promoting this to ready-for-review.Motivation
FlexRadio's SmartSDR for Windows EULA (revised 2026-01-19) explicitly requires a separate commercial license for any use that "directly or indirectly generates revenue, compensation, or other commercial benefit." Under the previous GPL v3 license, AetherSDR could be hosted as the engine of a paid remote-SDR-as-a-service offering without the operator sharing their hosting modifications — effectively a workaround for the commercial-licensing structure FlexRadio has put in place.
AGPL v3 section 13 closes that gap by requiring source disclosure for software provided over a network. This aligns AetherSDR's licensing posture with FlexRadio's stated commercial position.
Personal, non-commercial, community, and private use are unaffected.
What this PR does
Replaces LICENSE with a combined-work notice
LICENSE-AGPL-v3.txt— canonical AGPL v3 text (FSF)LICENSE-GPL-v3.txt— preserved original GPL v3 text for historical contributionsLICENSE— combined-work notice explaining the mechanism, both licenses, the motivation, and the FlexRadio EULA alignmentAdds a CLA
CLA.md— Apache-derived Contributor License Agreement with:.github/workflows/cla-assistant.yml— CLA Assistant Lite GitHub Action that comments on new PRs requesting signature, gates merge until signed, stores signatures on a dedicatedcla-signaturesbranch of this repo (in-repo storage chosen so the workflow runs with the built-inGITHUB_TOKENand doesn't need a cross-repo PAT)Adds the AGPL v3 anchor module
src/core/ProjectLicenseNotice.h+.cpp— small new module with AGPL v3 license headerCMakeLists.txt(CORE_SOURCES) andsrc/main.cpp(logsprojectLicenseOneLine()at startup, anchoring the AGPL module as a live dependency)Updates docs
README.md— license section replaced with AGPL v3 summary + motivation + practical-impact explainerCONTRIBUTING.md— adds CLA acceptance step (build(deps): Bump actions/checkout from 4 to 6 #3) to the PR checklistCHANGELOG.md—[Unreleased]entry documenting the relicenseSpecific things to review before un-drafting
[Unreleased]; will roll into the next release tag.Reversibility
License changes are practically irreversible. Once this merges and the binary ships with AGPL v3 LICENSE, distributed copies grant AGPL v3 rights to recipients and those rights vest. Going back would require unanimous consent from all post-CLA contributors.
For that reason, this is a draft PR. Eyeball the artifacts, sit with it overnight, then promote when ready.
Honest caveats
🤖 Generated with Claude Code