Skill 15 · Wp Plugin Directory Guidelines
Subchapter 15.1
references/gpl-compliance.mdMarkdown10 KBView on GitHub
references/ files when present; otherwise use authoritative external URLs.WordPress is licensed under GPLv2 or later. All plugins distributed via WordPress.org must be:
| Version | Year | Key Addition |
|---|---|---|
| GPLv1 | 1989 | Base copyleft: share-alike for modifications |
| GPLv2 | 1991 | Patent clause (Section 7), clearer distribution terms |
| GPLv3 | 2007 | Anti-tivoization, explicit patent grants, compatibility provisions |
WordPress uses GPLv2 or later, meaning plugins can use GPLv2, GPLv3, or “GPLv2 or later”.
For full license texts, see:
When reviewing a plugin, verify:
License: header (e.g., GPL-2.0-or-later, GPL-2.0+, GPLv2 or later)License URI: header pointing to the GPL textLicense: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.htmlLicense: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.htmlLicense: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.htmlThe Plugin Directory accepts licenses matching these identifiers (after normalization). The validation uses is_license_gpl_compatible() with the pattern:
GPL|GNU|LGPL|MIT|FreeBSD|New BSD|BSD-3-Clause|BSD 3 Clause|OpenLDAP|Expat|Apache2|MPL20|ISC|CC0|Unlicense|WTFPL|Artistic|Boost|NCSA|ZLib|X11| Accepted Values | SPDX Identifier | License URI |
|---|---|---|
GPL-2.0-or-later, GPLv2 or later, GPL-2.0+ | GPL-2.0-or-later | https://www.gnu.org/licenses/gpl-2.0.html (opens in a new tab) |
GPL-2.0-only, GPLv2 | GPL-2.0-only | https://www.gnu.org/licenses/gpl-2.0.html (opens in a new tab) |
GPL-3.0-or-later, GPLv3 or later, GPL-3.0+ | GPL-3.0-or-later | https://www.gnu.org/licenses/gpl-3.0.html (opens in a new tab) |
GPL-3.0-only, GPLv3 | GPL-3.0-only | https://www.gnu.org/licenses/gpl-3.0.html (opens in a new tab) |
GNU General Public License (any version text) | — | — |
LGPL-2.1, LGPLv2.1 | LGPL-2.1-or-later | https://www.gnu.org/licenses/lgpl-2.1.html (opens in a new tab) |
LGPL-3.0, LGPLv3 | LGPL-3.0-or-later | https://www.gnu.org/licenses/lgpl-3.0.html (opens in a new tab) |
| Identifier | License Name | Notes |
|---|---|---|
MIT | MIT License | Permissive, compatible with GPLv2 and GPLv3 |
Expat | Expat License | Functionally equivalent to MIT |
X11 | X11 License | Permissive; similar to Expat but with extra X Consortium clause |
FreeBSD | BSD 2-Clause (FreeBSD) | Permissive, compatible with GPLv2 and GPLv3 |
New BSD, BSD-3-Clause, BSD 3 Clause | BSD 3-Clause | Permissive, compatible with GPLv2 and GPLv3 |
Apache2, Apache-2.0 | Apache License 2.0 | Compatible with GPLv3 only (NOT GPLv2) |
MPL20, MPL-2.0 | Mozilla Public License 2.0 | Compatible via Section 3.3 |
ISC | ISC License | Permissive, compatible with GPLv2 and GPLv3 |
OpenLDAP | OpenLDAP Public License v2.7 | Permissive; older v2.3 is NOT compatible |
CC0 | Creative Commons Zero | Public domain dedication |
Unlicense | The Unlicense | Public domain dedication |
WTFPL | Do What The F*** You Want To Public License | Permissive, accepted in full text form too |
Artistic | Artistic License 2.0 | Compatible via relicensing option in §4(c)(ii); Artistic 1.0 is NOT compatible |
Boost | Boost Software License 1.0 | Lax permissive, compatible with GPLv2 and GPLv3 |
NCSA | NCSA/University of Illinois Open Source License | Based on Expat + modified BSD; compatible with GPLv2 and GPLv3 |
ZLib | zlib License | Permissive, compatible with GPLv2 and GPLv3 |
Any license not matching the identifiers above will be rejected. Common rejections include:
Plugin claims GPL but restricts premium features:
When a GPL violation is identified:
Document the violation precisely:
Contact the copyright holder first
Report to FSF if the code is FSF-copyrighted: license-violation@gnu.org (opens in a new tab)
For WordPress.org plugins: flag through the plugin review process
For comprehensive GPL FAQ answers, see the GNU GPL FAQ (opens in a new tab).
Common questions during plugin review:
Can a plugin charge money and still be GPL? Yes. GPL allows charging for distribution. The requirement is that recipients get GPL freedoms (use, modify, redistribute).
Does a plugin need to include the full GPL text? GPLv2 Section 1 and GPLv3 Section 4 require giving recipients a copy of the license. A URI reference in the header plus including a LICENSE file is standard practice.
Can a plugin restrict who uses it? No. GPL explicitly prohibits additional restrictions on recipients. “For personal use only” or “non-commercial” clauses are incompatible.
Is minified JS without source a violation? If the plugin only distributes minified JS without any way to obtain the source, this conflicts with GPL’s source code requirements. The source should be available (in the package or via a repository).
Can a plugin use CC-BY-SA images? CC-BY-SA 4.0 is one-way compatible with GPLv3 (CC-BY-SA material can be included in GPLv3 works). CC-BY-SA 3.0 is NOT compatible.
What about fonts bundled in plugins? Fonts must be under GPL-compatible licenses. Common acceptable font licenses: OFL (SIL Open Font License), Apache 2.0 (with GPLv3), MIT, GPL with font exception.