Skip to content

mintpass: per-package licenses (web AGPL-3.0-or-later, challenge GPL-3.0-or-later, contracts MIT)#23

Open
tomcasaburi wants to merge 2 commits into
masterfrom
chore/per-package-licenses
Open

mintpass: per-package licenses (web AGPL-3.0-or-later, challenge GPL-3.0-or-later, contracts MIT)#23
tomcasaburi wants to merge 2 commits into
masterfrom
chore/per-package-licenses

Conversation

@tomcasaburi
Copy link
Copy Markdown
Member

@tomcasaburi tomcasaburi commented Jun 2, 2026

Sets a license per package — all open source. Supersedes #24 (we are keeping web/ public and forkable, not privatizing it).

Package License Why
web/ (mintpass.org site + API) AGPL-3.0-or-later Hosted web app. Open so anyone can fork/run their own MintPass; AGPL means a modified hosted version must publish its changes, so the verification layer stays open and can't be privatized. No secrecy reason to close it — its anti-sybil strength is phone scarcity + on-chain cost, not secret code.
challenge/ (@bitsocial/mintpass-challenge) GPL-3.0-or-later Depends on pkc-logger (GPL); matches every other challenge package in the org.
contracts/ (@bitsocial/mintpass-contracts) MIT On-chain code; .sol already SPDX-MIT. Maximizes auditability/integration.

Root LICENSE becomes a mixed-license explainer and root package.jsonUNLICENSED (dev-only monorepo root, mirrors spam-blocker). Adds per-directory LICENSE files.

Authorized by cofounder. Licensing strategy, not legal advice.


Note

Low Risk
Documentation and package metadata only; no runtime behavior changes. Downstream compliance implications (AGPL on hosted forks, GPL on challenge) are the main review focus, not engineering risk.

Overview
Replaces the monorepo-wide MIT license with per-package licensing and documents it in the root LICENSE and README.

web/ (mintpass.org site + API) is AGPL-3.0-or-later via new web/LICENSE and web/package.json. AGPL requires operators of modified hosted services to offer corresponding source.

challenge/ (@bitsocial/mintpass-challenge) moves from MIT to GPL-3.0-or-later with challenge/LICENSE and updated challenge/package.json, aligning with GPL dependencies such as pkc-logger.

contracts/ keeps MIT with a dedicated contracts/LICENSE and explicit license in contracts/package.json.

The root workspace is UNLICENSED in package.json (dev-only monorepo root, not a redistributable package). No application or contract logic changes—only legal metadata and license text files.

Reviewed by Cursor Bugbot for commit 846fcb1. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • Documentation

    • Updated root LICENSE and README files to reflect the mixed-license monorepo structure with component-specific license terms.
  • Chores

    • Added license files for web, challenge, and contracts components with their respective open-source license terms.
    • Updated package metadata across all components to declare appropriate license types.

challenge: MIT -> GPL-3.0-or-later. It depends on @pkcprotocol/pkc-logger (GPL-3.0-or-later) and matches every other challenge package in the org (flags/r9k/ai-moderation/evm-contract/voucher/captcha/spam-blocker), so its effective license is already GPL; MIT understated the obligations.

contracts: declare MIT explicitly (was inheriting the root MIT; .sol files are already SPDX MIT). MIT maximizes auditability/integration for on-chain code.

Adds per-directory LICENSE files. Authorized by cofounder / copyright holder.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 2, 2026

Review Change Stack

📝 Walkthrough

Walkthrough

The PR establishes a mixed-license monorepo by adding per-package license files and metadata fields. Root documentation is updated to explain the three-license structure, and each sub-package (web, challenge, contracts) declares its corresponding license (AGPL-3.0-or-later, GPL-3.0-or-later, MIT).

Changes

Mixed-License Monorepo Setup

Layer / File(s) Summary
Root monorepo license documentation
LICENSE, README.md, package.json
Root LICENSE replaced with mixed-license explanation pointing to sub-package license files; README.md license section updated to describe AGPL-3.0-or-later (web), GPL-3.0-or-later (challenge), and MIT (contracts); root package.json license field changed to UNLICENSED.
Web package AGPL-3.0-or-later license
web/LICENSE, web/package.json
web/LICENSE added with complete GNU Affero General Public License v3 text; web/package.json license field set to AGPL-3.0-or-later.
Challenge package GPL-3.0-or-later license
challenge/LICENSE, challenge/package.json
challenge/LICENSE added with complete GNU General Public License v3 text; challenge/package.json license field updated to GPL-3.0-or-later.
Contracts package MIT license
contracts/LICENSE, contracts/package.json
contracts/LICENSE added with MIT License text and Bitsocial copyright; contracts/package.json license field added with value MIT.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~20 minutes

Poem

A monorepo dressed in legal flair,
Three licenses, each one to declare,
Web wears AGPL with noble stride,
Challenge rides GPL with open pride,
Contracts keeps MIT, simple and bright,
Together they dance in the copyleft light! 🐰📜

🚥 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 specifically summarizes the main change: adding per-package licenses with their respective SPDX identifiers for web, challenge, and contracts packages.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/per-package-licenses

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

… root

Reverses the earlier plan to privatize web/. MintPass should be fully open and forkable -- we WANT people to run their own. Its anti-sybil strength is phone-number scarcity + on-chain NFT cost, not secret code, so there's no secrecy reason to close it (unlike spam-blocker/server, whose risk-scoring heuristics genuinely are the moat and stay private).

AGPL (not GPL) for the hosted web app: anyone can fork and run their own, but anyone running a MODIFIED MintPass service must publish their changes -- so the verification layer can't be privatized by a closed competitor. Bitsocial Forge still monetizes by operating the default mintpass.org.

- web/LICENSE: AGPLv3; web/package.json license -> AGPL-3.0-or-later
- LICENSE (root): mixed-license explainer (all open)
- package.json (root): MIT -> UNLICENSED (dev-only monorepo root)
- README: License section

End state: web AGPL-3.0-or-later, challenge GPL-3.0-or-later, contracts MIT -- all open.
@tomcasaburi tomcasaburi changed the title mintpass: per-package licenses (challenge → GPL-3.0-or-later, contracts → MIT) mintpass: per-package licenses (web AGPL-3.0-or-later, challenge GPL-3.0-or-later, contracts MIT) Jun 3, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
LICENSE (1)

1-10: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix stale MIT license text in generated docs.

llms-full.txt and web/public/llms-full.txt still include the ## License section stating MIT License — see [LICENSE](LICENSE). (~line 234), which conflicts with the mixed-license model described in the root LICENSE. Regenerate/update the generated llms-full.txt outputs so their embedded license section matches the new mixed-license structure.

🤖 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 1 - 10, The generated license sections in llms-full.txt
and web/public/llms-full.txt still embed a stale "MIT License — see
[LICENSE](LICENSE)" blurb; regenerate or update those files so their internal
"## License" section matches the monorepo's mixed-license model described in the
root LICENSE (showing per-package licensing for `web` (AGPL-3.0-or-later),
`challenge` (GPL-3.0-or-later), and `contracts` (MIT)), and ensure the text
references the root LICENSE and the package-specific LICENSE files consistently;
update the generator or regeneration command you used so future runs produce the
correct license block.
🤖 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.

Outside diff comments:
In `@LICENSE`:
- Around line 1-10: The generated license sections in llms-full.txt and
web/public/llms-full.txt still embed a stale "MIT License — see
[LICENSE](LICENSE)" blurb; regenerate or update those files so their internal
"## License" section matches the monorepo's mixed-license model described in the
root LICENSE (showing per-package licensing for `web` (AGPL-3.0-or-later),
`challenge` (GPL-3.0-or-later), and `contracts` (MIT)), and ensure the text
references the root LICENSE and the package-specific LICENSE files consistently;
update the generator or regeneration command you used so future runs produce the
correct license block.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 32a7a2d2-e74e-4785-ae48-7b7921c80820

📥 Commits

Reviewing files that changed from the base of the PR and between 7fdb537 and 846fcb1.

📒 Files selected for processing (9)
  • LICENSE
  • README.md
  • challenge/LICENSE
  • challenge/package.json
  • contracts/LICENSE
  • contracts/package.json
  • package.json
  • web/LICENSE
  • web/package.json

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