From Fedora Project Wiki

Common Licenses

This is a rejected Change proposal for Fedora Linux.
This document represents a proposed Change that has been rejected or withdrawn as part of the Changes process. This page is preserved for historical record.

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


Current status

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:

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 all identifiers.json files 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 rpmlint to accept requiring a common license in lieu of shipping license texts
  • Other developers:
    • FPC - review packaging guidelines changes
    • packagers - dogfood the new process
  • 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)

Release Notes