Repository navigation
RTOP-375: Relicense openplc-runtime under GPLv3 with a commercial option - #225
Merged
Merged
Conversation
…option The runtime moves from MIT to a dual licence: GPLv3 for everyone, and a commercial licence for commercial use, bought from the OpenPLC Editor at program upload. First-party SPDX headers change to GPL-3.0-or-later. Contributions are accepted under CLA.md: submitting a pull request means agreeing to it, the pull request template carries a checkbox, and a CLA check fails until outside contributors tick it. BREAKING CHANGE: the runtime is now licensed under GPLv3 or a commercial licence instead of MIT. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MRWeC5FUhe5ZwEEbLUGpZ6
…name Commercial use may need a commercial licence rather than always needing one. Contributors agree to the CLA by ticking its pull request checkbox, so nothing refers to a signed agreement. Legal texts name Autonomy Logic Inc., and the check runs as a job named CLA. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MRWeC5FUhe5ZwEEbLUGpZ6
Gustavohsdp
reviewed
Oct 20, 2026
Gustavohsdp
left a comment
There was a problem hiding this comment.
Review of RTOP-375 against its acceptance criteria.
Verified, no action needed
- AC1:
LICENSEis byte-identical to https://www.gnu.org/licenses/gpl-3.0.txt; no MIT SPDX header left. The header hunks change only the SPDX line (273 files) plus__license__and the drivers README. cJSON (MIT), Snap7 and the S7comm plugin (LGPL-3.0-or-later) are untouched. - AC4:
CONTRIBUTING.mdcovers the CLA, SPDX, third-party and GPLv3 rules and linksCLA.md. - The workflow passes the PR body through
envand not through${{ }}insiderun, so there is no script injection, and it runs with read-only permissions. The "no attack surface" justification holds. - No Jira key in commit messages, no new
typing.Any.
To address (inline comments below)
- The member bypass in
cla.ymldoes not trigger for organisation members whose membership is private, and that is most of the org. This PR's own CLA run took the "accepted" branch instead of "Organisation member". So AC3's "organisation members pass" is not met as written. LICENSING.mdmakes claims that go beyond AC2 (PLC programs falling under GPLv3 source obligations, licences bound to hardware, an editor notice that belongs to DOPE-731). Please confirm counsel approved this wording, or trim it to the AC2 text.CLA.mdcarries no version or date, and the template links the movingdevelopmentbranch. Nothing records which text a contributor agreed to.- Nit: new files must use "the Autonomy copyright line" (
Copyright (c) 2026 Autonomy®), but the CLA andLICENSING.mdname the licensor as Autonomy Logic Inc.
Open questions
- AC3 "required for merging": per the task this happens after merge. Who is turning on the required status check on
developmentandmain, and when? - Task item 3 (release as a new major version):
VERSIONis stillv4.3.1. Is the bump tracked in a separate PR? - AC3 end-to-end (PR from an outside account) was waived. Given point 1, please run it at least once from a non-member account and from a private-member account before making the check required.
1 task done
…aff, bump to 4.3.2 Licence identifiers name GPLv3 only, matching the CLA's GPLv3 commitment. The CLA is versioned so the checkbox records which text was accepted, and staff tick it too, since private org membership is not visible to the job. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MRWeC5FUhe5ZwEEbLUGpZ6
Contributor
Author
|
Answers to the open questions in the review:
Other changes in b642e74: every SPDX header reads |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MRWeC5FUhe5ZwEEbLUGpZ6
…evelopment Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MRWeC5FUhe5ZwEEbLUGpZ6
JoaoGSP
approved these changes
Oct 21, 2026
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
OpenPLC Runtime moves from MIT to a dual licence: GPLv3 for everyone, and a commercial licence for users who do not want the GPLv3 obligations.
LICENSEis the GPLv3 text; every first-party SPDX header readsGPL-3.0-only, and every Autonomy copyright line readsCopyright (c) 2026 Autonomy®(legal texts name the licensor Autonomy Logic Inc.).README License section and a new
LICENSING.md: the runtime is dual-licensed, commercial use may need a commercial licence, and licences are bought from the OpenPLC Editor at program upload.Contributions go under a Contributor License Agreement (
CLA.md): ticking the new checkbox in the PR template means agreeing to it, and aCLAjob fails until the box is ticked. Everyone ticks it, staff included; only bots pass without it.CLA.mdis versioned ("Version 1.0, 2026-10-21") and the checkbox names that version. The job reads only the PR event, with read-only permissions.VERSIONisv4.3.2.Out of scope: EtherDOG (stays GPLv3), third-party notices and Snap7 relinking (RTOP-326), STruC++ (RTOP-376), editor and baremetal runtime (DOPE-731).
Ticket
RTOP-375 — https://autonomylogic.atlassian.net/browse/RTOP-375
Small change, no Requirements Gathering: the task carries the specification. No Cybersecurity Risk Assessment: licence text and repository configuration only, no attack surface touched.
How it was tested
SPDX-License-Identifier: MITleft; every relicensed file carries the Autonomy copyright, and third-party files (cJSON, Snap7, the S7comm plugin) are untouched.LICENSEis byte-identical to the GPLv3 text.[x]and[X]and rejects an unticked box, an empty body and a mid-line match.Checklist
bash scripts/run-pytest.shpasses (not run: the change touches only header comments, docs and a new workflow)pre-commit runclean (not run, same reason).claude/review-guidelines.md)Contributor License Agreement
🤖 Generated with Claude Code
https://claude.ai/code/session_01MRWeC5FUhe5ZwEEbLUGpZ6