|
| 1 | +# License Selection Policy |
| 2 | + |
| 3 | +This document captures the criteria used to select licenses for dual-licensed third-party |
| 4 | +dependencies in GPL-2.0-or-later projects. Apply these rules when updating NOTICE.md or |
| 5 | +evaluating new dependencies. |
| 6 | + |
| 7 | +> **Note:** This project is a WordPress plugin and is therefore licensed under |
| 8 | +> GPL-2.0-or-later. The compatibility rules here are the **inverse** of an Apache-2.0 |
| 9 | +> project — see the Apache-2.0 policy in `data-viz-api` for the other context. |
| 10 | +
|
| 11 | +--- |
| 12 | + |
| 13 | +## Quick Reference |
| 14 | + |
| 15 | +| License options | Choose | Reason | |
| 16 | +|---|---|---| |
| 17 | +| GPL-2.0 / BSD-3-Clause | **GPL-2.0** | Consistent with GPL ecosystem | |
| 18 | +| GPL-2.0 / MIT | **GPL-2.0** | Consistent with GPL ecosystem | |
| 19 | +| Apache-2.0 / GPL-2.0 | **GPL-2.0** | Consistent with GPL ecosystem | |
| 20 | +| LGPL / anything | **LGPL** | Weak copyleft; keeps more freedoms | |
| 21 | +| MIT or BSD only | No choice needed | Always compatible with GPL | |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## Compatible Licenses (no documentation required) |
| 26 | + |
| 27 | +These licenses are unconditionally compatible with GPL-2.0-or-later and require no |
| 28 | +justification in NOTICE.md: |
| 29 | + |
| 30 | +- MIT |
| 31 | +- ISC |
| 32 | +- BSD-2-Clause, BSD-3-Clause, BSD (informal) |
| 33 | +- Apache-2.0 (compatible with GPL-2.0-or-later via the "or later" clause) |
| 34 | +- GPL-2.0, GPL-2.0-or-later, GPL-3.0, GPL-3.0-or-later |
| 35 | +- LGPL-2.1, LGPL-2.1-or-later, LGPL-3.0, LGPL-3.0-only |
| 36 | +- MPL-2.0 (FSF confirmed compatible with GPL) |
| 37 | +- CC0-1.0, Public Domain |
| 38 | +- 0BSD, Unlicense |
| 39 | + |
| 40 | +--- |
| 41 | + |
| 42 | +## Licenses That Require Documentation |
| 43 | + |
| 44 | +Document in NOTICE.md if present, even if compatible: |
| 45 | + |
| 46 | +| License | Reason to document | |
| 47 | +|---|---| |
| 48 | +| GPL-2.0 (without "or later") | Compatible but worth noting the version constraint | |
| 49 | +| Apache-2.0 WITH LLVM-exception | Unusual form; clarify the exception doesn't affect compatibility | |
| 50 | +| MPL-2.0 | Less common; confirm compatibility explicitly | |
| 51 | +| "SEE LICENSE IN LICENSE" | Ambiguous; verify and document actual license | |
| 52 | +| BSD (informal, no version) | Clarify it's BSD-2 or BSD-3 | |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +## Incompatible Licenses (must not be bundled into plugin output) |
| 57 | + |
| 58 | +These licenses are **not compatible** with GPL-2.0-or-later and must not appear in |
| 59 | +runtime/bundled dependencies: |
| 60 | + |
| 61 | +| License | Why incompatible | |
| 62 | +|---|---| |
| 63 | +| EPL-1.0, EPL-2.0 | Copyleft terms conflict with GPL | |
| 64 | +| CDDL-1.0, CDDL-1.1 | Copyleft terms conflict with GPL | |
| 65 | +| JSON License | "Good, not Evil" clause incompatible with any copyleft | |
| 66 | +| Proprietary / Commercial | Cannot be redistributed under GPL | |
| 67 | + |
| 68 | +> **Dev-only exception:** Incompatible licenses in build tools or test runners that are |
| 69 | +> never bundled into the plugin output do not create a distribution conflict, but should |
| 70 | +> still be documented in NOTICE.md. |
| 71 | +
|
| 72 | +--- |
| 73 | + |
| 74 | +## WordPress-specific rules |
| 75 | + |
| 76 | +- All WordPress plugins **must** declare `"license": "GPL-2.0-or-later"` in `package.json` |
| 77 | + and include a GPL-2.0-or-later `LICENSE` file. |
| 78 | +- Standalone CLI tools in this monorepo (e.g. `create-wp-customizer`, |
| 79 | + `upgrade-wp-customizer`) are not WordPress plugins and may use MIT. |
| 80 | +- Template scaffolding packages may use ISC or MIT. |
0 commit comments