DR-003: GPL-3.0 License Choice
Date: 2025-01-15
Status: Active
Author: Sunchuangyu "Rin" Huang
Context
As a publicly released personal productivity tool, Gmail Labeler needs a license. The choice affects:
- Derivative works - can others build commercial products on this codebase?
- Contribution model - what terms do contributors agree to?
- Philosophical alignment - what values does the license signal?
This is a personal project, not commercial software. The goal is to share a useful tool and demonstrate AI agent skill design, not to monetize or restrict use.
Decision
Use GPL-3.0 (GNU General Public License v3.0) - strong copyleft.
Key implications:
- Users can: use, modify, distribute (including commercially)
- Users must: keep the same GPL-3.0 license on derivative works, provide source code, state changes
- Patent grant: explicit patent license from contributors
- Anti-tivoization: modifications must remain user-installable (no locked-down hardware)
Options Considered
Option 1: MIT / Apache 2.0 (permissive)
- Pro: Maximum freedom - anyone can do anything, including proprietary forks
- Con: Someone could take the code, improve it, and close the improvements; community doesn't benefit from derivatives
Option 2: AGPL-3.0 (network copyleft)
- Pro: Even stronger copyleft - SaaS deployments must share source
- Con: Overkill for a personal productivity script; most users run locally, not as a service
Option 3: Creative Commons (e.g., CC BY-SA 4.0)
- Pro: Familiar license, share-alike preserved
- Con: CC licenses are for creative works, not software; no patent grant, no warranty disclaimer
Option 4: Custom license / all rights reserved
- Pro: Maximum control
- Con: No one will contribute; unclear legal terms; not OSI-approved
Option 5: Public domain / CC0
- Pro: Absolute freedom, no restrictions
- Con: No protections; can be incorporated into proprietary software with no attribution
Why
GPL-3.0 aligns with the project's values:
-
Share-alike principle: If you improve this tool, others should benefit. The classification rules, the skill design, the provider taxonomy - these are useful beyond one person's inbox. GPL ensures derivatives stay open.
-
Not a commercial product: This is a personal project shared publicly. I'm not selling it, so I have no reason to allow proprietary forks. If someone wants to commercialize it, GPL requires they also open-source their version.
-
Contribution clarity: GPL is well-understood. Contributors know the terms upfront. No CLA (Contributor License Agreement) needed.
-
Patent protection: Explicit patent grant protects users from contributor patent claims.
-
Philosophical fit: Gmail Labeler is built on open-source AI models, open-source MCP servers, open-source libraries. Giving back to the commons via copyleft is consistent with that foundation.
Why not AGPL? The skill runs locally via Claude Code / Cursor, not as a hosted service. Network copyleft adds complexity without benefit.
What Happened
Since release (2 months):
- 0 requests to relicense (as expected for a small personal project)
- 0 GPL violations detected (also expected - not widely used yet)
- 1 contribution (via PR) - contributor accepted GPL-3.0 terms implicitly by submitting
Community feedback:
- No complaints
- One user asked "can I use this at work?" - answer: yes, GPL allows commercial use; your employer must comply if they distribute a modified version (internal use only = no obligation)
What I'd change
-
Add a FAQ section in README covering:
- "Can I use this commercially?" (yes)
- "Can I fork and modify?" (yes, must stay GPL)
- "Do I need to share if I add personal rules?" (only if you distribute; private use has no obligation)
-
Contributor guidelines - formalize a
CONTRIBUTING.mdstating:- By submitting a PR, you agree to GPL-3.0
- Sign-off line in commits (DCO-style) for extra clarity
-
License header in source files - currently only
LICENSEfile exists; should add SPDX header to.pyscripts:# SPDX-License-Identifier: GPL-3.0-or-later -
Clarify web showcase license - the Next.js showcase (
web/) is also GPL-3.0, but could be MIT separately if that encourages reuse. Current GPL applies to entire repo - consider dual-licensing just the web component. -
No CLA for now - but if the project grows, a Contributor License Agreement (allowing relicensing) might be useful for flexibility. For now, pure GPL is fine.
References
- License file:
LICENSE(root of repo) - GPL-3.0 text: https://www.gnu.org/licenses/gpl-3.0.en.html
- Copyleft rationale: https://www.gnu.org/licenses/copyleft.en.html
- Original skill:
original/.agents/skills/gmail-labeler/(also GPL-3.0)