feat: Add Contributor License Agreements (CLA) for individual and corporate contributors with automated enforcement.

This commit is contained in:
abdullahalam123
2025-12-05 14:57:35 +05:30
parent e0381e6aa0
commit 5e23a7e77e
6 changed files with 357 additions and 0 deletions

18
.github/cla.json vendored Normal file
View File

@@ -0,0 +1,18 @@
{
"name": "BentoPDF CLA",
"text": [
"Thank you for your contribution to BentoPDF!",
"",
"By signing this CLA, you agree to the terms of our Contributor License Agreement.",
"",
"**Individual Contributors**: Please review and sign our [Individual CLA (ICLA)](ICLA.md)",
"",
"**Corporate Contributors**: If you are contributing on behalf of your employer, please have your organization sign our [Corporate CLA (CCLA)](CCLA.md) by contacting contact@bentopdf.com"
],
"notes": {
"purpose": "This CLA enables BentoPDF's dual licensing model (AGPL-3.0 + commercial license)",
"icla_url": "https://github.com/alam00000/bentopdf/blob/main/ICLA.md",
"ccla_url": "https://github.com/alam00000/bentopdf/blob/main/CCLA.md",
"contact": "contact@bentopdf.com"
}
}

View File

@@ -33,6 +33,7 @@ Please describe **how you tested your changes** so that maintainers can verify t
### Checklist:
- [ ] I have signed the [Contributor License Agreement (CLA)](ICLA.md) or my organization has signed the [Corporate CLA](CCLA.md)
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas

70
.github/workflows/cla.yml vendored Normal file
View File

@@ -0,0 +1,70 @@
name: "CLA Assistant"
on:
issue_comment:
types: [created]
pull_request_target:
types: [opened, closed, synchronize]
# Permissions needed for the workflow
permissions:
actions: write
contents: read
pull-requests: write
statuses: write
jobs:
cla-check:
runs-on: ubuntu-latest
steps:
- name: "CLA Assistant"
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
uses: cla-assistant/github-action@v2.5.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PERSONAL_ACCESS_TOKEN: ${{ secrets.CLA_ASSISTANT_TOKEN }}
with:
# Path to the CLA document(s)
path-to-signatures: 'signatures/cla.json'
path-to-document: 'https://github.com/${{ github.repository }}/blob/main/ICLA.md'
# Branch to store signatures
branch: 'main'
# Allowlist for bot accounts (won't need to sign CLA)
allowlist: 'bot*,*[bot],dependabot*,renovate*,github-actions*'
# Custom messages
custom-notsigned-prcomment: |
## CLA Signature Required
Thank you for your contribution! Before we can accept your pull request, you need to sign our [Contributor License Agreement (CLA)](https://github.com/${{ github.repository }}/blob/main/ICLA.md).
### Why do we need a CLA?
BentoPDF uses a dual licensing model (AGPL-3.0 for open source + commercial license). The CLA allows us to:
- Include your contributions in both open source and commercial versions
- Protect you and us legally
- Keep the project sustainable
### How to sign
To sign the CLA, please comment on this PR with:
```
I have read the CLA Document and I hereby sign the CLA
```
**For corporate contributions**, please have your organization sign our [Corporate CLA (CCLA)](https://github.com/${{ github.repository }}/blob/main/CCLA.md) by contacting us at contact@bentopdf.com.
---
⚠️ **Note**: You only need to sign the CLA once. Future contributions to this repository will not require re-signing.
custom-pr-sign-comment: 'I have read the CLA Document and I hereby sign the CLA'
# Lock PR while waiting for CLA signature
lock-pullrequest-aftermerge: false
# Use issues to store signatures (alternative to branch storage)
use-dco-flag: false

140
CCLA.md Normal file
View File

@@ -0,0 +1,140 @@
# BentoPDF Corporate Contributor License Agreement (CCLA)
Thank you for your organization's interest in contributing to BentoPDF. This Corporate Contributor License Agreement ("Agreement") documents the rights granted by corporate contributors to the Project.
By signing this Agreement, you accept and agree to the following terms and conditions for your organization's present and future Contributions submitted to the Project.
## 1. Definitions
**"You" (or "Your")** means the legal entity on behalf of which this Agreement is being entered into.
**"Contributor"** means any employee, contractor, or authorized agent of You who submits Contributions on Your behalf.
**"Contribution"** means any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You or any of Your Contributors to the Project for inclusion in, or documentation of, the Project. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Project or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of discussing and improving the Project.
**"Project"** means the BentoPDF software project and all associated repositories, documentation, and related materials maintained at https://github.com/alam00000/bentopdf.
**"Project Owner"** means the owners and maintainers of the Project.
## 2. Grant of Copyright License
Subject to the terms and conditions of this Agreement, You hereby grant to the Project Owner and to recipients of software distributed by the Project Owner a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to:
- Reproduce, prepare derivative works of, publicly display, publicly perform, and distribute Contributions made by You and Your Contributors, and such derivative works
- Sublicense any or all of the foregoing rights to third parties
- **Relicense Contributions under any license**, including but not limited to proprietary licenses, commercial licenses, or any other open source license
This grant specifically enables the Project Owner to offer commercial licenses of the Project incorporating Your Contributions, consistent with the Project's dual licensing model (AGPL-3.0 for open source use, and a separate commercial license for proprietary use).
## 3. Grant of Patent License
Subject to the terms and conditions of this Agreement, You hereby grant to the Project Owner and to recipients of software distributed by the Project Owner a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Contribution, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Project to which such Contribution(s) was submitted.
If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that Your Contribution, or the Project to which You have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Project shall terminate as of the date such litigation is filed.
## 4. Authorized Contributors
You are responsible for:
a) Identifying the initial list of Contributors authorized to submit Contributions on Your behalf by listing them in Schedule A below
b) Keeping the list of authorized Contributors current by notifying the Project Owner when Contributors should be added or removed
c) Ensuring that all authorized Contributors are aware of and comply with the terms of this Agreement
All Contributions made by Your authorized Contributors shall be deemed to be made on Your behalf and subject to this Agreement.
## 5. Representations and Warranties
You represent and warrant that:
a) **Authority**: You are legally entitled to grant the above licenses and have the authority to bind the legal entity You represent. You have taken all necessary corporate action to authorize the execution of this Agreement.
b) **Contributor Authorization**: Each Contributor identified by You is authorized to submit Contributions on Your behalf.
c) **Originality**: Each Contribution is Your organization's original creation, or You have sufficient rights to submit the Contribution on behalf of the original authors.
d) **Third-Party Rights**: Your Contributions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which You are aware and which are associated with any part of Your Contributions.
e) **No Conflicting Obligations**: Your Contributions do not violate any agreement or obligation You have with any third party.
f) **Accuracy**: All information You provide in connection with this Agreement and Your Contributions is accurate and complete.
## 6. Moral Rights Waiver
To the fullest extent permitted under applicable law, You hereby waive, and agree to cause Your Contributors to waive, any and all moral rights in or relating to Contributions, including without limitation:
- The right of attribution
- The right of integrity
- The right to object to derogatory treatment
- Any similar rights existing under the laws of any jurisdiction
You acknowledge that the Project Owner may modify, adapt, translate, or otherwise change Contributions without consent and without attribution.
## 7. No Revocation
**This license grant is irrevocable.** Once a Contribution has been submitted under this Agreement, You may not revoke or withdraw the licenses granted herein. The Project Owner and all downstream recipients may continue to use, distribute, modify, and sublicense Contributions indefinitely.
## 8. Retention of Copyright
You retain all right, title, and interest in and to the copyright of Your Contributions. Nothing in this Agreement is intended to transfer ownership of Your Contributions to the Project Owner. You are free to use Your Contributions for any other purpose.
## 9. No Obligation
You understand that the decision to include any Contribution in any project or source repository is entirely at the discretion of the Project Owner. The Project Owner is under no obligation to accept, use, or include any Contribution.
## 10. Support and Warranty Disclaimer
Unless required by applicable law or agreed to in writing, You provide Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
You are not expected to provide support for Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all.
## 11. Notification
You agree to notify the Project Owner of any facts or circumstances of which You become aware that would make any of Your representations in this Agreement inaccurate in any respect.
## 12. Governing Law
This Agreement shall be governed by and construed in accordance with the laws of India, without regard to its conflict of law provisions.
---
## Signature
By signing this Agreement, You confirm that You have the authority to bind the legal entity named below, and that entity agrees to the terms of this Corporate Contributor License Agreement.
**Legal Entity Name:** ___________________________
**Address:** ___________________________
**Point of Contact Name:** ___________________________
**Point of Contact Email:** ___________________________
**Point of Contact Phone:** ___________________________
**Signature:** ___________________________
**Title:** ___________________________
**Date:** ___________________________
---
## Schedule A: Authorized Contributors
The following individuals are authorized to submit Contributions to the Project on behalf of the above-named legal entity:
| Full Name | GitHub Username | Email Address | Date Added |
|-----------|-----------------|---------------|------------|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
*Add additional rows as needed. To update this list, contact the Project Owner at contact@bentopdf.com*
---
*This CLA is based on the Apache Corporate Contributor License Agreement and has been adapted for BentoPDF's dual licensing model.*

View File

@@ -6,6 +6,34 @@ This document outlines how to contribute, report issues, and get involved in the
---
## Contributor License Agreement (CLA)
Before we can accept your contributions, you must sign our Contributor License Agreement (CLA). This is required because BentoPDF uses a dual licensing model:
- **AGPL-3.0** for open source use
- **Commercial license** for proprietary use
The CLA ensures we can include your contributions in both versions of the project.
### For Individual Contributors
Sign our [Individual Contributor License Agreement (ICLA)](ICLA.md). When you submit your first pull request, the CLA Assistant bot will automatically ask you to sign by commenting on the PR.
### For Corporate Contributors
If you are contributing on behalf of your employer, your organization needs to sign our [Corporate Contributor License Agreement (CCLA)](CCLA.md). Please contact us at [contact@bentopdf.com](mailto:contact@bentopdf.com) to arrange corporate CLA signing.
### What the CLA Grants
By signing the CLA, you:
- Grant us a broad copyright license to use, modify, and relicense your contributions (including for commercial use)
- Grant a patent license for any patents covering your contribution
- Represent that you have the authority to make the contribution
- Retain full copyright ownership of your contributions
---
## 1. How to Contribute
You can contribute in several ways:

100
ICLA.md Normal file
View File

@@ -0,0 +1,100 @@
# BentoPDF Individual Contributor License Agreement (ICLA)
Thank you for your interest in contributing to BentoPDF. This Individual Contributor License Agreement ("Agreement") documents the rights granted by contributors to the Project.
By signing this Agreement, you accept and agree to the following terms and conditions for your present and future Contributions submitted to the Project.
## 1. Definitions
**"You" (or "Your")** means the individual who is signing this Agreement and submitting Contributions to the Project.
**"Contribution"** means any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to the Project for inclusion in, or documentation of, the Project. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Project or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of discussing and improving the Project.
**"Project"** means the BentoPDF software project and all associated repositories, documentation, and related materials maintained at https://github.com/alam00000/bentopdf.
**"Project Owner"** means the owners and maintainers of the Project.
## 2. Grant of Copyright License
Subject to the terms and conditions of this Agreement, You hereby grant to the Project Owner and to recipients of software distributed by the Project Owner a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to:
- Reproduce, prepare derivative works of, publicly display, publicly perform, and distribute Your Contributions and such derivative works
- Sublicense any or all of the foregoing rights to third parties
- **Relicense Your Contributions under any license**, including but not limited to proprietary licenses, commercial licenses, or any other open source license
This grant specifically enables the Project Owner to offer commercial licenses of the Project incorporating Your Contributions, consistent with the Project's dual licensing model (AGPL-3.0 for open source use, and a separate commercial license for proprietary use).
## 3. Grant of Patent License
Subject to the terms and conditions of this Agreement, You hereby grant to the Project Owner and to recipients of software distributed by the Project Owner a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Contribution, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Project to which such Contribution(s) was submitted.
If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that Your Contribution, or the Project to which You have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Project shall terminate as of the date such litigation is filed.
## 4. Representations and Warranties
You represent and warrant that:
a) **Authority**: You are legally entitled to grant the above licenses. If Your employer(s) has rights to intellectual property that You create, You represent that You have received permission to make Contributions on behalf of that employer, that Your employer has waived such rights for Your Contributions, or that Your employer has executed a separate Corporate CLA with the Project.
b) **Originality**: Each of Your Contributions is Your original creation. You represent that Your Contributions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which You are aware and which are associated with any part of Your Contributions.
c) **No Conflicting Obligations**: Your Contribution does not violate any agreement or obligation You have with any third party.
d) **Accuracy**: All information You provide in connection with this Agreement and Your Contributions is accurate and complete.
## 5. Moral Rights Waiver
To the fullest extent permitted under applicable law, You hereby waive, and agree not to assert, any and all moral rights You may have in or relating to Your Contributions, including without limitation:
- The right of attribution
- The right of integrity
- The right to object to derogatory treatment
- Any similar rights existing under the laws of any jurisdiction
You acknowledge that the Project Owner may modify, adapt, translate, or otherwise change Your Contributions without Your consent and without attribution.
## 6. No Revocation
**This license grant is irrevocable.** Once You have submitted a Contribution under this Agreement, You may not revoke or withdraw the licenses granted herein. The Project Owner and all downstream recipients may continue to use, distribute, modify, and sublicense Your Contribution indefinitely.
## 7. Retention of Copyright
You retain all right, title, and interest in and to the copyright of Your Contributions. Nothing in this Agreement is intended to transfer ownership of Your Contributions to the Project Owner. You are free to use Your Contributions for any other purpose.
## 8. No Obligation
You understand that the decision to include Your Contribution in any project or source repository is entirely at the discretion of the Project Owner. The Project Owner is under no obligation to accept, use, or include any Contribution.
## 9. Support and Warranty Disclaimer
Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all.
## 10. Notification
You agree to notify the Project Owner of any facts or circumstances of which You become aware that would make any of Your representations in this Agreement inaccurate in any respect.
## 11. Governing Law
This Agreement shall be governed by and construed in accordance with the laws of India, without regard to its conflict of law provisions.
---
## Signature
By submitting a pull request or other Contribution to the Project, and by typing your name and date below (or by signing electronically via CLA Assistant), you agree to the terms of this Individual Contributor License Agreement.
**Full Legal Name:** ___________________________
**GitHub Username:** ___________________________
**Email Address:** ___________________________
**Date:** ___________________________
**Signature:** ___________________________
---
*This CLA is based on the Apache Individual Contributor License Agreement and has been adapted for BentoPDF's dual licensing model.*