Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,7 @@
- [ ] `pre-commit run` clean
- [ ] Docs updated if behavior changed (README, CLAUDE.md, docs/)
- [ ] Follows the shared review process (summary in `.claude/review-guidelines.md`)

## Contributor License Agreement

- [ ] I have read and agree to the [Contributor License Agreement, version 1.0](https://github.com/autonomy-logic/openplc-runtime/blob/development/CLA.md)
28 changes: 28 additions & 0 deletions .github/workflows/cla.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: CLA

on:
pull_request:
types: [opened, edited, reopened, synchronize]

permissions:
contents: read

jobs:
cla:
name: CLA
runs-on: ubuntu-latest
steps:
- name: Check the Contributor License Agreement checkbox
env:
PR_BODY: ${{ github.event.pull_request.body }}
AUTHOR_TYPE: ${{ github.event.pull_request.user.type }}
run: |
if [ "$AUTHOR_TYPE" = "Bot" ]; then
echo "Bot account: CLA not required."; exit 0
fi
if printf '%s\n' "$PR_BODY" | grep -Eiq '^[[:space:]]*[-*][[:space:]]+\[x\][[:space:]]+I have read and agree to the \[?Contributor License Agreement'; then
echo "Contributor License Agreement accepted."
else
echo "::error::Tick the Contributor License Agreement checkbox in the pull request description (see CLA.md)."
exit 1
fi
49 changes: 49 additions & 0 deletions CLA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Contributor License Agreement

Version 1.0, 2026-10-21

Thank you for contributing to this project. This Contributor License Agreement ("Agreement") sets out the terms under which you contribute. You agree to it by ticking the Contributor License Agreement box when you submit a pull request to this repository. It covers that pull request and every later contribution you submit to this repository.

## 1. Definitions

- **"We"** or **"Us"** means Autonomy Logic Inc., the owner of this project.
- **"You"** means the individual who submits a Contribution.
- **"Contribution"** means any source code, documentation or other material You submit to this repository, for example through a pull request, including any later changes You make to it.
- **"Material"** means the software and documentation made available by Us in this repository, to which a Contribution may be added.

## 2. Ownership

You keep the copyright in your Contribution. This Agreement grants Us a licence; it does not transfer ownership.

## 3. Copyright licence

You grant Us a worldwide, non-exclusive, perpetual, irrevocable, royalty-free licence, with the right to sublicense through multiple tiers, to use, reproduce, modify, prepare derivative works of, display, perform, distribute and otherwise exploit your Contribution, alone or as part of the Material.

## 4. Patent licence

You grant Us, and every recipient of software distributed by Us, a worldwide, non-exclusive, perpetual, irrevocable, royalty-free patent licence to make, have made, use, sell, offer to sell, import and otherwise transfer your Contribution, alone or combined with the Material, under any patent claims You own or control that would be infringed by your Contribution or by its combination with the Material.

## 5. Outbound licensing

We may license your Contribution under any licence, including copyleft, permissive, commercial or proprietary licences. In addition, We will always make your Contribution available under the GNU General Public License version 3.

## 6. Your representations

You confirm that:

- the Contribution is your original work, or You otherwise have the right to submit it under this Agreement;
- if your employer or anyone else has rights in the Contribution, You have their permission to make it under this Agreement, or they have waived those rights;
- to your knowledge, the Contribution does not infringe anyone else's rights;
- You will tell Us if any of these statements stops being true.

## 7. No other obligations

You are not required to support your Contribution. Except as stated in section 6, You provide it "as is", without warranties or conditions of any kind. We are not required to use your Contribution.

## 8. General

This Agreement is governed by the laws of the State of Delaware, United States, excluding its conflict-of-law rules. If any provision is found unenforceable, the rest remains in effect. This Agreement is the complete agreement between You and Us about your Contributions.

---

This Agreement is based on the Harmony Individual Contributor License Agreement (HA-CLA-I), version 1.0, published at https://www.harmonyagreements.org under the Creative Commons Attribution 3.0 Unported licence, with outbound option five.
9 changes: 9 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Contributing

## Licensing and the Contributor License Agreement

OpenPLC Runtime is dual-licensed under the GPLv3 and a commercial licence (see `LICENSING.md`).

- **Contributor License Agreement.** By ticking the Contributor License Agreement checkbox in the pull request template, you agree that your contribution is licensed to Autonomy Logic Inc. under the terms of the [Contributor License Agreement](CLA.md). The CLA check fails until the box is ticked. You keep the copyright on your contribution.
- **Always available under the GPLv3.** Every contribution accepted here stays available under the GPLv3, in addition to the commercial licence.
- **SPDX header.** Every new source file starts with `SPDX-License-Identifier: GPL-3.0-only` and the Autonomy copyright line, as in the existing files.
- **Third-party code.** Do not add third-party code unless its licence is compatible with both the GPLv3 and the commercial licence. Ask in the pull request when in doubt.

## Setup

Requires Python 3.10+ and CMake 3.28+. Full environment guide: `docs/DEVELOPMENT.md`.
Expand Down
Loading
Loading