Common Licenses
Summary
License texts for a subset of commonly used, approved licenses will be shipped in common-licenses. Packages can opt to reference this rather than shipping their own license texts.
Owner
- Name: Michel Lind, Neal Gompa
- Email: michel AT michel-slm DOT name, ngompa13 AT gmail DOT com
Current status
- Targeted release: Fedora Linux xxx
- Last updated: 2026-01-27
- Announced
- Discussion thread
- FESCo issue: #3541
- Tracker bug: <will be assigned by the Wrangler>
- Release notes tracker: <will be assigned by the Wrangler>
Detailed Description
A few common licenses are used by a majority of Fedora packages (e.g. GPL/LGPL, BSD, Apache). Many of these licenses have standardized text (MIT notably does not, since the license file contains a copyright notice specific to the distributed software), and our guidelines as of now requires shipping the license text if it is provided by upstream.
This causes a lot of duplication - as a back of envelope calculation:
- Apache-2.0 text is 12K
- GPL 2 text is 18K
- GPL-3.0 text is 35K
Assuming 25K source packages, and each source package only has one binary package that carries the license (and other subpackages inherit the license file via dependency) and 20K average license size, we are wasting up to 500 MB on disk (the actual figure will be way less given most people won't have all packages installed).
We propose pre-shipping common license texts in an RPM, common-licenses. This will have the texts in this layout -- as an example, for GPL-3.0:
- license text in
/usr/share/common-licenses/GPL-3.0/LICENSE - valid identifiers in
/usr/share/common-licenses/GPL-3.0/identifiers.json- in this case,["GPL-3.0-only", "GPL-3.0-or-later"] - a package that wants to use this license text can do so with
Requires: common-license(GPL-3.0-or-later); the package comes with a dependency generator that will index allidentifiers.jsonfiles shipped
Feedback
Benefit to Fedora
Once this gets adopted more broadly we will start seeing a non-trivial amount of disk space saving.
This will also benefit packagers - they will have a set of standard license texts on disk, rather than having to look them up in Fedora documentation, or SPDX, etc.
In cases where the license requires shipping a copy of the text, but upstream does not do this, while this should still be addressed upstream, in the meantime we can unblock packagers by having the source RPM BuildRequires: common-license(the-license-identifier) for each missing licenses.
Scope
- Proposal owners:
- package
common-licenses - submit packaging guidelines changes to allow referencing common licenses in specific situations
- update
rpmlintto accept requiring a common license in lieu of shipping license texts
- package
- Other developers:
- FPC - review packaging guidelines changes
- packagers - dogfood the new process
- Release engineering: #Releng issue number
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with the Fedora Strategy:
Upgrade/compatibility impact
Early Testing (Optional)
Do you require 'QA Blueprint' support? Y/N
How To Test
User Experience
Dependencies
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?)
The RPM can still be shipped, as it just ships license files. Until we get guidelines updated to specify how packagers can make use of them, packages simply have to ship license texts as they do now and should not reference the license texts shipped in common-licenses yet
- Contingency deadline: Final freeze
- Blocks release? No
Documentation
N/A (not a System Wide Change)
