diff --git a/.github/workflows/cla-check.yml b/.github/workflows/cla-check.yml deleted file mode 100644 index 0e30952..0000000 --- a/.github/workflows/cla-check.yml +++ /dev/null @@ -1,104 +0,0 @@ -name: CLA Check - -on: - pull_request: - types: [opened, synchronize, reopened] - -permissions: - pull-requests: write - contents: read - -jobs: - cla-check: - runs-on: ubuntu-latest - if: "!contains(fromJSON('[\"app/dependabot\", \"app/renovate\", \"github-actions[bot]\"]'), github.event.pull_request.user.login)" - steps: - - name: Fetch & check CLA signature - id: check - run: | - # Fetch signatures.json directly from raw GitHub (public repo) - # Use wget as primary (handles 200-with-404-body better than curl) - wget -q -O signatures.json "https://raw.githubusercontent.com/codecoradev/.github/main/.cla/signatures.json" 2>/dev/null \ - || curl -sfL "https://raw.githubusercontent.com/codecoradev/.github/main/.cla/signatures.json" -o signatures.json 2>/dev/null \ - || echo '{"signatures":[]}' > signatures.json - # Validate JSON — if invalid, use empty - python3 -c "import json; json.load(open('signatures.json'))" 2>/dev/null \ - || echo '{"signatures":[]}' > signatures.json - python3 - << 'EOF' - import json, os - - author = os.environ["PR_AUTHOR"] - with open("signatures.json") as f: - data = json.load(f) - - signatures = data.get("signatures", []) - found = any( - s.get("github_username", "").lower() == author.lower() - for s in signatures - ) - - with open(os.environ["GITHUB_OUTPUT"], "a") as f: - f.write(f"signed={'true' if found else 'false'}\n") - - print(f"CLA signed by @{author}: {found}") - EOF - env: - PR_AUTHOR: ${{ github.event.pull_request.user.login }} - - - name: Comment on PR (same-repo, best effort) - if: steps.check.outputs.signed != 'true' && github.event.pull_request.head.repo.full_name == github.repository - continue-on-error: true - uses: actions/github-script@v9 - with: - script: | - const author = '${{ github.event.pull_request.user.login }}'; - const prNumber = ${{ github.event.pull_request.number }}; - - const body = [ - '## ⚠️ CodeCoraDev CLA Bot', - '', - `Hi @${author}! Thanks for your contribution.`, - '', - 'Before this PR can be reviewed, please sign our Contributor License Agreement:', - '', - '- 📋 **Individual?** → [Sign CLA Individual](https://codecoradev.github.io/cla/?type=individual)', - '- 🏢 **Corporate?** → [Sign CLA Corporate](https://codecoradev.github.io/cla/?type=corporate)', - '', - '---', - 'By signing, you agree to the terms in [CLA_INDIVIDUAL.md](https://github.com/codecoradev/.github/blob/main/CLA_INDIVIDUAL.md) or [CLA_CORPORATE.md](https://github.com/codecoradev/.github/blob/main/CLA_CORPORATE.md).', - ].join('\n'); - - // Find existing CLA bot comment - const comments = await github.rest.issues.listComments({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: prNumber, - }); - - const botComment = comments.data.find(c => - c.user.login === 'github-actions[bot]' && - c.body.includes('CodeCoraDev CLA Bot') - ); - - if (botComment) { - await github.rest.issues.updateComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: botComment.id, - body, - }); - } else { - await github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: prNumber, - body, - }); - } - - - name: Fail if not signed - if: steps.check.outputs.signed != 'true' - run: | - echo "::error title=CLA not signed::Sign the CodeCoraDev CLA at https://codecoradev.github.io/cla — once the signature PR is merged, this check turns green automatically (re-run it or wait ~1 hour)." - echo "❌ CLA not signed by ${{ github.event.pull_request.user.login }}" - exit 1 diff --git a/AGENTS.md b/AGENTS.md index ee1f7dd..e6abcc0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -18,8 +18,7 @@ code structure are in `AGENT.md`. - Branch names start with one of `feat/ fix/ docs/ chore/ perf/ security/ refactor/ test/ build/ ci/ release/`. - PR bodies contain `## What`, `## Why` and `## Testing`. -- Conventional Commits; the PR title becomes the squash message. Commits are - signed off (`git commit -s`) for the CLA. +- Conventional Commits; the PR title becomes the squash message. ## Gotchas diff --git a/CLA_CORPORATE.md b/CLA_CORPORATE.md deleted file mode 100644 index c69cc0b..0000000 --- a/CLA_CORPORATE.md +++ /dev/null @@ -1,154 +0,0 @@ -# CodeCoraDev Corporate Contributor License Agreement - -Based on the Apache Software Foundation Corporate CLA. - -This agreement is for **entities** (companies, organizations) that submit -contributions to CodeCoraDev projects on behalf of their employees or contractors. - ---- - -## Definitions - -- **"You"** / **"Corporation"** — the entity submitting the Contribution. -- **"Contribution"** — any original work of authorship, including source code, - documentation, tests, configurations, design assets, or other materials that - are intentionally submitted by the Corporation to CodeCoraDev for inclusion in - any CodeCoraDev-owned project. -- **"CodeCoraDev"** — the project maintainer (Anaz S. Aji / @ajianaz), and their - successors, assigns, affiliates, and any legal entity they establish to operate - the Project, operating the repositories under the - [github.com/codecoradev](https://github.com/codecoradev) organization. -- **"Project"** — any open-source project maintained by CodeCoraDev. -- **"Designated Individual(s)"** — the employee(s) or agent(s) authorized to - submit Contributions on behalf of the Corporation. - ---- - -## 1. Copyright License - -Corporation grants CodeCoraDev a **perpetual, worldwide, non-exclusive, no-charge, -royalty-free, irrevocable** copyright license to reproduce, prepare derivative -works of, publicly display, publicly perform, sublicense (including under -proprietary and commercial licenses), and distribute the Contributions of the -Designated Individual(s). - -For the avoidance of doubt, CodeCoraDev may exercise this license under the -Project's current license, or under any other license of CodeCoraDev's choosing, -including but not limited to proprietary, commercial, or copyleft licenses. - -## 2. Patent License - -Corporation grants CodeCoraDev 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 Contributions of the Designated -Individual(s), where such patent license applies only to those patent claims -licensable by Corporation that are necessarily infringed by the Contribution(s) -alone or by combination of the Contribution(s) with the Project. - -If any entity institutes patent litigation against Corporation or any other entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the -Contribution, or the Project to which the Contribution was submitted, constitutes -direct or contributory patent infringement, then **all patent licenses granted -under this Agreement to that entity** shall terminate as of the date such -litigation is filed. - -This patent license does not extend to any patents of third parties. Corporation -makes no representation that Contributions are free from infringement of -third-party patents. - -## 3. Authority - -Corporation represents that each Designated Individual is authorized to submit -Contributions on Corporation's behalf, and that Corporation has the right to grant -the licenses in Sections 1 and 2. - -## 4. Original Work - -Corporation represents that each Contribution is the original work of the -Designated Individual(s). Corporation represents that Contribution submissions -include complete details of any third-party license or other restriction -(including, but not limited to, related patents and trademarks) of which -Corporation knows or has reason to know and which are associated with any part of -the Contributions. - -## 5. No Compensation - -Corporation acknowledges that CodeCoraDev is a community-driven, open-source -project. **All contributions are voluntary and unpaid.** CodeCoraDev does not -offer bounties, payments, equity, or other compensation for contributions unless -explicitly stated in a separate written agreement. - -Nothing in this Agreement creates an employment, agency, partnership, or joint -venture relationship between Corporation and CodeCoraDev. Corporation acknowledges -that CodeCoraDev may commercially exploit the Project (including through -proprietary or cloud-based products) without any obligation of accounting, -profit-sharing, or additional compensation to Corporation. - -## 6. Moral Rights - -To the extent permitted by applicable law, Corporation waives any moral rights of -its Designated Individual(s) to the extent necessary to enable CodeCoraDev to -exercise the licenses granted in Section 1, and Corporation agrees not to assert -moral rights against CodeCoraDev or its licensees. - -## 7. No Obligation - -CodeCoraDev is not obligated to accept, use, or maintain any Contribution. -CodeCoraDev reserves the right to remove, modify, or relicense Contributions at -its discretion. - -## 8. Disclaimer - -Except for the express warranties in Sections 3 and 4, Corporation provides -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. - -In no event shall CodeCoraDev be liable for any direct, indirect, incidental, -special, exemplary, or consequential damages arising out of or relating to this -Agreement or the use of Contributions, even if CodeCoraDev has been advised of the -possibility of such damages. - -## 9. Governing Law and Dispute Resolution - -(a) This Agreement shall be governed by and construed in accordance with the laws -of the **Republic of Indonesia**, without regard to its conflict of laws provisions. - -(b) Any dispute, controversy, or claim arising out of or relating to this -Agreement, including the breach, termination, or validity thereof, shall be -finally resolved by arbitration administered by the **Singapore International -Arbitration Centre (SIAC)** in accordance with the SIAC Rules of Arbitration in -force at the time of the commencement of the arbitration. The seat of arbitration -shall be Singapore. The number of arbitrators shall be one. The language of the -arbitration shall be English. - -(c) Notwithstanding the foregoing, CodeCoraDev may seek interim or injunctive -relief in any court of competent jurisdiction to protect its intellectual property -rights. - -(d) Judgment upon the award rendered by the arbitrator(s) may be entered in any -court having jurisdiction thereof. - ---- - -## Signing - -Corporation may sign this agreement electronically through CLAassistant or -equivalent system when configured on the repository. - -For offline signing, contact: hello@codecora.dev - ---- - -## Miscellaneous - -This Agreement constitutes the entire agreement between the parties regarding its -subject matter. If any provision is held unenforceable, the remainder shall remain -in effect. CodeCoraDev may amend this Agreement; amended terms apply prospectively -to new Contributions. This Agreement may be assigned by CodeCoraDev to any -successor or affiliate. Grants made prior to termination survive in perpetuity. - ---- - -*Version 1.1 — August 2026* diff --git a/CLA_INDIVIDUAL.md b/CLA_INDIVIDUAL.md deleted file mode 100644 index 540ad10..0000000 --- a/CLA_INDIVIDUAL.md +++ /dev/null @@ -1,162 +0,0 @@ -# CodeCoraDev Individual Contributor License Agreement - -Based on the Apache Software Foundation Individual CLA. - -Thank you for your interest in CodeCoraDev projects. This agreement clarifies the -terms under which you contribute code, documentation, and other materials to -CodeCoraDev-owned open-source projects. - -This is a **license agreement**, not a copyright assignment. You retain ownership -of your contributions. - ---- - -## Definitions - -- **"You"** — the individual submitting the Contribution. -- **"Contribution"** — any original work of authorship, including source code, - documentation, tests, configurations, design assets, or other materials that - are intentionally submitted by You to CodeCoraDev for inclusion in any - CodeCoraDev-owned project. -- **"CodeCoraDev"** — the project maintainer (Anaz S. Aji / @ajianaz), and their - successors, assigns, affiliates, and any legal entity they establish to operate - the Project, operating the repositories under the - [github.com/codecoradev](https://github.com/codecoradev) organization. -- **"Project"** — any open-source project maintained by CodeCoraDev, including but - not limited to Cora, Uteke, Trapfall, Rungu, and others. - ---- - -## 1. Copyright License - -You grant CodeCoraDev a **perpetual, worldwide, non-exclusive, no-charge, -royalty-free, irrevocable** copyright license to reproduce, prepare derivative -works of, publicly display, publicly perform, sublicense (including under -proprietary and commercial licenses), and distribute your Contributions and such -derivative works. - -For the avoidance of doubt, CodeCoraDev may exercise this license under the -Project's current license, or under any other license of CodeCoraDev's choosing, -including but not limited to proprietary, commercial, or copyleft licenses. - -## 2. Patent License - -You grant CodeCoraDev 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 your Contributions, where such patent 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 submitted the Contribution, constitutes -direct or contributory patent infringement, then **all patent licenses granted -under this Agreement to that entity** shall terminate as of the date such -litigation is filed. - -This patent license is personal to You and does not extend to any patents of -third parties. You make no representation that your Contributions are free from -infringement of third-party patents. - -## 3. Original Work and Employer Authorization - -You represent that each of your Contributions is your original work. You represent -that your Contribution submissions include complete details of any third-party -license or other restriction (including, but not limited to, related patents and -trademarks) of which you are personally aware and which are associated with any -part of your Contributions. - -If you are employed, you represent that your employer has consented to or does not -claim ownership of your Contributions, or that you are submitting with your -employer's authorization. - -## 4. No Compensation - -You acknowledge that CodeCoraDev is a community-driven, open-source project -maintained by a solo founder. **All contributions are voluntary and unpaid.** -CodeCoraDev does not offer bounties, payments, equity, or other compensation for -contributions unless explicitly stated in a separate written agreement. - -Nothing in this Agreement creates an employment, agency, partnership, or joint -venture relationship between You and CodeCoraDev. You acknowledge that -CodeCoraDev may commercially exploit the Project (including through proprietary -or cloud-based products) without any obligation of accounting, profit-sharing, -or additional compensation to You. - -## 5. Moral Rights - -You retain all moral rights in your Contributions. However, you waive any moral -rights to the extent necessary to enable CodeCoraDev to exercise the licenses -granted in Section 1, including the right to make derivative works and to -distribute Contributions under proprietary or commercial licenses, and you agree -not to assert moral rights against CodeCoraDev or its licensees. - -## 6. No Obligation - -CodeCoraDev is not obligated to accept, use, or maintain any Contribution. -CodeCoraDev reserves the right to remove, modify, or relicense Contributions at -its discretion. - -## 7. Disclaimer - -Except for the express warranties in Sections 3 and 4, 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. - -In no event shall CodeCoraDev be liable for any direct, indirect, incidental, -special, exemplary, or consequential damages arising out of or relating to this -Agreement or the use of your Contributions, even if CodeCoraDev has been advised -of the possibility of such damages. - -## 8. Governing Law and Dispute Resolution - -(a) This Agreement shall be governed by and construed in accordance with the laws -of the **Republic of Indonesia**, without regard to its conflict of laws provisions. - -(b) Any dispute, controversy, or claim arising out of or relating to this -Agreement, including the breach, termination, or validity thereof, shall be -finally resolved by arbitration administered by the **Singapore International -Arbitration Centre (SIAC)** in accordance with the SIAC Rules of Arbitration in -force at the time of the commencement of the arbitration. The seat of arbitration -shall be Singapore. The number of arbitrators shall be one. The language of the -arbitration shall be English. - -(c) Notwithstanding the foregoing, CodeCoraDev may seek interim or injunctive -relief in any court of competent jurisdiction to protect its intellectual property -rights. - -(d) Judgment upon the award rendered by the arbitrator(s) may be entered in any -court having jurisdiction thereof. - ---- - -## Signing - -By submitting a pull request, issue, code contribution, or other material to any -CodeCoraDev repository, **and including a `Signed-off-by:` line in your commit -message**, you agree to the terms of this agreement. The `Signed-off-by:` line -shall be in the format: `Signed-off-by: Your Name ` and -constitutes your electronic signature. - -If a Contributor License Agreement bot (e.g., CLAassistant) is configured on the -repository, you may be asked to sign this agreement electronically through that -system. - ---- - -## Miscellaneous - -This Agreement constitutes the entire agreement between the parties regarding its -subject matter. If any provision is held unenforceable, the remainder shall remain -in effect. CodeCoraDev may amend this Agreement; amended terms apply prospectively -to new Contributions. This Agreement may be assigned by CodeCoraDev to any -successor or affiliate. Grants made prior to termination survive in perpetuity. -You may terminate this Agreement with 30 days written notice; existing grants -survive termination. - ---- - -*Version 1.1 — August 2026* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0297831..2b38c3d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,10 +6,6 @@ This document helps you decide *whether* and *how* to contribute in a way that's > ### 📋 Contribution Terms > -> By submitting a contribution, you agree to the terms in [CLA_INDIVIDUAL.md](CLA_INDIVIDUAL.md) (for individuals) or [CLA_CORPORATE.md](CLA_CORPORATE.md) (for employees contributing on behalf of their employer). -> -> **TL;DR:** You retain copyright. You grant CodeCoraDev a license to use your contribution — including in commercial products. Contributions are voluntary and unpaid. If you prefer not to sign, that's okay — but your PR cannot be merged. -> > All commits must include `Signed-off-by: Your Name ` (same format as `git commit -s`). ## How this project is run @@ -296,10 +292,8 @@ work), you agree that: does not offer bounties, payments, or equity for contributions unless explicitly stated in a separate written agreement. -2. **License Grant:** You grant CodeCoraDev a perpetual, worldwide, - non-exclusive, royalty-free license to use, modify, and distribute your - contribution under the project's open-source license and any future license - that CodeCoraDev may adopt (including proprietary/commercial licenses). +2. **License Grant:** You license your contribution to the project under the + Apache-2.0 license (inbound = outbound); no copyright assignment and no CLA. 3. **Original Work:** Your contribution is your original work or properly attributed third-party work under a compatible license. @@ -307,11 +301,6 @@ work), you agree that: 4. **No Obligation:** CodeCoraDev is not obligated to accept, use, or maintain any contribution. -A Contributor License Agreement (CLA) is required for contributions to be -merged. See [CLA_INDIVIDUAL.md](CLA_INDIVIDUAL.md) or -[CLA_CORPORATE.md](CLA_CORPORATE.md) for details. - ## License -By contributing you agree your work is licensed under [Apache-2.0](LICENSE). -A CLA is required — see [CLA_INDIVIDUAL.md](CLA_INDIVIDUAL.md). +Contributions are licensed to the project under the Apache-2.0 license (inbound = outbound). No additional agreement is required.