Skip to content

Relicense: PolyForm Noncommercial with convention and education rider - #11

Closed
Thiritin wants to merge 1 commit into
mainfrom
licence-noncommercial
Closed

Relicense: PolyForm Noncommercial with convention and education rider#11
Thiritin wants to merge 1 commit into
mainfrom
licence-noncommercial

Conversation

@Thiritin

@Thiritin Thiritin commented Aug 3, 2026

Copy link
Copy Markdown
Owner
  • Licence changed from GPL-3.0 to PolyForm Noncommercial 1.0.0 plus a Convention and Education Rider
  • Free for conventions and community events of any fandom and any size, for non-profit organisers including registered associations such as a German e.V. and volunteer groups with no legal form, and for schools, universities and other teaching institutions
  • Ticket, badge, merchandise, bar, sponsorship and donation income does not disqualify an organiser, and neither does paying staff, guests, venues or suppliers
  • A commercial provider may be paid to install and run it on behalf of a permitted organisation, but may not offer it as a product of its own
  • Anything else, in particular commercial use and hosted-service offerings, needs written permission, granted case by case at no charge
  • No obligation to publish modifications
  • PolyForm base text is included verbatim; the rider only adds permissions and the more permissive reading wins on any conflict
  • Releases made before this change stay available under GPL-3.0
  • composer.json declares the licence instead of the untouched Laravel MIT default
  • CONTRIBUTING.md states that contributions are made under the project licence, and that GPL or AGPL code cannot be merged

Summary by CodeRabbit

  • Documentation

    • Added a contributor guide with contribution requirements, coding conventions, pull-request checks, and local development resources.
    • Updated the README with contribution guidance and revised licensing information.
  • Licensing

    • Replaced the previous license with a source-available noncommercial license and usage rider.
    • Clarified permitted activities, commercial-use restrictions, and licensing terms for earlier releases.
    • Updated the package license metadata to reflect the new licensing model.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The project replaces GPL licensing references with PolyForm Noncommercial terms and a convention and education rider. It updates Composer metadata and README licensing information. It adds contributor guidance for contribution processes, coding standards, checks, architecture, branding, and local setup.

Changes

Licensing and contribution guidance

Layer / File(s) Summary
License terms and project metadata
LICENSE, README.md, composer.json
The repository adopts PolyForm Noncommercial terms with a convention and education rider. The README describes permitted uses and prior-release GPL coverage. Composer now uses the new license identifier.
Contributor workflow guidance
CONTRIBUTING.md
The new guide documents contribution scope, licensing requirements, required checks, style conventions, admin-screen architecture, branding configuration, and local setup resources.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the primary licensing change and the permitted-use rider.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch licence-noncommercial

Comment @coderabbitai help to get the list of available commands.

@Thiritin Thiritin closed this Aug 3, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@CONTRIBUTING.md`:
- Around line 15-17: Update the contribution licensing guidance in
CONTRIBUTING.md to require preserving the complete applicable license text,
copyright and attribution notices, NOTICE attributions, and any required
modification notices for permissively licensed code, rather than only its
copyright notice.

In `@LICENSE`:
- Around line 5-7: Update the public license summaries in LICENSE lines 5-7 and
README.md lines 140-142: state the surplus and reasonable-pay condition, include
the Section 3 exception for commercial companies acting for permitted
organisations, and require written permission only for other business use,
including offering the software as its own commercial product or hosted service.
- Around line 9-13: Update the rider-precedence language in LICENSE so it no
longer applies a blanket “more permissive reading wins” rule: limit rider
modifications to explicit permissions in Sections 1–6, state that no permission
arises by implication, and preserve the restrictions and trademark provisions in
Sections 4 and 6. Obtain legal approval for the final precedence wording.
- Around line 100-104: Update the final sentence in the “Names and logos”
section to clarify that configuring branding does not transfer ownership or
trademark rights, rather than stating that the branding belongs to whoever
configured it.
- Line 3: Update the LICENSE copyright and relicensing state only after
documenting authorization from all contributors whose existing work is covered,
using a tracked CLA, assignment, or prior-consent record; otherwise retain
affected material under its prior GPL license rather than asserting PolyForm
rights.
- Around line 17-20: Create an immutable release tag or version for commit
1fc6b0ab5aede4e0607a68f882b0b3a9670ad5de, then update the boundary statements in
LICENSE (lines 17-20) and README.md (line 144) to use that same identifier.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: f37a807b-54d2-4531-a09e-3e851957409b

📥 Commits

Reviewing files that changed from the base of the PR and between 1fc6b0a and 0845ef9.

📒 Files selected for processing (4)
  • CONTRIBUTING.md
  • LICENSE
  • README.md
  • composer.json

Comment thread CONTRIBUTING.md
Comment on lines +15 to +17
Because the project is source-available rather than open source, code taken from
GPL, AGPL or similarly licensed projects cannot be merged. MIT, BSD, ISC and
Apache-2.0 code is fine as long as you keep its copyright notice.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu
printf '%s\n' '--- CONTRIBUTING.md ---'
cat -n CONTRIBUTING.md
printf '%s\n' '--- repository license-related guidance ---'
rg -n -i 'license|licen[cs]|notice|copyright|third[- ]party|source.available|open source' --glob '!node_modules' --glob '!dist' --glob '!build' .

Repository: Thiritin/streaming

Length of output: 50375


🌐 Web query:

Apache License 2.0 official redistribution conditions license copy NOTICE modified files section 4

💡 Result:

Section 4 of the Apache License 2.0 outlines the conditions for redistributing the Work or Derivative Works [1][2][3]. When redistributing, you must meet the following four primary requirements: 1. Copy of License: You must provide any recipients of the Work or Derivative Works with a copy of the Apache License 2.0 [1][3]. 2. Modified Files: You must include prominent notices in any modified files stating that you changed those files [1][3]. 3. Attribution Preservation: You must retain all copyright, patent, trademark, and attribution notices from the Source form of the original Work in the Source form of any Derivative Works you distribute (excluding notices that do not pertain to any part of the Derivative Works) [1][3]. 4. NOTICE File: If the original Work includes a NOTICE text file, any Derivative Works you distribute must include a readable copy of the attribution notices contained within that file [1][3]. These notices must be placed in at least one of the following locations: - Within a NOTICE text file distributed as part of the Derivative Works [1][3]. - Within the Source form or documentation, if provided with the Derivative Works [1][3]. - Within a display generated by the Derivative Works (wherever such third-party notices normally appear) [1][3]. The contents of the NOTICE file are for informational purposes only and do not modify the license [1][3]. You may add your own attribution notices within Derivative Works, provided they are placed alongside or as an addendum to the original NOTICE text and are not construed as modifying the license [1][3]. For Apache projects, policy dictates that these files (LICENSE and NOTICE) should generally be located in the top directory of the distribution [4][5]. It is important to note that you should not modify the original LICENSE or NOTICE files for non-bundled dependencies, but if you bundle dependencies, you may need to analyze their NOTICE files and consolidate relevant portions into your top-level NOTICE file [5].

Citations:


🏁 Script executed:

#!/bin/bash
set -eu
printf '%s\n' '--- CONTRIBUTING.md lines 1-25 ---'
sed -n '1,25p' CONTRIBUTING.md
printf '%s\n' '--- tracked license and notice files ---'
git ls-files | rg -i '(^|/)(license|licence|notice)([^/]*)$|third.party'
printf '%s\n' '--- relevant tracked guidance only ---'
git grep -n -I -i -E 'license|licen[cs]|notice|copyright|third[- ]party|source.available|open source' -- CONTRIBUTING.md README.md 2>/dev/null || true

Repository: Thiritin/streaming

Length of output: 2110


Require complete license and notice handling for permissive contributions.

Line 17 requires more than retaining the copyright notice. Contributors must review the license and preserve the full license text, copyright and attribution notices, applicable NOTICE attributions, and required modification notices.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@CONTRIBUTING.md` around lines 15 - 17, Update the contribution licensing
guidance in CONTRIBUTING.md to require preserving the complete applicable
license text, copyright and attribution notices, NOTICE attributions, and any
required modification notices for permissively licensed code, rather than only
its copyright notice.

Comment thread LICENSE
<https://www.gnu.org/licenses/why-not-lgpl.html>.
# Licence

Copyright 2023 Thiritin and contributors.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/sh
set -eu

git shortlog -sne --all
printf '\nPossible rights-record files:\n'
fd -H -i 'cla|dco|copyright|contributor' .

Repository: Thiritin/streaming

Length of output: 790


🏁 Script executed:

printf '%s\n' '--- LICENSE ---'
cat -n LICENSE
printf '%s\n' '--- CONTRIBUTING and repository guidance ---'
fd -H -i 'contributing|readme|license|cla|dco|copyright|contributor' . -t f | sort
for f in CONTRIBUTING.md README.md; do
  if [ -f "$f" ]; then
    printf '\n--- %s ---\n' "$f"
    cat -n "$f"
  fi
done
printf '%s\n' '--- license-related history ---'
git log --all --format='%h %ad %an <%ae> %s' --date=short -- LICENSE CONTRIBUTING.md | head -80
printf '%s\n' '--- contributor and licensing references ---'
rg -n -i 'license|licen[cs]e|copyright|CLA|DCO|contributor|assign|relicense|GPL|PolyForm' --glob '!LICENSE' --glob '!README.md' --glob '!CONTRIBUTING.md' . || true

Repository: Thiritin/streaming

Length of output: 50375


🏁 Script executed:

printf '%s\n' '--- tracked top-level licensing files ---'
git ls-files | awk 'BEGIN{IGNORECASE=1} $0=="LICENSE" || $0=="CONTRIBUTING.md" || $0=="README.md" || $0 ~ /(^|\/)(CLA|DCO|COPYRIGHT|CONTRIBUTORS)(\.[^\/]*)?$/ {print}'
for f in LICENSE CONTRIBUTING.md README.md; do
  if git ls-files --error-unmatch "$f" >/dev/null 2>&1; then
    printf '\n--- %s: first 120 lines ---\n' "$f"
    sed -n '1,120p' "$f"
  else
    printf '\n--- %s: not tracked ---\n' "$f"
  fi
done
printf '%s\n' '--- license-file history ---'
git log --all --format='%h %ad %an <%ae> %s' --date=short -- LICENSE CONTRIBUTING.md | head -80
printf '%s\n' '--- tracked files with explicit rights terms ---'
git grep -n -i -E 'copyright|CLA|DCO|contributor|assign|relicens|GPL|PolyForm' -- ':!LICENSE' ':!README.md' ':!CONTRIBUTING.md' | head -200 || true

Repository: Thiritin/streaming

Length of output: 33797


Document relicense authority before shipping. Git history includes contributors besides Thiritin/Tin, but no tracked CLA, assignment, or prior-consent record establishes PolyForm rights for their existing contributions. Obtain consent or keep affected material under its prior GPL license.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@LICENSE` at line 3, Update the LICENSE copyright and relicensing state only
after documenting authorization from all contributors whose existing work is
covered, using a tracked CLA, assignment, or prior-consent record; otherwise
retain affected material under its prior GPL license rather than asserting
PolyForm rights.

Comment thread LICENSE
Comment on lines +5 to +7
This software is source-available, not open source. It is free to use for
conventions, non-profit event organisers and schools. Businesses need written
permission, which costs nothing and is usually given.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

printf '%s\n' '--- LICENSE ---'
cat -n LICENSE | sed -n '1,80p'
printf '%s\n' '--- README excerpt ---'
cat -n README.md | sed -n '125,155p'
printf '%s\n' '--- related license references ---'
rg -n -i 'noncommercial|non-commercial|commercial|surplus|reasonable|permission|hosted|service|section 3|gpl|polyform|source-available' LICENSE README.md

Repository: Thiritin/streaming

Length of output: 8937


🏁 Script executed:

cat -n LICENSE | sed -n '74,100p'
cat -n LICENSE | sed -n '130,175p'
printf '%s\n' '--- all public license-summary sections ---'
rg -n -i -C 3 'source-available|free to use|written permission|commercial service|ticket sales|surplus|reasonable pay|host|operate|service provider' --glob '!*lock*' .

Repository: Thiritin/streaming

Length of output: 50375


🏁 Script executed:

set -o pipefail
printf '%s\n' '--- LICENSE rider service-provider and permission clauses ---'
sed -n '74,100p' LICENSE
printf '%s\n' '--- README license summary ---'
sed -n '130,145p' README.md
printf '%s\n' '--- targeted summary matches outside generated/vendor data ---'
rg -n -i --glob '!**/node_modules/**' --glob '!**/vendor/**' --glob '!**/public/**' \
  'source-available|free to use|written permission|commercial service|ticket sales|surplus|reasonable pay|service provider' \
  LICENSE README.md
printf '%s\n' '--- deterministic summary checks ---'
python3 - <<'PY'
from pathlib import Path

license_text = Path("LICENSE").read_text()
readme_text = Path("README.md").read_text()

rider = license_text[license_text.index("## 2. Income does not make use commercial"):license_text.index("## 4.")]
checks = {
    "LICENSE states the surplus condition": "surplus goes back into its own purposes" in rider,
    "LICENSE states reasonable pay": "reasonable pay for work done" in rider,
    "LICENSE grants paid commercial service-provider work": "may be paid for that work" in rider,
    "LICENSE limits service-provider permission": "does not let the company" in rider,
    "README states the surplus condition": "surplus goes back into its own purposes" in readme_text,
    "README states reasonable pay": "reasonable pay for work done" in readme_text,
    "README limits permission to product or hosted service": (
        "offer the software to the public as a product or service of its own" in readme_text
    ),
}
for name, result in checks.items():
    print(f"{name}: {'yes' if result else 'no'}")
PY

Repository: Thiritin/streaming

Length of output: 3681


Align the public license summaries with the rider.

  • LICENSE#L5-L7: Include the Section 3 exception for commercial companies acting for permitted organisations. Require written permission only for other business use, including offering the software as its own product or hosted service.
  • README.md#L140-L142: State the surplus and reasonable-pay condition. Include the same Section 3 exception and limit written permission to offering the software as its own commercial product or hosted service.
📍 Affects 2 files
  • LICENSE#L5-L7 (this comment)
  • README.md#L140-L142
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@LICENSE` around lines 5 - 7, Update the public license summaries in LICENSE
lines 5-7 and README.md lines 140-142: state the surplus and reasonable-pay
condition, include the Section 3 exception for commercial companies acting for
permitted organisations, and require written permission only for other business
use, including offering the software as its own commercial product or hosted
service.

Comment thread LICENSE
Comment on lines +9 to +13
It is licensed under the **PolyForm Noncommercial License 1.0.0**, reproduced in
full below, together with the **Convention and Education Rider** that follows.
The rider only adds permissions. It never takes away anything the PolyForm
licence grants, so if the rider and the PolyForm text disagree about whether
something is allowed, the more permissive reading wins.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu
printf '%s\n' '--- LICENSE files ---'
git ls-files | rg '(^|/)(LICENSE|COPYING)(\..*)?$|LICENSE'
printf '%s\n' '--- LICENSE outline ---'
wc -l LICENSE
printf '%s\n' '--- relevant license text ---'
cat -n LICENSE | sed -n '1,220p'
printf '%s\n' '--- references to rider and permission sections ---'
rg -n -i 'rider|permission|commercial|trademark|section [1-6]|PolyForm' --glob '!LICENSE' .

Repository: Thiritin/streaming

Length of output: 41307


🏁 Script executed:

#!/bin/bash
set -eu
python3 - <<'PY'
from pathlib import Path
import re

text = Path("LICENSE").read_text()
rider = text.split("# Convention and Education Rider", 1)[1].split("# PolyForm Noncommercial License 1.0.0", 1)[0]

sections = {}
for match in re.finditer(r"^## ([1-6])\. (.+)$", rider, re.MULTILINE):
    start = match.end()
    next_match = re.search(r"^## [1-6]\. .+$", rider[start:], re.MULTILINE)
    end = start + next_match.start() if next_match else len(rider)
    sections[match.group(1)] = (match.group(2), " ".join(rider[start:end].split()))

for number, (title, body) in sections.items():
    print(f"Section {number}: {title}")
    for phrase in (
        "permitted purpose",
        "permission",
        "not granted",
        "Ask for written permission first",
        "no rights",
        "Nothing here requires",
    ):
        if phrase.lower() in body.lower():
            print(f"  contains: {phrase}")
PY

Repository: Thiritin/streaming

Length of output: 650


Replace the blanket “more permissive reading wins” rule in LICENSE lines 11–13. Sections 4 and 6 withhold other uses and trademark rights. Limit rider changes to explicit permissions in Sections 1–6, state that no permission arises by implication, and obtain legal approval for the final precedence wording.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@LICENSE` around lines 9 - 13, Update the rider-precedence language in LICENSE
so it no longer applies a blanket “more permissive reading wins” rule: limit
rider modifications to explicit permissions in Sections 1–6, state that no
permission arises by implication, and preserve the restrictions and trademark
provisions in Sections 4 and 6. Obtain legal approval for the final precedence
wording.

Comment thread LICENSE
Comment on lines +17 to +20
Releases up to and including the last release before this file changed were
published under the GNU General Public License v3.0. That grant cannot be
withdrawn: anyone who received those versions keeps their rights under the GPL
for them. This licence governs later versions.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/sh
set -eu

git log --follow --format='%H %ad %s' --date=iso-strict -- LICENSE
git tag --sort=creatordate --format='%(creatordate:iso8601) %(refname:short)'

Repository: Thiritin/streaming

Length of output: 340


🏁 Script executed:

#!/bin/sh
set -eu

printf '%s\n' '--- LICENSE ---'
cat -n LICENSE

printf '%s\n' '--- README context ---'
sed -n '132,150p' README.md

printf '%s\n' '--- Relicensing commit metadata and affected-file patch ---'
git show --no-ext-diff --format=fuller --stat 0845ef931d9dbd38875e31ce4aa33002cfcc4bd5
git show --no-ext-diff --format= --find-renames 0845ef931d9dbd38875e31ce4aa33002cfcc4bd5 -- LICENSE README.md

printf '%s\n' '--- Repository release identifiers ---'
git tag --list
git for-each-ref --format='%(refname:short) %(objectname) %(objecttype)' refs/tags/
rg -n --hidden -g '!node_modules' -g '!dist' -g '!build' \
  'version|release|v[0-9]+\.[0-9]+|GPL|PolyForm|licen[cs]e' \
  package.json package-lock.json pyproject.toml Cargo.toml CHANGELOG* HISTORY* README.md LICENSE 2>/dev/null || true

Repository: Thiritin/streaming

Length of output: 50374


🏁 Script executed:

#!/bin/sh
set -eu

printf '%s\n' '--- Commit ancestry around the licence change ---'
git log --first-parent --format='%H %ad %s' --date=iso-strict --all --max-count=20

printf '%s\n' '--- All refs and release-like names ---'
git show-ref
git for-each-ref --format='%(refname) %(objectname)' refs/heads refs/remotes refs/tags

printf '%s\n' '--- Repository files likely to define releases ---'
git ls-files | rg -i '(^|/)(package\.json|.*(change|release|history|version|tag).*)$|(^|/)README(\..*)?$|(^|/)LICENSE(\..*)?$'

printf '%s\n' '--- Historical LICENSE and README content before the change ---'
git show 0845ef931d9dbd38875e31ce4aa33002cfcc4bd5^:LICENSE 2>/dev/null || true
git show 0845ef931d9dbd38875e31ce4aa33002cfcc4bd5^:README.md 2>/dev/null | sed -n '132,150p' || true

Repository: Thiritin/streaming

Length of output: 38196


🏁 Script executed:

#!/bin/sh
set -eu

printf '%s\n' '--- Version metadata ---'
for f in package.json composer.json; do
  if [ -f "$f" ]; then
    printf '%s\n' "--- $f ---"
    cat -n "$f" | sed -n '1,80p'
  fi
done

printf '%s\n' '--- Release-like commit subjects before relicensing ---'
git log 0845ef931d9dbd38875e31ce4aa33002cfcc4bd5^ \
  --format='%H %ad %s' --date=short |
  rg -i 'release|version|publish|tag|deploy' || true

printf '%s\n' '--- Boundary commit identity ---'
git show -s --format='commit=%H%nparent=%P%nauthor=%an%n date=%ad%nsubject=%s' \
  0845ef931d9dbd38875e31ce4aa33002cfcc4bd5
git show -s --format='commit=%H%n date=%ad%nsubject=%s' \
  0845ef931d9dbd38875e31ce4aa33002cfcc4bd5^

printf '%s\n' '--- Licence references in tracked files ---'
rg -n -i 'GNU General Public License|GPL-3\.0|PolyForm|licen[cs]e changed|release' \
  --glob '!LICENSE' --glob '!vendor/**' --glob '!node_modules/**' \
  $(git ls-files) 2>/dev/null || true

Repository: Thiritin/streaming

Length of output: 50375


🏁 Script executed:

#!/bin/sh
set -eu

python3 - <<'PY'
import json
for name in ("package.json", "composer.json"):
    try:
        with open(name) as f:
            data = json.load(f)
    except FileNotFoundError:
        continue
    print(f"{name}: version={data.get('version', '<absent>')}")
PY

printf '%s\n' '--- Release-like subjects before relicensing ---'
git log 0845ef931d9dbd38875e31ce4aa33002cfcc4bd5^ \
  --format='%H %ad %s' --date=short |
  grep -Ei 'release|version|publish|tag|deploy' || true

printf '%s\n' '--- Boundary commit identity ---'
git show -s --format='commit=%H%nparent=%P%nauthor=%an%n date=%ad%nsubject=%s' \
  0845ef931d9dbd38875e31ce4aa33002cfcc4bd5
git show -s --format='commit=%H%n date=%ad%nsubject=%s' \
  0845ef931d9dbd38875e31ce4aa33002cfcc4bd5^

printf '%s\n' '--- Relevant licence references outside generated or dependency files ---'
git grep -n -i -E 'GNU General Public License|GPL-3\.0|PolyForm|licen(c|s)e changed|release' -- \
  ':(exclude)LICENSE' \
  ':(exclude)*lock*' \
  ':(exclude)vendor/**' \
  ':(exclude)node_modules/**' \
  ':(exclude)resources/**' || true

Repository: Thiritin/streaming

Length of output: 50375


Define the GPL-to-PolyForm boundary with an immutable release identifier.

The last GPL snapshot is commit 1fc6b0ab5aede4e0607a68f882b0b3a9670ad5de, but it has no release tag. Create a release tag or version for that snapshot, and use the same identifier in LICENSE and README.md.

📍 Affects 2 files
  • LICENSE#L17-L20 (this comment)
  • README.md#L144-L144
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@LICENSE` around lines 17 - 20, Create an immutable release tag or version for
commit 1fc6b0ab5aede4e0607a68f882b0b3a9670ad5de, then update the boundary
statements in LICENSE (lines 17-20) and README.md (line 144) to use that same
identifier.

Comment thread LICENSE
Comment on lines +100 to +104
## 6. Names and logos

This licence covers the software. It grants no rights in the names, logos or
trade marks of the licensor or of any convention using the software. The logo
and branding an installation configures belong to whoever configured them.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
printf '%s\n' '--- LICENSE context ---'
sed -n '85,115p' LICENSE
printf '%s\n' '--- repository references to branding and licensing ---'
rg -n -i --glob '!node_modules' --glob '!dist' 'logo|branding|trademark|licen[cs]e|configured' . | head -200

Repository: Thiritin/streaming

Length of output: 23329


🌐 Web query:

Open-source license wording “The logo and branding an installation configures belong to whoever configured them” trademark ownership rights

💡 Result:

The specific wording “The logo and branding an installation configures belong to whoever configured them” is not a standard clause in open-source licenses and does not inherently grant or transfer trademark ownership rights. Trademark law and open-source software licensing operate under two different legal frameworks: 1. Trademark Rights vs. Software Licenses: Open-source software licenses (such as MIT, Apache 2.0, or GPL) govern the copyright of the code, allowing you to use, modify, and redistribute the software [1][2][3]. These licenses generally do not grant permission to use the original project’s trademarks, logos, or branding [1][2][3]. Trademark rights exist independently of copyright and are generally established through commercial use to identify the source of goods or services, not by the creation of the work or its inclusion in a software repository [4][5][6]. 2. Ownership of Custom Branding: The claim that branding “belongs to whoever configured them” reflects a practical understanding of white-labeling or customization features often found in enterprise or self-hosted software [7][8][9]. When a user configures an installation with their own custom logos or names, they are using their own assets (or assets they have the right to use) to identify their specific instance [7][8][9]. Because trademarks are acquired through use in commerce, an organization that applies its own branding to its installation generally holds the trademark rights to that custom brand, provided it is being used to identify the organization's own goods or services [4][6]. 3. Legal Risks of Informal Wording: The phrase you identified is ambiguous from a legal standpoint. If a software provider includes this language, it may be an attempt to clarify that they do not claim rights over the custom branding added by the end-user [7][8]. However, it does not override fundamental trademark law [4]. Trademark ownership is determined by who uses the mark in commerce to signify the source of the services [4][6]. If a user re-brands software, they must ensure they are not infringing on any existing trademarks of the original software creator or any other third parties [1][10][2]. In summary, you cannot rely on a software license clause to definitively transfer or establish trademark rights [5][11]. Trademark ownership depends on active, commercial use in the marketplace and clear documentation of that use, regardless of what a software configuration file might state [4][6]. If you are concerned about ownership of branding for a deployed instance, consult with intellectual property counsel to ensure your rights are properly established and protected [5][11].

Citations:


🏁 Script executed:

#!/bin/bash
printf '%s\n' '--- LICENSE opening and custom terms ---'
sed -n '1,55p' LICENSE
printf '%s\n' '--- CONTRIBUTING branding policy ---'
sed -n '35,48p' CONTRIBUTING.md

Repository: Thiritin/streaming

Length of output: 3508


Do not assign third-party branding to the configurator.

The final sentence states that configured branding belongs to the configurator. This conflicts with the preceding trademark disclaimer. State that configuration does not transfer ownership or trademark rights.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@LICENSE` around lines 100 - 104, Update the final sentence in the “Names and
logos” section to clarify that configuring branding does not transfer ownership
or trademark rights, rather than stating that the branding belongs to whoever
configured it.

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.

1 participant