From b07685291b65e51e0afc2b6cee91251419e0b3c1 Mon Sep 17 00:00:00 2001 From: William Ma Date: Wed, 10 Jun 2020 12:29:25 -0400 Subject: [PATCH 01/98] Add license to formula DSL --- Library/Homebrew/formula.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 2a37b445d..23017a399 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -351,6 +351,9 @@ class Formula # @see .desc= delegate desc: :"self.class" + # The SPDX ID of the software license. + delegate license: :"self.class" + # The homepage for the software. # @method homepage # @see .homepage= @@ -1678,6 +1681,7 @@ class Formula "aliases" => aliases.sort, "versioned_formulae" => versioned_formulae.map(&:name), "desc" => desc, + "license" => license, "homepage" => homepage, "versions" => { "stable" => stable&.version&.to_s, @@ -2199,6 +2203,13 @@ class Formula #
desc "Example formula"
attr_rw :desc + # @!attribute [w] + # The SPDX ID of the open-source license that the formula uses. + # Shows when running `brew info`. + # + #
license " BSD-2-Clause"
+ attr_rw :license + # @!attribute [w] homepage # The homepage for the software. Used by users to get more information # about the software and Homebrew maintainers as a point of contact for From 864cc76b3ba56543627139c99775cb818392823b Mon Sep 17 00:00:00 2001 From: William Ma Date: Wed, 10 Jun 2020 12:29:54 -0400 Subject: [PATCH 02/98] Print license information in brew info --- Library/Homebrew/cmd/info.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index e6db9ec35..c41d2cb5c 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -211,6 +211,8 @@ module Homebrew puts "From: #{Formatter.url(github_info(f))}" + puts "License: #{f.license}" if f.license + unless f.deps.empty? ohai "Dependencies" %w[build required recommended optional].map do |type| From c10b6bcc3c1e4676a17d7fb305876ce539de9069 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Sat, 13 Jun 2020 02:34:34 +0800 Subject: [PATCH 03/98] brew audit: Checks if a formula has a spdx license --- Library/Homebrew/dev-cmd/audit.rb | 9 +++++++++ Library/Homebrew/dev-cmd/spdx.json | 0 2 files changed, 9 insertions(+) create mode 100644 Library/Homebrew/dev-cmd/spdx.json diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 25f3bba70..a527c6c80 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -12,6 +12,7 @@ require "date" require "missing_formula" require "digest" require "cli/parser" +require 'json' module Homebrew module_function @@ -341,6 +342,14 @@ module Homebrew openssl@1.1 ].freeze + def audit_licenses + path = File.join(File.dirname(__FILE__),"spdx.json") + file = File.open(File.expand_path(path)) + valid_licenses = JSON.load(file) + return if valid_licenses.key?(formula.license) + problem "#{formula.license} is not an SPDX license." + end + def audit_deps @specs.each do |spec| # Check for things we don't like to depend on. diff --git a/Library/Homebrew/dev-cmd/spdx.json b/Library/Homebrew/dev-cmd/spdx.json new file mode 100644 index 000000000..e69de29bb From 803f9dd4a346b517c592c9ac6f3c2799073eab5a Mon Sep 17 00:00:00 2001 From: lionellloh Date: Sat, 13 Jun 2020 02:43:02 +0800 Subject: [PATCH 04/98] brew audit: check if license data exists --- Library/Homebrew/dev-cmd/audit.rb | 8 +- Library/Homebrew/dev-cmd/spdx.json | 2047 ++++++++++++++++++++++++++++ 2 files changed, 2053 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index a527c6c80..f890cc977 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -346,8 +346,12 @@ module Homebrew path = File.join(File.dirname(__FILE__),"spdx.json") file = File.open(File.expand_path(path)) valid_licenses = JSON.load(file) - return if valid_licenses.key?(formula.license) - problem "#{formula.license} is not an SPDX license." + unless formula.license.nil? + return if valid_licenses.key?(formula.license) + problem "#{formula.license} is not an SPDX license." + else + problem "No license specified for package." + end end def audit_deps diff --git a/Library/Homebrew/dev-cmd/spdx.json b/Library/Homebrew/dev-cmd/spdx.json index e69de29bb..d09c5647e 100644 --- a/Library/Homebrew/dev-cmd/spdx.json +++ b/Library/Homebrew/dev-cmd/spdx.json @@ -0,0 +1,2047 @@ +{ + "0BSD": { + "name": "BSD Zero Clause License", + "url": "http://landley.net/toybox/license.html", + "osiApproved": true + }, + "AAL": { + "name": "Attribution Assurance License", + "url": "https://opensource.org/licenses/attribution", + "osiApproved": true + }, + "ADSL": { + "name": "Amazon Digital Services License", + "url": "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense", + "osiApproved": false + }, + "AFL-1.1": { + "name": "Academic Free License v1.1", + "url": "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", + "osiApproved": true + }, + "AFL-1.2": { + "name": "Academic Free License v1.2", + "url": "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", + "osiApproved": true + }, + "AFL-2.0": { + "name": "Academic Free License v2.0", + "url": "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt", + "osiApproved": true + }, + "AFL-2.1": { + "name": "Academic Free License v2.1", + "url": "http://opensource.linux-mirror.org/licenses/afl-2.1.txt", + "osiApproved": true + }, + "AFL-3.0": { + "name": "Academic Free License v3.0", + "url": "http://www.rosenlaw.com/AFL3.0.htm", + "osiApproved": true + }, + "AGPL-1.0": { + "name": "Affero General Public License v1.0", + "url": "http://www.affero.org/oagpl.html", + "osiApproved": false + }, + "AGPL-1.0-only": { + "name": "Affero General Public License v1.0 only", + "url": "http://www.affero.org/oagpl.html", + "osiApproved": false + }, + "AGPL-1.0-or-later": { + "name": "Affero General Public License v1.0 or later", + "url": "http://www.affero.org/oagpl.html", + "osiApproved": false + }, + "AGPL-3.0": { + "name": "GNU Affero General Public License v3.0", + "url": "https://www.gnu.org/licenses/agpl.txt", + "osiApproved": true + }, + "AGPL-3.0-only": { + "name": "GNU Affero General Public License v3.0 only", + "url": "https://www.gnu.org/licenses/agpl.txt", + "osiApproved": true + }, + "AGPL-3.0-or-later": { + "name": "GNU Affero General Public License v3.0 or later", + "url": "https://www.gnu.org/licenses/agpl.txt", + "osiApproved": true + }, + "AMDPLPA": { + "name": "AMD's plpa_map.c License", + "url": "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License", + "osiApproved": false + }, + "AML": { + "name": "Apple MIT License", + "url": "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License", + "osiApproved": false + }, + "AMPAS": { + "name": "Academy of Motion Picture Arts and Sciences BSD", + "url": "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD", + "osiApproved": false + }, + "ANTLR-PD": { + "name": "ANTLR Software Rights Notice", + "url": "http://www.antlr2.org/license.html", + "osiApproved": false + }, + "APAFML": { + "name": "Adobe Postscript AFM License", + "url": "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM", + "osiApproved": false + }, + "APL-1.0": { + "name": "Adaptive Public License 1.0", + "url": "https://opensource.org/licenses/APL-1.0", + "osiApproved": true + }, + "APSL-1.0": { + "name": "Apple Public Source License 1.0", + "url": "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0", + "osiApproved": true + }, + "APSL-1.1": { + "name": "Apple Public Source License 1.1", + "url": "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE", + "osiApproved": true + }, + "APSL-1.2": { + "name": "Apple Public Source License 1.2", + "url": "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php", + "osiApproved": true + }, + "APSL-2.0": { + "name": "Apple Public Source License 2.0", + "url": "http://www.opensource.apple.com/license/apsl/", + "osiApproved": true + }, + "Abstyles": { + "name": "Abstyles License", + "url": "https://fedoraproject.org/wiki/Licensing/Abstyles", + "osiApproved": false + }, + "Adobe-2006": { + "name": "Adobe Systems Incorporated Source Code License Agreement", + "url": "https://fedoraproject.org/wiki/Licensing/AdobeLicense", + "osiApproved": false + }, + "Adobe-Glyph": { + "name": "Adobe Glyph List License", + "url": "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph", + "osiApproved": false + }, + "Afmparse": { + "name": "Afmparse License", + "url": "https://fedoraproject.org/wiki/Licensing/Afmparse", + "osiApproved": false + }, + "Aladdin": { + "name": "Aladdin Free Public License", + "url": "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm", + "osiApproved": false + }, + "Apache-1.0": { + "name": "Apache License 1.0", + "url": "http://www.apache.org/licenses/LICENSE-1.0", + "osiApproved": false + }, + "Apache-1.1": { + "name": "Apache License 1.1", + "url": "http://apache.org/licenses/LICENSE-1.1", + "osiApproved": true + }, + "Apache-2.0": { + "name": "Apache License 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0", + "osiApproved": true + }, + "Artistic-1.0": { + "name": "Artistic License 1.0", + "url": "https://opensource.org/licenses/Artistic-1.0", + "osiApproved": true + }, + "Artistic-1.0-Perl": { + "name": "Artistic License 1.0 (Perl)", + "url": "http://dev.perl.org/licenses/artistic.html", + "osiApproved": true + }, + "Artistic-1.0-cl8": { + "name": "Artistic License 1.0 w/clause 8", + "url": "https://opensource.org/licenses/Artistic-1.0", + "osiApproved": true + }, + "Artistic-2.0": { + "name": "Artistic License 2.0", + "url": "http://www.perlfoundation.org/artistic_license_2_0", + "osiApproved": true + }, + "BSD-1-Clause": { + "name": "BSD 1-Clause License", + "url": "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823", + "osiApproved": false + }, + "BSD-2-Clause": { + "name": "BSD 2-Clause \"Simplified\" License", + "url": "https://opensource.org/licenses/BSD-2-Clause", + "osiApproved": true + }, + "BSD-2-Clause-FreeBSD": { + "name": "BSD 2-Clause FreeBSD License", + "url": "http://www.freebsd.org/copyright/freebsd-license.html", + "osiApproved": false + }, + "BSD-2-Clause-NetBSD": { + "name": "BSD 2-Clause NetBSD License", + "url": "http://www.netbsd.org/about/redistribution.html#default", + "osiApproved": false + }, + "BSD-2-Clause-Patent": { + "name": "BSD-2-Clause Plus Patent License", + "url": "https://opensource.org/licenses/BSDplusPatent", + "osiApproved": true + }, + "BSD-3-Clause": { + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "url": "https://opensource.org/licenses/BSD-3-Clause", + "osiApproved": true + }, + "BSD-3-Clause-Attribution": { + "name": "BSD with attribution", + "url": "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution", + "osiApproved": false + }, + "BSD-3-Clause-Clear": { + "name": "BSD 3-Clause Clear License", + "url": "http://labs.metacarta.com/license-explanation.html#license", + "osiApproved": false + }, + "BSD-3-Clause-LBNL": { + "name": "Lawrence Berkeley National Labs BSD variant license", + "url": "https://fedoraproject.org/wiki/Licensing/LBNLBSD", + "osiApproved": true + }, + "BSD-3-Clause-No-Nuclear-License": { + "name": "BSD 3-Clause No Nuclear License", + "url": "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc", + "osiApproved": false + }, + "BSD-3-Clause-No-Nuclear-License-2014": { + "name": "BSD 3-Clause No Nuclear License 2014", + "url": "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense", + "osiApproved": false + }, + "BSD-3-Clause-No-Nuclear-Warranty": { + "name": "BSD 3-Clause No Nuclear Warranty", + "url": "https://jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt", + "osiApproved": false + }, + "BSD-3-Clause-Open-MPI": { + "name": "BSD 3-Clause Open MPI variant", + "url": "https://www.open-mpi.org/community/license.php", + "osiApproved": false + }, + "BSD-4-Clause": { + "name": "BSD 4-Clause \"Original\" or \"Old\" License", + "url": "http://directory.fsf.org/wiki/License:BSD_4Clause", + "osiApproved": false + }, + "BSD-4-Clause-UC": { + "name": "BSD-4-Clause (University of California-Specific)", + "url": "http://www.freebsd.org/copyright/license.html", + "osiApproved": false + }, + "BSD-Protection": { + "name": "BSD Protection License", + "url": "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License", + "osiApproved": false + }, + "BSD-Source-Code": { + "name": "BSD Source Code Attribution", + "url": "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt", + "osiApproved": false + }, + "BSL-1.0": { + "name": "Boost Software License 1.0", + "url": "http://www.boost.org/LICENSE_1_0.txt", + "osiApproved": true + }, + "Bahyph": { + "name": "Bahyph License", + "url": "https://fedoraproject.org/wiki/Licensing/Bahyph", + "osiApproved": false + }, + "Barr": { + "name": "Barr License", + "url": "https://fedoraproject.org/wiki/Licensing/Barr", + "osiApproved": false + }, + "Beerware": { + "name": "Beerware License", + "url": "https://fedoraproject.org/wiki/Licensing/Beerware", + "osiApproved": false + }, + "BitTorrent-1.0": { + "name": "BitTorrent Open Source License v1.0", + "url": "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s", + "osiApproved": false + }, + "BitTorrent-1.1": { + "name": "BitTorrent Open Source License v1.1", + "url": "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1", + "osiApproved": false + }, + "BlueOak-1.0.0": { + "name": "Blue Oak Model License 1.0.0", + "url": "https://blueoakcouncil.org/license/1.0.0", + "osiApproved": false + }, + "Borceux": { + "name": "Borceux license", + "url": "https://fedoraproject.org/wiki/Licensing/Borceux", + "osiApproved": false + }, + "CATOSL-1.1": { + "name": "Computer Associates Trusted Open Source License 1.1", + "url": "https://opensource.org/licenses/CATOSL-1.1", + "osiApproved": true + }, + "CC-BY-1.0": { + "name": "Creative Commons Attribution 1.0 Generic", + "url": "https://creativecommons.org/licenses/by/1.0/legalcode", + "osiApproved": false + }, + "CC-BY-2.0": { + "name": "Creative Commons Attribution 2.0 Generic", + "url": "https://creativecommons.org/licenses/by/2.0/legalcode", + "osiApproved": false + }, + "CC-BY-2.5": { + "name": "Creative Commons Attribution 2.5 Generic", + "url": "https://creativecommons.org/licenses/by/2.5/legalcode", + "osiApproved": false + }, + "CC-BY-3.0": { + "name": "Creative Commons Attribution 3.0 Unported", + "url": "https://creativecommons.org/licenses/by/3.0/legalcode", + "osiApproved": false + }, + "CC-BY-4.0": { + "name": "Creative Commons Attribution 4.0 International", + "url": "https://creativecommons.org/licenses/by/4.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-1.0": { + "name": "Creative Commons Attribution Non Commercial 1.0 Generic", + "url": "https://creativecommons.org/licenses/by-nc/1.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-2.0": { + "name": "Creative Commons Attribution Non Commercial 2.0 Generic", + "url": "https://creativecommons.org/licenses/by-nc/2.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-2.5": { + "name": "Creative Commons Attribution Non Commercial 2.5 Generic", + "url": "https://creativecommons.org/licenses/by-nc/2.5/legalcode", + "osiApproved": false + }, + "CC-BY-NC-3.0": { + "name": "Creative Commons Attribution Non Commercial 3.0 Unported", + "url": "https://creativecommons.org/licenses/by-nc/3.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-4.0": { + "name": "Creative Commons Attribution Non Commercial 4.0 International", + "url": "https://creativecommons.org/licenses/by-nc/4.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-ND-1.0": { + "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + "url": "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-ND-2.0": { + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + "url": "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-ND-2.5": { + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + "url": "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode", + "osiApproved": false + }, + "CC-BY-NC-ND-3.0": { + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + "url": "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-ND-4.0": { + "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + "url": "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-SA-1.0": { + "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + "url": "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-SA-2.0": { + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + "url": "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-SA-2.5": { + "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + "url": "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode", + "osiApproved": false + }, + "CC-BY-NC-SA-3.0": { + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + "url": "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode", + "osiApproved": false + }, + "CC-BY-NC-SA-4.0": { + "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + "url": "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode", + "osiApproved": false + }, + "CC-BY-ND-1.0": { + "name": "Creative Commons Attribution No Derivatives 1.0 Generic", + "url": "https://creativecommons.org/licenses/by-nd/1.0/legalcode", + "osiApproved": false + }, + "CC-BY-ND-2.0": { + "name": "Creative Commons Attribution No Derivatives 2.0 Generic", + "url": "https://creativecommons.org/licenses/by-nd/2.0/legalcode", + "osiApproved": false + }, + "CC-BY-ND-2.5": { + "name": "Creative Commons Attribution No Derivatives 2.5 Generic", + "url": "https://creativecommons.org/licenses/by-nd/2.5/legalcode", + "osiApproved": false + }, + "CC-BY-ND-3.0": { + "name": "Creative Commons Attribution No Derivatives 3.0 Unported", + "url": "https://creativecommons.org/licenses/by-nd/3.0/legalcode", + "osiApproved": false + }, + "CC-BY-ND-4.0": { + "name": "Creative Commons Attribution No Derivatives 4.0 International", + "url": "https://creativecommons.org/licenses/by-nd/4.0/legalcode", + "osiApproved": false + }, + "CC-BY-SA-1.0": { + "name": "Creative Commons Attribution Share Alike 1.0 Generic", + "url": "https://creativecommons.org/licenses/by-sa/1.0/legalcode", + "osiApproved": false + }, + "CC-BY-SA-2.0": { + "name": "Creative Commons Attribution Share Alike 2.0 Generic", + "url": "https://creativecommons.org/licenses/by-sa/2.0/legalcode", + "osiApproved": false + }, + "CC-BY-SA-2.5": { + "name": "Creative Commons Attribution Share Alike 2.5 Generic", + "url": "https://creativecommons.org/licenses/by-sa/2.5/legalcode", + "osiApproved": false + }, + "CC-BY-SA-3.0": { + "name": "Creative Commons Attribution Share Alike 3.0 Unported", + "url": "https://creativecommons.org/licenses/by-sa/3.0/legalcode", + "osiApproved": false + }, + "CC-BY-SA-4.0": { + "name": "Creative Commons Attribution Share Alike 4.0 International", + "url": "https://creativecommons.org/licenses/by-sa/4.0/legalcode", + "osiApproved": false + }, + "CC-PDDC": { + "name": "Creative Commons Public Domain Dedication and Certification", + "url": "https://creativecommons.org/licenses/publicdomain/", + "osiApproved": false + }, + "CC0-1.0": { + "name": "Creative Commons Zero v1.0 Universal", + "url": "https://creativecommons.org/publicdomain/zero/1.0/legalcode", + "osiApproved": false + }, + "CDDL-1.0": { + "name": "Common Development and Distribution License 1.0", + "url": "https://opensource.org/licenses/cddl1", + "osiApproved": true + }, + "CDDL-1.1": { + "name": "Common Development and Distribution License 1.1", + "url": "http://glassfish.java.net/public/CDDL+GPL_1_1.html", + "osiApproved": false + }, + "CDLA-Permissive-1.0": { + "name": "Community Data License Agreement Permissive 1.0", + "url": "https://cdla.io/permissive-1-0", + "osiApproved": false + }, + "CDLA-Sharing-1.0": { + "name": "Community Data License Agreement Sharing 1.0", + "url": "https://cdla.io/sharing-1-0", + "osiApproved": false + }, + "CECILL-1.0": { + "name": "CeCILL Free Software License Agreement v1.0", + "url": "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html", + "osiApproved": false + }, + "CECILL-1.1": { + "name": "CeCILL Free Software License Agreement v1.1", + "url": "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html", + "osiApproved": false + }, + "CECILL-2.0": { + "name": "CeCILL Free Software License Agreement v2.0", + "url": "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html", + "osiApproved": false + }, + "CECILL-2.1": { + "name": "CeCILL Free Software License Agreement v2.1", + "url": "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html", + "osiApproved": true + }, + "CECILL-B": { + "name": "CeCILL-B Free Software License Agreement", + "url": "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html", + "osiApproved": false + }, + "CECILL-C": { + "name": "CeCILL-C Free Software License Agreement", + "url": "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html", + "osiApproved": false + }, + "CERN-OHL-1.1": { + "name": "CERN Open Hardware Licence v1.1", + "url": "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1", + "osiApproved": false + }, + "CERN-OHL-1.2": { + "name": "CERN Open Hardware Licence v1.2", + "url": "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2", + "osiApproved": false + }, + "CNRI-Jython": { + "name": "CNRI Jython License", + "url": "http://www.jython.org/license.html", + "osiApproved": false + }, + "CNRI-Python": { + "name": "CNRI Python License", + "url": "https://opensource.org/licenses/CNRI-Python", + "osiApproved": true + }, + "CNRI-Python-GPL-Compatible": { + "name": "CNRI Python Open Source GPL Compatible License Agreement", + "url": "http://www.python.org/download/releases/1.6.1/download_win/", + "osiApproved": false + }, + "CPAL-1.0": { + "name": "Common Public Attribution License 1.0", + "url": "https://opensource.org/licenses/CPAL-1.0", + "osiApproved": true + }, + "CPL-1.0": { + "name": "Common Public License 1.0", + "url": "https://opensource.org/licenses/CPL-1.0", + "osiApproved": true + }, + "CPOL-1.02": { + "name": "Code Project Open License 1.02", + "url": "http://www.codeproject.com/info/cpol10.aspx", + "osiApproved": false + }, + "CUA-OPL-1.0": { + "name": "CUA Office Public License v1.0", + "url": "https://opensource.org/licenses/CUA-OPL-1.0", + "osiApproved": true + }, + "Caldera": { + "name": "Caldera License", + "url": "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf", + "osiApproved": false + }, + "ClArtistic": { + "name": "Clarified Artistic License", + "url": "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", + "osiApproved": false + }, + "Condor-1.1": { + "name": "Condor Public License v1.1", + "url": "http://research.cs.wisc.edu/condor/license.html#condor", + "osiApproved": false + }, + "Crossword": { + "name": "Crossword License", + "url": "https://fedoraproject.org/wiki/Licensing/Crossword", + "osiApproved": false + }, + "CrystalStacker": { + "name": "CrystalStacker License", + "url": "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker", + "osiApproved": false + }, + "Cube": { + "name": "Cube License", + "url": "https://fedoraproject.org/wiki/Licensing/Cube", + "osiApproved": false + }, + "D-FSL-1.0": { + "name": "Deutsche Freie Software Lizenz", + "url": "http://www.dipp.nrw.de/d-fsl/lizenzen/", + "osiApproved": false + }, + "DOC": { + "name": "DOC License", + "url": "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", + "osiApproved": false + }, + "DSDP": { + "name": "DSDP License", + "url": "https://fedoraproject.org/wiki/Licensing/DSDP", + "osiApproved": false + }, + "Dotseqn": { + "name": "Dotseqn License", + "url": "https://fedoraproject.org/wiki/Licensing/Dotseqn", + "osiApproved": false + }, + "ECL-1.0": { + "name": "Educational Community License v1.0", + "url": "https://opensource.org/licenses/ECL-1.0", + "osiApproved": true + }, + "ECL-2.0": { + "name": "Educational Community License v2.0", + "url": "https://opensource.org/licenses/ECL-2.0", + "osiApproved": true + }, + "EFL-1.0": { + "name": "Eiffel Forum License v1.0", + "url": "http://www.eiffel-nice.org/license/forum.txt", + "osiApproved": true + }, + "EFL-2.0": { + "name": "Eiffel Forum License v2.0", + "url": "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", + "osiApproved": true + }, + "EPL-1.0": { + "name": "Eclipse Public License 1.0", + "url": "http://www.eclipse.org/legal/epl-v10.html", + "osiApproved": true + }, + "EPL-2.0": { + "name": "Eclipse Public License 2.0", + "url": "https://www.eclipse.org/legal/epl-2.0", + "osiApproved": true + }, + "EUDatagrid": { + "name": "EU DataGrid Software License", + "url": "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", + "osiApproved": true + }, + "EUPL-1.0": { + "name": "European Union Public License 1.0", + "url": "http://ec.europa.eu/idabc/en/document/7330.html", + "osiApproved": false + }, + "EUPL-1.1": { + "name": "European Union Public License 1.1", + "url": "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", + "osiApproved": true + }, + "EUPL-1.2": { + "name": "European Union Public License 1.2", + "url": "https://joinup.ec.europa.eu/page/eupl-text-11-12", + "osiApproved": true + }, + "Entessa": { + "name": "Entessa Public License v1.0", + "url": "https://opensource.org/licenses/Entessa", + "osiApproved": true + }, + "ErlPL-1.1": { + "name": "Erlang Public License v1.1", + "url": "http://www.erlang.org/EPLICENSE", + "osiApproved": false + }, + "Eurosym": { + "name": "Eurosym License", + "url": "https://fedoraproject.org/wiki/Licensing/Eurosym", + "osiApproved": false + }, + "FSFAP": { + "name": "FSF All Permissive License", + "url": "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html", + "osiApproved": false + }, + "FSFUL": { + "name": "FSF Unlimited License", + "url": "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License", + "osiApproved": false + }, + "FSFULLR": { + "name": "FSF Unlimited License (with License Retention)", + "url": "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant", + "osiApproved": false + }, + "FTL": { + "name": "Freetype Project License", + "url": "http://freetype.fis.uniroma2.it/FTL.TXT", + "osiApproved": false + }, + "Fair": { + "name": "Fair License", + "url": "http://fairlicense.org/", + "osiApproved": true + }, + "Frameworx-1.0": { + "name": "Frameworx Open License 1.0", + "url": "https://opensource.org/licenses/Frameworx-1.0", + "osiApproved": true + }, + "FreeImage": { + "name": "FreeImage Public License v1.0", + "url": "http://freeimage.sourceforge.net/freeimage-license.txt", + "osiApproved": false + }, + "GFDL-1.1": { + "name": "GNU Free Documentation License v1.1", + "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", + "osiApproved": false + }, + "GFDL-1.1-only": { + "name": "GNU Free Documentation License v1.1 only", + "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", + "osiApproved": false + }, + "GFDL-1.1-or-later": { + "name": "GNU Free Documentation License v1.1 or later", + "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", + "osiApproved": false + }, + "GFDL-1.2": { + "name": "GNU Free Documentation License v1.2", + "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", + "osiApproved": false + }, + "GFDL-1.2-only": { + "name": "GNU Free Documentation License v1.2 only", + "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", + "osiApproved": false + }, + "GFDL-1.2-or-later": { + "name": "GNU Free Documentation License v1.2 or later", + "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", + "osiApproved": false + }, + "GFDL-1.3": { + "name": "GNU Free Documentation License v1.3", + "url": "https://www.gnu.org/licenses/fdl-1.3.txt", + "osiApproved": false + }, + "GFDL-1.3-only": { + "name": "GNU Free Documentation License v1.3 only", + "url": "https://www.gnu.org/licenses/fdl-1.3.txt", + "osiApproved": false + }, + "GFDL-1.3-or-later": { + "name": "GNU Free Documentation License v1.3 or later", + "url": "https://www.gnu.org/licenses/fdl-1.3.txt", + "osiApproved": false + }, + "GL2PS": { + "name": "GL2PS License", + "url": "http://www.geuz.org/gl2ps/COPYING.GL2PS", + "osiApproved": false + }, + "GPL-1.0": { + "name": "GNU General Public License v1.0 only", + "url": "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", + "osiApproved": false + }, + "GPL-1.0+": { + "name": "GNU General Public License v1.0 or later", + "url": "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", + "osiApproved": false + }, + "GPL-1.0-only": { + "name": "GNU General Public License v1.0 only", + "url": "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", + "osiApproved": false + }, + "GPL-1.0-or-later": { + "name": "GNU General Public License v1.0 or later", + "url": "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", + "osiApproved": false + }, + "GPL-2.0": { + "name": "GNU General Public License v2.0 only", + "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "osiApproved": true + }, + "GPL-2.0+": { + "name": "GNU General Public License v2.0 or later", + "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "osiApproved": true + }, + "GPL-2.0-only": { + "name": "GNU General Public License v2.0 only", + "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "osiApproved": true + }, + "GPL-2.0-or-later": { + "name": "GNU General Public License v2.0 or later", + "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "osiApproved": true + }, + "GPL-2.0-with-GCC-exception": { + "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", + "url": "https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/libgcc1.c;h=762f5143fc6eed57b6797c82710f3538aa52b40b;hb=cb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10", + "osiApproved": false + }, + "GPL-2.0-with-autoconf-exception": { + "name": "GNU General Public License v2.0 w/Autoconf exception", + "url": "http://ac-archive.sourceforge.net/doc/copyright.html", + "osiApproved": false + }, + "GPL-2.0-with-bison-exception": { + "name": "GNU General Public License v2.0 w/Bison exception", + "url": "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id=193d7c7054ba7197b0789e14965b739162319b5e#n141", + "osiApproved": false + }, + "GPL-2.0-with-classpath-exception": { + "name": "GNU General Public License v2.0 w/Classpath exception", + "url": "https://www.gnu.org/software/classpath/license.html", + "osiApproved": false + }, + "GPL-2.0-with-font-exception": { + "name": "GNU General Public License v2.0 w/Font exception", + "url": "https://www.gnu.org/licenses/gpl-faq.html#FontException", + "osiApproved": false + }, + "GPL-3.0": { + "name": "GNU General Public License v3.0 only", + "url": "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "osiApproved": true + }, + "GPL-3.0+": { + "name": "GNU General Public License v3.0 or later", + "url": "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "osiApproved": true + }, + "GPL-3.0-only": { + "name": "GNU General Public License v3.0 only", + "url": "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "osiApproved": true + }, + "GPL-3.0-or-later": { + "name": "GNU General Public License v3.0 or later", + "url": "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "osiApproved": true + }, + "GPL-3.0-with-GCC-exception": { + "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", + "url": "https://www.gnu.org/licenses/gcc-exception-3.1.html", + "osiApproved": true + }, + "GPL-3.0-with-autoconf-exception": { + "name": "GNU General Public License v3.0 w/Autoconf exception", + "url": "https://www.gnu.org/licenses/autoconf-exception-3.0.html", + "osiApproved": false + }, + "Giftware": { + "name": "Giftware License", + "url": "http://liballeg.org/license.html#allegro-4-the-giftware-license", + "osiApproved": false + }, + "Glide": { + "name": "3dfx Glide License", + "url": "http://www.users.on.net/~triforce/glidexp/COPYING.txt", + "osiApproved": false + }, + "Glulxe": { + "name": "Glulxe License", + "url": "https://fedoraproject.org/wiki/Licensing/Glulxe", + "osiApproved": false + }, + "HPND": { + "name": "Historical Permission Notice and Disclaimer", + "url": "https://opensource.org/licenses/HPND", + "osiApproved": true + }, + "HPND-sell-variant": { + "name": "Historical Permission Notice and Disclaimer - sell variant", + "url": "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19", + "osiApproved": false + }, + "HaskellReport": { + "name": "Haskell Language Report License", + "url": "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License", + "osiApproved": false + }, + "IBM-pibs": { + "name": "IBM PowerPC Initialization and Boot Software", + "url": "http://git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d", + "osiApproved": false + }, + "ICU": { + "name": "ICU License", + "url": "http://source.icu-project.org/repos/icu/icu/trunk/license.html", + "osiApproved": false + }, + "IJG": { + "name": "Independent JPEG Group License", + "url": "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2", + "osiApproved": false + }, + "IPA": { + "name": "IPA Font License", + "url": "https://opensource.org/licenses/IPA", + "osiApproved": true + }, + "IPL-1.0": { + "name": "IBM Public License v1.0", + "url": "https://opensource.org/licenses/IPL-1.0", + "osiApproved": true + }, + "ISC": { + "name": "ISC License", + "url": "https://www.isc.org/downloads/software-support-policy/isc-license/", + "osiApproved": true + }, + "ImageMagick": { + "name": "ImageMagick License", + "url": "http://www.imagemagick.org/script/license.php", + "osiApproved": false + }, + "Imlib2": { + "name": "Imlib2 License", + "url": "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", + "osiApproved": false + }, + "Info-ZIP": { + "name": "Info-ZIP License", + "url": "http://www.info-zip.org/license.html", + "osiApproved": false + }, + "Intel": { + "name": "Intel Open Source License", + "url": "https://opensource.org/licenses/Intel", + "osiApproved": true + }, + "Intel-ACPI": { + "name": "Intel ACPI Software License Agreement", + "url": "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement", + "osiApproved": false + }, + "Interbase-1.0": { + "name": "Interbase Public License v1.0", + "url": "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html", + "osiApproved": false + }, + "JPNIC": { + "name": "Japan Network Information Center License", + "url": "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366", + "osiApproved": false + }, + "JSON": { + "name": "JSON License", + "url": "http://www.json.org/license.html", + "osiApproved": false + }, + "JasPer-2.0": { + "name": "JasPer License", + "url": "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE", + "osiApproved": false + }, + "LAL-1.2": { + "name": "Licence Art Libre 1.2", + "url": "http://artlibre.org/licence/lal/licence-art-libre-12/", + "osiApproved": false + }, + "LAL-1.3": { + "name": "Licence Art Libre 1.3", + "url": "https://artlibre.org/", + "osiApproved": false + }, + "LGPL-2.0": { + "name": "GNU Library General Public License v2 only", + "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", + "osiApproved": true + }, + "LGPL-2.0+": { + "name": "GNU Library General Public License v2 or later", + "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", + "osiApproved": true + }, + "LGPL-2.0-only": { + "name": "GNU Library General Public License v2 only", + "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", + "osiApproved": true + }, + "LGPL-2.0-or-later": { + "name": "GNU Library General Public License v2 or later", + "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", + "osiApproved": true + }, + "LGPL-2.1": { + "name": "GNU Lesser General Public License v2.1 only", + "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "osiApproved": true + }, + "LGPL-2.1+": { + "name": "GNU Library General Public License v2.1 or later", + "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "osiApproved": true + }, + "LGPL-2.1-only": { + "name": "GNU Lesser General Public License v2.1 only", + "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "osiApproved": true + }, + "LGPL-2.1-or-later": { + "name": "GNU Lesser General Public License v2.1 or later", + "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "osiApproved": true + }, + "LGPL-3.0": { + "name": "GNU Lesser General Public License v3.0 only", + "url": "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "osiApproved": true + }, + "LGPL-3.0+": { + "name": "GNU Lesser General Public License v3.0 or later", + "url": "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "osiApproved": true + }, + "LGPL-3.0-only": { + "name": "GNU Lesser General Public License v3.0 only", + "url": "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "osiApproved": true + }, + "LGPL-3.0-or-later": { + "name": "GNU Lesser General Public License v3.0 or later", + "url": "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "osiApproved": true + }, + "LGPLLR": { + "name": "Lesser General Public License For Linguistic Resources", + "url": "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html", + "osiApproved": false + }, + "LPL-1.0": { + "name": "Lucent Public License Version 1.0", + "url": "https://opensource.org/licenses/LPL-1.0", + "osiApproved": true + }, + "LPL-1.02": { + "name": "Lucent Public License v1.02", + "url": "http://plan9.bell-labs.com/plan9/license.html", + "osiApproved": true + }, + "LPPL-1.0": { + "name": "LaTeX Project Public License v1.0", + "url": "http://www.latex-project.org/lppl/lppl-1-0.txt", + "osiApproved": false + }, + "LPPL-1.1": { + "name": "LaTeX Project Public License v1.1", + "url": "http://www.latex-project.org/lppl/lppl-1-1.txt", + "osiApproved": false + }, + "LPPL-1.2": { + "name": "LaTeX Project Public License v1.2", + "url": "http://www.latex-project.org/lppl/lppl-1-2.txt", + "osiApproved": false + }, + "LPPL-1.3a": { + "name": "LaTeX Project Public License v1.3a", + "url": "http://www.latex-project.org/lppl/lppl-1-3a.txt", + "osiApproved": false + }, + "LPPL-1.3c": { + "name": "LaTeX Project Public License v1.3c", + "url": "http://www.latex-project.org/lppl/lppl-1-3c.txt", + "osiApproved": true + }, + "Latex2e": { + "name": "Latex2e License", + "url": "https://fedoraproject.org/wiki/Licensing/Latex2e", + "osiApproved": false + }, + "Leptonica": { + "name": "Leptonica License", + "url": "https://fedoraproject.org/wiki/Licensing/Leptonica", + "osiApproved": false + }, + "LiLiQ-P-1.1": { + "name": "Licence Libre du Québec – Permissive version 1.1", + "url": "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", + "osiApproved": true + }, + "LiLiQ-R-1.1": { + "name": "Licence Libre du Québec – Réciprocité version 1.1", + "url": "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", + "osiApproved": true + }, + "LiLiQ-Rplus-1.1": { + "name": "Licence Libre du Québec – Réciprocité forte version 1.1", + "url": "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", + "osiApproved": true + }, + "Libpng": { + "name": "libpng License", + "url": "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt", + "osiApproved": false + }, + "Linux-OpenIB": { + "name": "Linux Kernel Variant of OpenIB.org license", + "url": "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h", + "osiApproved": false + }, + "MIT": { + "name": "MIT License", + "url": "https://opensource.org/licenses/MIT", + "osiApproved": true + }, + "MIT-0": { + "name": "MIT No Attribution", + "url": "https://github.com/aws/mit-0", + "osiApproved": false + }, + "MIT-CMU": { + "name": "CMU License", + "url": "https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#CMU_Style", + "osiApproved": false + }, + "MIT-advertising": { + "name": "Enlightenment License (e16)", + "url": "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising", + "osiApproved": false + }, + "MIT-enna": { + "name": "enna License", + "url": "https://fedoraproject.org/wiki/Licensing/MIT#enna", + "osiApproved": false + }, + "MIT-feh": { + "name": "feh License", + "url": "https://fedoraproject.org/wiki/Licensing/MIT#feh", + "osiApproved": false + }, + "MITNFA": { + "name": "MIT +no-false-attribs license", + "url": "https://fedoraproject.org/wiki/Licensing/MITNFA", + "osiApproved": false + }, + "MPL-1.0": { + "name": "Mozilla Public License 1.0", + "url": "http://www.mozilla.org/MPL/MPL-1.0.html", + "osiApproved": true + }, + "MPL-1.1": { + "name": "Mozilla Public License 1.1", + "url": "http://www.mozilla.org/MPL/MPL-1.1.html", + "osiApproved": true + }, + "MPL-2.0": { + "name": "Mozilla Public License 2.0", + "url": "http://www.mozilla.org/MPL/2.0/", + "osiApproved": true + }, + "MPL-2.0-no-copyleft-exception": { + "name": "Mozilla Public License 2.0 (no copyleft exception)", + "url": "http://www.mozilla.org/MPL/2.0/", + "osiApproved": true + }, + "MS-PL": { + "name": "Microsoft Public License", + "url": "http://www.microsoft.com/opensource/licenses.mspx", + "osiApproved": true + }, + "MS-RL": { + "name": "Microsoft Reciprocal License", + "url": "http://www.microsoft.com/opensource/licenses.mspx", + "osiApproved": true + }, + "MTLL": { + "name": "Matrix Template Library License", + "url": "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License", + "osiApproved": false + }, + "MakeIndex": { + "name": "MakeIndex License", + "url": "https://fedoraproject.org/wiki/Licensing/MakeIndex", + "osiApproved": false + }, + "MirOS": { + "name": "The MirOS Licence", + "url": "https://opensource.org/licenses/MirOS", + "osiApproved": true + }, + "Motosoto": { + "name": "Motosoto License", + "url": "https://opensource.org/licenses/Motosoto", + "osiApproved": true + }, + "MulanPSL-1.0": { + "name": "Mulan Permissive Software License, Version 1", + "url": "https://license.coscl.org.cn/MulanPSL/", + "osiApproved": false + }, + "Multics": { + "name": "Multics License", + "url": "https://opensource.org/licenses/Multics", + "osiApproved": true + }, + "Mup": { + "name": "Mup License", + "url": "https://fedoraproject.org/wiki/Licensing/Mup", + "osiApproved": false + }, + "NASA-1.3": { + "name": "NASA Open Source Agreement 1.3", + "url": "http://ti.arc.nasa.gov/opensource/nosa/", + "osiApproved": true + }, + "NBPL-1.0": { + "name": "Net Boolean Public License v1", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894", + "osiApproved": false + }, + "NCSA": { + "name": "University of Illinois/NCSA Open Source License", + "url": "http://otm.illinois.edu/uiuc_openSource", + "osiApproved": true + }, + "NGPL": { + "name": "Nethack General Public License", + "url": "https://opensource.org/licenses/NGPL", + "osiApproved": true + }, + "NLOD-1.0": { + "name": "Norwegian Licence for Open Government Data", + "url": "http://data.norge.no/nlod/en/1.0", + "osiApproved": false + }, + "NLPL": { + "name": "No Limit Public License", + "url": "https://fedoraproject.org/wiki/Licensing/NLPL", + "osiApproved": false + }, + "NOSL": { + "name": "Netizen Open Source License", + "url": "http://bits.netizen.com.au/licenses/NOSL/nosl.txt", + "osiApproved": false + }, + "NPL-1.0": { + "name": "Netscape Public License v1.0", + "url": "http://www.mozilla.org/MPL/NPL/1.0/", + "osiApproved": false + }, + "NPL-1.1": { + "name": "Netscape Public License v1.1", + "url": "http://www.mozilla.org/MPL/NPL/1.1/", + "osiApproved": false + }, + "NPOSL-3.0": { + "name": "Non-Profit Open Software License 3.0", + "url": "https://opensource.org/licenses/NOSL3.0", + "osiApproved": true + }, + "NRL": { + "name": "NRL License", + "url": "http://web.mit.edu/network/isakmp/nrllicense.html", + "osiApproved": false + }, + "NTP": { + "name": "NTP License", + "url": "https://opensource.org/licenses/NTP", + "osiApproved": true + }, + "NTP-0": { + "name": "NTP No Attribution", + "url": "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c", + "osiApproved": false + }, + "Naumen": { + "name": "Naumen Public License", + "url": "https://opensource.org/licenses/Naumen", + "osiApproved": true + }, + "Net-SNMP": { + "name": "Net-SNMP License", + "url": "http://net-snmp.sourceforge.net/about/license.html", + "osiApproved": false + }, + "NetCDF": { + "name": "NetCDF license", + "url": "http://www.unidata.ucar.edu/software/netcdf/copyright.html", + "osiApproved": false + }, + "Newsletr": { + "name": "Newsletr License", + "url": "https://fedoraproject.org/wiki/Licensing/Newsletr", + "osiApproved": false + }, + "Nokia": { + "name": "Nokia Open Source License", + "url": "https://opensource.org/licenses/nokia", + "osiApproved": true + }, + "Noweb": { + "name": "Noweb License", + "url": "https://fedoraproject.org/wiki/Licensing/Noweb", + "osiApproved": false + }, + "Nunit": { + "name": "Nunit License", + "url": "https://fedoraproject.org/wiki/Licensing/Nunit", + "osiApproved": false + }, + "OCCT-PL": { + "name": "Open CASCADE Technology Public License", + "url": "http://www.opencascade.com/content/occt-public-license", + "osiApproved": false + }, + "OCLC-2.0": { + "name": "OCLC Research Public License 2.0", + "url": "http://www.oclc.org/research/activities/software/license/v2final.htm", + "osiApproved": true + }, + "ODC-By-1.0": { + "name": "Open Data Commons Attribution License v1.0", + "url": "https://opendatacommons.org/licenses/by/1.0/", + "osiApproved": false + }, + "ODbL-1.0": { + "name": "ODC Open Database License v1.0", + "url": "http://www.opendatacommons.org/licenses/odbl/1.0/", + "osiApproved": false + }, + "OFL-1.0": { + "name": "SIL Open Font License 1.0", + "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", + "osiApproved": false + }, + "OFL-1.0-RFN": { + "name": "SIL Open Font License 1.0 with Reserved Font Name", + "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", + "osiApproved": false + }, + "OFL-1.0-no-RFN": { + "name": "SIL Open Font License 1.0 with no Reserved Font Name", + "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", + "osiApproved": false + }, + "OFL-1.1": { + "name": "SIL Open Font License 1.1", + "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", + "osiApproved": true + }, + "OFL-1.1-RFN": { + "name": "SIL Open Font License 1.1 with Reserved Font Name", + "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", + "osiApproved": true + }, + "OFL-1.1-no-RFN": { + "name": "SIL Open Font License 1.1 with no Reserved Font Name", + "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", + "osiApproved": true + }, + "OGL-Canada-2.0": { + "name": "Open Government Licence - Canada", + "url": "https://open.canada.ca/en/open-government-licence-canada", + "osiApproved": false + }, + "OGL-UK-1.0": { + "name": "Open Government Licence v1.0", + "url": "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/", + "osiApproved": false + }, + "OGL-UK-2.0": { + "name": "Open Government Licence v2.0", + "url": "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/", + "osiApproved": false + }, + "OGL-UK-3.0": { + "name": "Open Government Licence v3.0", + "url": "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/", + "osiApproved": false + }, + "OGTSL": { + "name": "Open Group Test Suite License", + "url": "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", + "osiApproved": true + }, + "OLDAP-1.1": { + "name": "Open LDAP Public License v1.1", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f", + "osiApproved": false + }, + "OLDAP-1.2": { + "name": "Open LDAP Public License v1.2", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7", + "osiApproved": false + }, + "OLDAP-1.3": { + "name": "Open LDAP Public License v1.3", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1", + "osiApproved": false + }, + "OLDAP-1.4": { + "name": "Open LDAP Public License v1.4", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941", + "osiApproved": false + }, + "OLDAP-2.0": { + "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea", + "osiApproved": false + }, + "OLDAP-2.0.1": { + "name": "Open LDAP Public License v2.0.1", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e", + "osiApproved": false + }, + "OLDAP-2.1": { + "name": "Open LDAP Public License v2.1", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715", + "osiApproved": false + }, + "OLDAP-2.2": { + "name": "Open LDAP Public License v2.2", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3", + "osiApproved": false + }, + "OLDAP-2.2.1": { + "name": "Open LDAP Public License v2.2.1", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e", + "osiApproved": false + }, + "OLDAP-2.2.2": { + "name": "Open LDAP Public License 2.2.2", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188", + "osiApproved": false + }, + "OLDAP-2.3": { + "name": "Open LDAP Public License v2.3", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3", + "osiApproved": false + }, + "OLDAP-2.4": { + "name": "Open LDAP Public License v2.4", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386", + "osiApproved": false + }, + "OLDAP-2.5": { + "name": "Open LDAP Public License v2.5", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=6852b9d90022e8593c98205413380536b1b5a7cf", + "osiApproved": false + }, + "OLDAP-2.6": { + "name": "Open LDAP Public License v2.6", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205", + "osiApproved": false + }, + "OLDAP-2.7": { + "name": "Open LDAP Public License v2.7", + "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2", + "osiApproved": false + }, + "OLDAP-2.8": { + "name": "Open LDAP Public License v2.8", + "url": "http://www.openldap.org/software/release/license.html", + "osiApproved": false + }, + "OML": { + "name": "Open Market License", + "url": "https://fedoraproject.org/wiki/Licensing/Open_Market_License", + "osiApproved": false + }, + "OPL-1.0": { + "name": "Open Public License v1.0", + "url": "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", + "osiApproved": false + }, + "OSET-PL-2.1": { + "name": "OSET Public License version 2.1", + "url": "http://www.osetfoundation.org/public-license", + "osiApproved": true + }, + "OSL-1.0": { + "name": "Open Software License 1.0", + "url": "https://opensource.org/licenses/OSL-1.0", + "osiApproved": true + }, + "OSL-1.1": { + "name": "Open Software License 1.1", + "url": "https://fedoraproject.org/wiki/Licensing/OSL1.1", + "osiApproved": false + }, + "OSL-2.0": { + "name": "Open Software License 2.0", + "url": "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html", + "osiApproved": true + }, + "OSL-2.1": { + "name": "Open Software License 2.1", + "url": "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", + "osiApproved": true + }, + "OSL-3.0": { + "name": "Open Software License 3.0", + "url": "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", + "osiApproved": true + }, + "OpenSSL": { + "name": "OpenSSL License", + "url": "http://www.openssl.org/source/license.html", + "osiApproved": false + }, + "PDDL-1.0": { + "name": "ODC Public Domain Dedication & License 1.0", + "url": "http://opendatacommons.org/licenses/pddl/1.0/", + "osiApproved": false + }, + "PHP-3.0": { + "name": "PHP License v3.0", + "url": "http://www.php.net/license/3_0.txt", + "osiApproved": true + }, + "PHP-3.01": { + "name": "PHP License v3.01", + "url": "http://www.php.net/license/3_01.txt", + "osiApproved": false + }, + "PSF-2.0": { + "name": "Python Software Foundation License 2.0", + "url": "https://opensource.org/licenses/Python-2.0", + "osiApproved": false + }, + "Parity-6.0.0": { + "name": "The Parity Public License 6.0.0", + "url": "https://paritylicense.com/versions/6.0.0.html", + "osiApproved": false + }, + "Plexus": { + "name": "Plexus Classworlds License", + "url": "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License", + "osiApproved": false + }, + "PostgreSQL": { + "name": "PostgreSQL License", + "url": "http://www.postgresql.org/about/licence", + "osiApproved": true + }, + "Python-2.0": { + "name": "Python License 2.0", + "url": "https://opensource.org/licenses/Python-2.0", + "osiApproved": true + }, + "QPL-1.0": { + "name": "Q Public License 1.0", + "url": "http://doc.qt.nokia.com/3.3/license.html", + "osiApproved": true + }, + "Qhull": { + "name": "Qhull License", + "url": "https://fedoraproject.org/wiki/Licensing/Qhull", + "osiApproved": false + }, + "RHeCos-1.1": { + "name": "Red Hat eCos Public License v1.1", + "url": "http://ecos.sourceware.org/old-license.html", + "osiApproved": false + }, + "RPL-1.1": { + "name": "Reciprocal Public License 1.1", + "url": "https://opensource.org/licenses/RPL-1.1", + "osiApproved": true + }, + "RPL-1.5": { + "name": "Reciprocal Public License 1.5", + "url": "https://opensource.org/licenses/RPL-1.5", + "osiApproved": true + }, + "RPSL-1.0": { + "name": "RealNetworks Public Source License v1.0", + "url": "https://helixcommunity.org/content/rpsl", + "osiApproved": true + }, + "RSA-MD": { + "name": "RSA Message-Digest License ", + "url": "http://www.faqs.org/rfcs/rfc1321.html", + "osiApproved": false + }, + "RSCPL": { + "name": "Ricoh Source Code Public License", + "url": "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", + "osiApproved": true + }, + "Rdisc": { + "name": "Rdisc License", + "url": "https://fedoraproject.org/wiki/Licensing/Rdisc_License", + "osiApproved": false + }, + "Ruby": { + "name": "Ruby License", + "url": "http://www.ruby-lang.org/en/LICENSE.txt", + "osiApproved": false + }, + "SAX-PD": { + "name": "Sax Public Domain Notice", + "url": "http://www.saxproject.org/copying.html", + "osiApproved": false + }, + "SCEA": { + "name": "SCEA Shared Source License", + "url": "http://research.scea.com/scea_shared_source_license.html", + "osiApproved": false + }, + "SGI-B-1.0": { + "name": "SGI Free Software License B v1.0", + "url": "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html", + "osiApproved": false + }, + "SGI-B-1.1": { + "name": "SGI Free Software License B v1.1", + "url": "http://oss.sgi.com/projects/FreeB/", + "osiApproved": false + }, + "SGI-B-2.0": { + "name": "SGI Free Software License B v2.0", + "url": "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf", + "osiApproved": false + }, + "SHL-0.5": { + "name": "Solderpad Hardware License v0.5", + "url": "https://solderpad.org/licenses/SHL-0.5/", + "osiApproved": false + }, + "SHL-0.51": { + "name": "Solderpad Hardware License, Version 0.51", + "url": "https://solderpad.org/licenses/SHL-0.51/", + "osiApproved": false + }, + "SISSL": { + "name": "Sun Industry Standards Source License v1.1", + "url": "http://www.openoffice.org/licenses/sissl_license.html", + "osiApproved": true + }, + "SISSL-1.2": { + "name": "Sun Industry Standards Source License v1.2", + "url": "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html", + "osiApproved": false + }, + "SMLNJ": { + "name": "Standard ML of New Jersey License", + "url": "https://www.smlnj.org/license.html", + "osiApproved": false + }, + "SMPPL": { + "name": "Secure Messaging Protocol Public License", + "url": "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt", + "osiApproved": false + }, + "SNIA": { + "name": "SNIA Public License 1.1", + "url": "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License", + "osiApproved": false + }, + "SPL-1.0": { + "name": "Sun Public License v1.0", + "url": "https://opensource.org/licenses/SPL-1.0", + "osiApproved": true + }, + "SSH-OpenSSH": { + "name": "SSH OpenSSH license", + "url": "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10", + "osiApproved": false + }, + "SSH-short": { + "name": "SSH short notice", + "url": "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", + "osiApproved": false + }, + "SSPL-1.0": { + "name": "Server Side Public License, v 1", + "url": "https://www.mongodb.com/licensing/server-side-public-license", + "osiApproved": false + }, + "SWL": { + "name": "Scheme Widget Library (SWL) Software License Agreement", + "url": "https://fedoraproject.org/wiki/Licensing/SWL", + "osiApproved": false + }, + "Saxpath": { + "name": "Saxpath License", + "url": "https://fedoraproject.org/wiki/Licensing/Saxpath_License", + "osiApproved": false + }, + "Sendmail": { + "name": "Sendmail License", + "url": "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "osiApproved": false + }, + "Sendmail-8.23": { + "name": "Sendmail License 8.23", + "url": "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "osiApproved": false + }, + "SimPL-2.0": { + "name": "Simple Public License 2.0", + "url": "https://opensource.org/licenses/SimPL-2.0", + "osiApproved": true + }, + "Sleepycat": { + "name": "Sleepycat License", + "url": "https://opensource.org/licenses/Sleepycat", + "osiApproved": true + }, + "Spencer-86": { + "name": "Spencer License 86", + "url": "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", + "osiApproved": false + }, + "Spencer-94": { + "name": "Spencer License 94", + "url": "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", + "osiApproved": false + }, + "Spencer-99": { + "name": "Spencer License 99", + "url": "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c", + "osiApproved": false + }, + "StandardML-NJ": { + "name": "Standard ML of New Jersey License", + "url": "http://www.smlnj.org//license.html", + "osiApproved": false + }, + "SugarCRM-1.1.3": { + "name": "SugarCRM Public License v1.1.3", + "url": "http://www.sugarcrm.com/crm/SPL", + "osiApproved": false + }, + "TAPR-OHL-1.0": { + "name": "TAPR Open Hardware License v1.0", + "url": "https://www.tapr.org/OHL", + "osiApproved": false + }, + "TCL": { + "name": "TCL/TK License", + "url": "http://www.tcl.tk/software/tcltk/license.html", + "osiApproved": false + }, + "TCP-wrappers": { + "name": "TCP Wrappers License", + "url": "http://rc.quest.com/topics/openssh/license.php#tcpwrappers", + "osiApproved": false + }, + "TMate": { + "name": "TMate Open Source License", + "url": "http://svnkit.com/license.html", + "osiApproved": false + }, + "TORQUE-1.1": { + "name": "TORQUE v2.5+ Software License v1.1", + "url": "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1", + "osiApproved": false + }, + "TOSL": { + "name": "Trusster Open Source License", + "url": "https://fedoraproject.org/wiki/Licensing/TOSL", + "osiApproved": false + }, + "TU-Berlin-1.0": { + "name": "Technische Universitaet Berlin License 1.0", + "url": "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT", + "osiApproved": false + }, + "TU-Berlin-2.0": { + "name": "Technische Universitaet Berlin License 2.0", + "url": "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt", + "osiApproved": false + }, + "UCL-1.0": { + "name": "Upstream Compatibility License v1.0", + "url": "https://opensource.org/licenses/UCL-1.0", + "osiApproved": true + }, + "UPL-1.0": { + "name": "Universal Permissive License v1.0", + "url": "https://opensource.org/licenses/UPL", + "osiApproved": true + }, + "Unicode-DFS-2015": { + "name": "Unicode License Agreement - Data Files and Software (2015)", + "url": "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html", + "osiApproved": false + }, + "Unicode-DFS-2016": { + "name": "Unicode License Agreement - Data Files and Software (2016)", + "url": "http://www.unicode.org/copyright.html", + "osiApproved": false + }, + "Unicode-TOU": { + "name": "Unicode Terms of Use", + "url": "http://www.unicode.org/copyright.html", + "osiApproved": false + }, + "Unlicense": { + "name": "The Unlicense", + "url": "https://unlicense.org/", + "osiApproved": false + }, + "VOSTROM": { + "name": "VOSTROM Public License for Open Source", + "url": "https://fedoraproject.org/wiki/Licensing/VOSTROM", + "osiApproved": false + }, + "VSL-1.0": { + "name": "Vovida Software License v1.0", + "url": "https://opensource.org/licenses/VSL-1.0", + "osiApproved": true + }, + "Vim": { + "name": "Vim License", + "url": "http://vimdoc.sourceforge.net/htmldoc/uganda.html", + "osiApproved": false + }, + "W3C": { + "name": "W3C Software Notice and License (2002-12-31)", + "url": "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", + "osiApproved": true + }, + "W3C-19980720": { + "name": "W3C Software Notice and License (1998-07-20)", + "url": "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html", + "osiApproved": false + }, + "W3C-20150513": { + "name": "W3C Software Notice and Document License (2015-05-13)", + "url": "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", + "osiApproved": false + }, + "WTFPL": { + "name": "Do What The F*ck You Want To Public License", + "url": "http://sam.zoy.org/wtfpl/COPYING", + "osiApproved": false + }, + "Watcom-1.0": { + "name": "Sybase Open Watcom Public License 1.0", + "url": "https://opensource.org/licenses/Watcom-1.0", + "osiApproved": true + }, + "Wsuipa": { + "name": "Wsuipa License", + "url": "https://fedoraproject.org/wiki/Licensing/Wsuipa", + "osiApproved": false + }, + "X11": { + "name": "X11 License", + "url": "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3", + "osiApproved": false + }, + "XFree86-1.1": { + "name": "XFree86 License 1.1", + "url": "http://www.xfree86.org/current/LICENSE4.html", + "osiApproved": false + }, + "XSkat": { + "name": "XSkat License", + "url": "https://fedoraproject.org/wiki/Licensing/XSkat_License", + "osiApproved": false + }, + "Xerox": { + "name": "Xerox License", + "url": "https://fedoraproject.org/wiki/Licensing/Xerox", + "osiApproved": false + }, + "Xnet": { + "name": "X.Net License", + "url": "https://opensource.org/licenses/Xnet", + "osiApproved": true + }, + "YPL-1.0": { + "name": "Yahoo! Public License v1.0", + "url": "http://www.zimbra.com/license/yahoo_public_license_1.0.html", + "osiApproved": false + }, + "YPL-1.1": { + "name": "Yahoo! Public License v1.1", + "url": "http://www.zimbra.com/license/yahoo_public_license_1.1.html", + "osiApproved": false + }, + "ZPL-1.1": { + "name": "Zope Public License 1.1", + "url": "http://old.zope.org/Resources/License/ZPL-1.1", + "osiApproved": false + }, + "ZPL-2.0": { + "name": "Zope Public License 2.0", + "url": "http://old.zope.org/Resources/License/ZPL-2.0", + "osiApproved": true + }, + "ZPL-2.1": { + "name": "Zope Public License 2.1", + "url": "http://old.zope.org/Resources/ZPL/", + "osiApproved": false + }, + "Zed": { + "name": "Zed License", + "url": "https://fedoraproject.org/wiki/Licensing/Zed", + "osiApproved": false + }, + "Zend-2.0": { + "name": "Zend License v2.0", + "url": "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt", + "osiApproved": false + }, + "Zimbra-1.3": { + "name": "Zimbra Public License v1.3", + "url": "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html", + "osiApproved": false + }, + "Zimbra-1.4": { + "name": "Zimbra Public License v1.4", + "url": "http://www.zimbra.com/legal/zimbra-public-license-1-4", + "osiApproved": false + }, + "Zlib": { + "name": "zlib License", + "url": "http://www.zlib.net/zlib_license.html", + "osiApproved": true + }, + "blessing": { + "name": "SQLite Blessing", + "url": "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln=4-9", + "osiApproved": false + }, + "bzip2-1.0.5": { + "name": "bzip2 and libbzip2 License v1.0.5", + "url": "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", + "osiApproved": false + }, + "bzip2-1.0.6": { + "name": "bzip2 and libbzip2 License v1.0.6", + "url": "https://github.com/asimonov-im/bzip2/blob/master/LICENSE", + "osiApproved": false + }, + "copyleft-next-0.3.0": { + "name": "copyleft-next 0.3.0", + "url": "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0", + "osiApproved": false + }, + "copyleft-next-0.3.1": { + "name": "copyleft-next 0.3.1", + "url": "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1", + "osiApproved": false + }, + "curl": { + "name": "curl License", + "url": "https://github.com/bagder/curl/blob/master/COPYING", + "osiApproved": false + }, + "diffmark": { + "name": "diffmark license", + "url": "https://fedoraproject.org/wiki/Licensing/diffmark", + "osiApproved": false + }, + "dvipdfm": { + "name": "dvipdfm License", + "url": "https://fedoraproject.org/wiki/Licensing/dvipdfm", + "osiApproved": false + }, + "eCos-2.0": { + "name": "eCos license version 2.0", + "url": "https://www.gnu.org/licenses/ecos-license.html", + "osiApproved": false + }, + "eGenix": { + "name": "eGenix.com Public License 1.1.0", + "url": "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", + "osiApproved": false + }, + "etalab-2.0": { + "name": "Etalab Open License 2.0", + "url": "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", + "osiApproved": false + }, + "gSOAP-1.3b": { + "name": "gSOAP Public License v1.3b", + "url": "http://www.cs.fsu.edu/~engelen/license.html", + "osiApproved": false + }, + "gnuplot": { + "name": "gnuplot License", + "url": "https://fedoraproject.org/wiki/Licensing/Gnuplot", + "osiApproved": false + }, + "iMatix": { + "name": "iMatix Standard Function Library Agreement", + "url": "http://legacy.imatix.com/html/sfl/sfl4.htm#license", + "osiApproved": false + }, + "libpng-2.0": { + "name": "PNG Reference Library version 2", + "url": "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt", + "osiApproved": false + }, + "libselinux-1.0": { + "name": "libselinux public domain notice", + "url": "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE", + "osiApproved": false + }, + "libtiff": { + "name": "libtiff License", + "url": "https://fedoraproject.org/wiki/Licensing/libtiff", + "osiApproved": false + }, + "mpich2": { + "name": "mpich2 License", + "url": "https://fedoraproject.org/wiki/Licensing/MIT", + "osiApproved": false + }, + "psfrag": { + "name": "psfrag License", + "url": "https://fedoraproject.org/wiki/Licensing/psfrag", + "osiApproved": false + }, + "psutils": { + "name": "psutils License", + "url": "https://fedoraproject.org/wiki/Licensing/psutils", + "osiApproved": false + }, + "wxWindows": { + "name": "wxWindows Library License", + "url": "https://opensource.org/licenses/WXwindows", + "osiApproved": false + }, + "xinetd": { + "name": "xinetd License", + "url": "https://fedoraproject.org/wiki/Licensing/Xinetd_License", + "osiApproved": false + }, + "xpp": { + "name": "XPP License", + "url": "https://fedoraproject.org/wiki/Licensing/xpp", + "osiApproved": false + }, + "zlib-acknowledgement": { + "name": "zlib/libpng License with Acknowledgement", + "url": "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement", + "osiApproved": false + } +} \ No newline at end of file From 998ab162d4a0f2ef91299141d6db684aaad4f9eb Mon Sep 17 00:00:00 2001 From: lionellloh Date: Sat, 13 Jun 2020 03:43:02 +0800 Subject: [PATCH 05/98] brew audit: Included json gem, does conditional check on github --- Library/Homebrew/Gemfile | 2 ++ Library/Homebrew/Gemfile.lock | 1 + Library/Homebrew/dev-cmd/audit.rb | 33 ++++++++++++++++++++++++++----- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/Gemfile b/Library/Homebrew/Gemfile index 7335e0ffc..e87949183 100644 --- a/Library/Homebrew/Gemfile +++ b/Library/Homebrew/Gemfile @@ -13,6 +13,8 @@ gem "rspec-retry", require: false gem "rspec-wait", require: false gem "rubocop" gem "simplecov", require: false +gem "json", require: false + if ENV["HOMEBREW_SORBET"] gem "sorbet" gem "sorbet-runtime" diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index ab77ab5f4..970e3340a 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -128,6 +128,7 @@ DEPENDENCIES byebug concurrent-ruby coveralls (~> 0.8) + json mechanize parallel_tests plist diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index f890cc977..bfd570a4e 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -347,13 +347,37 @@ module Homebrew file = File.open(File.expand_path(path)) valid_licenses = JSON.load(file) unless formula.license.nil? - return if valid_licenses.key?(formula.license) - problem "#{formula.license} is not an SPDX license." + if valid_licenses.key?(formula.license) + return unless @online + user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}, false) + return if user.nil? + github_license = get_repo_license_data(user, repo) + if github_license && (github_license == formula.license) + return + else + problem "License mismatch - Github license is: #{github_license}, but Formulae license states: #{formula.license}" + end + else + problem "#{formula.license} is not an SPDX license." + end else problem "No license specified for package." end end + + + def get_repo_license_data(user, repo) + return unless @online + begin + res = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") + return nil unless res.key?("license") + return res["license"]["spdx_id"] || nil + rescue GitHub::HTTPNotFoundError + nil + end + end + def audit_deps @specs.each do |spec| # Check for things we don't like to depend on. @@ -558,11 +582,10 @@ module Homebrew new_formula_problem warning end - def get_repo_data(regex) + def get_repo_data(regex, new_formula_only=true) return unless @core_tap return unless @online - return unless @new_formula - + return unless @new_formula if new_formula_only _, user, repo = *regex.match(formula.stable.url) if formula.stable _, user, repo = *regex.match(formula.homepage) unless user return if !user || !repo From ff1016b72997c3f6f33d39d48b335c08c734df24 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 16 Jun 2020 00:19:32 +0800 Subject: [PATCH 06/98] Modify code to load spdx data once --- Library/Homebrew/dev-cmd/audit.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index bfd570a4e..c6120e883 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -110,7 +110,9 @@ module Homebrew # Check style in a single batch run up front for performance style_results = Style.check_style_json(style_files, options) if style_files - + # load licenses + path = File.join(File.dirname(__FILE__),"spdx.json") + spdx_ids = JSON.load( File.open(File.expand_path(path))) new_formula_problem_lines = [] audit_formulae.sort.each do |f| only = only_cops ? ["style"] : args.only @@ -121,6 +123,7 @@ module Homebrew git: git, only: only, except: args.except, + spdx_ids: spdx_ids } options[:style_offenses] = style_results.file_offenses(f.path) if style_results options[:display_cop_names] = args.display_cop_names? @@ -224,6 +227,7 @@ module Homebrew @new_formula_problems = [] @text = FormulaText.new(formula.path) @specs = %w[stable devel head].map { |s| formula.send(s) }.compact + @spdx_ids = options[:spdx_ids] end def audit_style @@ -343,11 +347,8 @@ module Homebrew ].freeze def audit_licenses - path = File.join(File.dirname(__FILE__),"spdx.json") - file = File.open(File.expand_path(path)) - valid_licenses = JSON.load(file) unless formula.license.nil? - if valid_licenses.key?(formula.license) + if @spdx_ids.key?(formula.license) return unless @online user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}, false) return if user.nil? From 52c6e5de76322452f634cbcea7a7408370f5becf Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 16 Jun 2020 01:00:36 +0800 Subject: [PATCH 07/98] Fixed brew style offences --- Library/Homebrew/Gemfile | 2 +- Library/Homebrew/dev-cmd/audit.rb | 43 +++++++++++++++++-------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/Library/Homebrew/Gemfile b/Library/Homebrew/Gemfile index e87949183..61b165c14 100644 --- a/Library/Homebrew/Gemfile +++ b/Library/Homebrew/Gemfile @@ -5,6 +5,7 @@ source "https://rubygems.org" # installed gems gem "byebug" gem "coveralls", "~> 0.8", require: false +gem "json", require: false gem "parallel_tests" gem "ronn", require: false gem "rspec" @@ -13,7 +14,6 @@ gem "rspec-retry", require: false gem "rspec-wait", require: false gem "rubocop" gem "simplecov", require: false -gem "json", require: false if ENV["HOMEBREW_SORBET"] gem "sorbet" diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index c6120e883..e15404b7d 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -12,7 +12,7 @@ require "date" require "missing_formula" require "digest" require "cli/parser" -require 'json' +require "json" module Homebrew module_function @@ -111,8 +111,8 @@ module Homebrew # Check style in a single batch run up front for performance style_results = Style.check_style_json(style_files, options) if style_files # load licenses - path = File.join(File.dirname(__FILE__),"spdx.json") - spdx_ids = JSON.load( File.open(File.expand_path(path))) + path = File.join(File.dirname(__FILE__), "spdx.json") + spdx_ids = JSON.parse(File.open(File.expand_path(path)).read) new_formula_problem_lines = [] audit_formulae.sort.each do |f| only = only_cops ? ["style"] : args.only @@ -123,7 +123,7 @@ module Homebrew git: git, only: only, except: args.except, - spdx_ids: spdx_ids + spdx_ids: spdx_ids, } options[:style_offenses] = style_results.file_offenses(f.path) if style_results options[:display_cop_names] = args.display_cop_names? @@ -347,33 +347,34 @@ module Homebrew ].freeze def audit_licenses - unless formula.license.nil? + if formula.license if @spdx_ids.key?(formula.license) return unless @online - user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}, false) - return if user.nil? - github_license = get_repo_license_data(user, repo) - if github_license && (github_license == formula.license) - return - else - problem "License mismatch - Github license is: #{github_license}, but Formulae license states: #{formula.license}" - end + + user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}, false) + return if user.nil? + + github_license = get_repo_license_data(user, repo) + return if github_license && (github_license == formula.license) + + problem "License mismatch - Github license is: #{github_license}, \ +but Formulae license states: #{formula.license}" else problem "#{formula.license} is not an SPDX license." end else problem "No license specified for package." end - end - - + end def get_repo_license_data(user, repo) return unless @online + begin res = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") - return nil unless res.key?("license") - return res["license"]["spdx_id"] || nil + return unless res.key?("license") + + res["license"]["spdx_id"] || nil rescue GitHub::HTTPNotFoundError nil end @@ -583,10 +584,12 @@ module Homebrew new_formula_problem warning end - def get_repo_data(regex, new_formula_only=true) + def get_repo_data(regex, new_formula_only = true) return unless @core_tap return unless @online - return unless @new_formula if new_formula_only + + return unless @new_formula || !new_formula_only + _, user, repo = *regex.match(formula.stable.url) if formula.stable _, user, repo = *regex.match(formula.homepage) unless user return if !user || !repo From 51fb414517234ff0000663663a23561da28602c1 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 16 Jun 2020 01:18:40 +0800 Subject: [PATCH 08/98] create: include license field automatically --- Library/Homebrew/formula_creator.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/formula_creator.rb b/Library/Homebrew/formula_creator.rb index caa1d8189..65ff9bc1a 100644 --- a/Library/Homebrew/formula_creator.rb +++ b/Library/Homebrew/formula_creator.rb @@ -5,7 +5,7 @@ require "erb" module Homebrew class FormulaCreator - attr_reader :url, :sha256, :desc, :homepage + attr_reader :url, :sha256, :desc, :homepage, :license attr_accessor :name, :version, :tap, :path, :mode def url=(url) @@ -100,6 +100,7 @@ module Homebrew <% end %> sha256 "#{sha256}" <% end %> + license "#{license}" <% if mode == :cmake %> depends_on "cmake" => :build From ac6ea4de4625c7bd0c750ffb16f550edc97f6900 Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 17 Jun 2020 03:38:06 +0800 Subject: [PATCH 09/98] audit: check if a license field is empty --- Library/Homebrew/dev-cmd/audit.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index e15404b7d..023974d63 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -206,7 +206,7 @@ module Homebrew class FormulaAuditor include FormulaCellarChecks - attr_reader :formula, :text, :problems, :new_formula_problems + attr_reader :formula, :text, :problems, :new_formula_problems, :spdx_ids def initialize(formula, options = {}) @formula = formula @@ -346,8 +346,8 @@ module Homebrew openssl@1.1 ].freeze - def audit_licenses - if formula.license + def audit_license + if ! formula.license.blank? if @spdx_ids.key?(formula.license) return unless @online @@ -360,7 +360,7 @@ module Homebrew problem "License mismatch - Github license is: #{github_license}, \ but Formulae license states: #{formula.license}" else - problem "#{formula.license} is not an SPDX license." + problem "#{formula.license} is not a standard SPDX license id." end else problem "No license specified for package." From 44aac2474e0e8b5deb2a31e06a97a75ef1db7591 Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 17 Jun 2020 03:39:00 +0800 Subject: [PATCH 10/98] dev-cmd/audit_spec: check if license info exists and if it is a standard spdx-id --- Library/Homebrew/test/dev-cmd/audit_spec.rb | 46 +++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 0a437b20d..9137359c4 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -95,6 +95,52 @@ module Homebrew end end + describe "#audit_license" do + let(:spdx_ids) { + full_path = File.join(File.expand_path(File.dirname(__FILE__) + "../../../dev-cmd/"), "spdx.json") + JSON.parse(File.open(full_path).read) + } + + let(:custom_spdx_id) { "zzz" } + + it "detects no license info" do + fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids + class Foo < Formula + url "https://brew.sh/foo-1.0.tgz" + license "" + end + RUBY + + fa.audit_license + p fa.problems + expect(fa.problems.first).to match ("No license specified for package.") + end + + it "detects if license is not a standard spdx-id" do + fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids + class Foo < Formula + url "https://brew.sh/foo-1.0.tgz" + license "#{custom_spdx_id}" + end + RUBY + + fa.audit_license + expect(fa.problems.first).to match ("#{custom_spdx_id} is not a standard SPDX license id.") + end + + it "verifies that a license info is a standard spdx id" do + fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids + class Foo < Formula + url "https://brew.sh/foo-1.0.tgz" + license "0BSD" + end + RUBY + + fa.audit_license + expect(fa.problems).to be_empty + end + end + describe "#audit_file" do specify "DATA but no __END__" do fa = formula_auditor "foo", <<~RUBY From ba824d9488de3ad4e8efd58478f3ba3d9aaf1684 Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 17 Jun 2020 04:14:57 +0800 Subject: [PATCH 11/98] audit: remove spdx-id as a attr_reader attribute --- Library/Homebrew/dev-cmd/audit.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 023974d63..94be995ff 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -206,7 +206,7 @@ module Homebrew class FormulaAuditor include FormulaCellarChecks - attr_reader :formula, :text, :problems, :new_formula_problems, :spdx_ids + attr_reader :formula, :text, :problems, :new_formula_problems def initialize(formula, options = {}) @formula = formula @@ -358,7 +358,7 @@ module Homebrew return if github_license && (github_license == formula.license) problem "License mismatch - Github license is: #{github_license}, \ -but Formulae license states: #{formula.license}" +but Formulae license states: #{formula.license}." else problem "#{formula.license} is not a standard SPDX license id." end From e8f6e651d1354aeeeab5214b7d533db1e4cc6c24 Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 17 Jun 2020 04:16:01 +0800 Subject: [PATCH 12/98] dev-cmd/audit_spec: WIP: online mismatch does not return any problems in test environment --- Library/Homebrew/test/dev-cmd/audit_spec.rb | 50 +++++++++++++++++---- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 9137359c4..f9692a7b1 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -102,6 +102,7 @@ module Homebrew } let(:custom_spdx_id) { "zzz" } + let(:standard_mismatch_spdx_id) { "0BSD" } it "detects no license info" do fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids @@ -113,7 +114,7 @@ module Homebrew fa.audit_license p fa.problems - expect(fa.problems.first).to match ("No license specified for package.") + expect(fa.problems.first).to match "No license specified for package." end it "detects if license is not a standard spdx-id" do @@ -125,21 +126,54 @@ module Homebrew RUBY fa.audit_license - expect(fa.problems.first).to match ("#{custom_spdx_id} is not a standard SPDX license id.") + expect(fa.problems.first).to match "#{custom_spdx_id} is not a standard SPDX license id." end - it "verifies that a license info is a standard spdx id" do - fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids + it "verifies that a license info is a standard spdx id" do + fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids class Foo < Formula url "https://brew.sh/foo-1.0.tgz" license "0BSD" end - RUBY + RUBY - fa.audit_license - expect(fa.problems).to be_empty + fa.audit_license + expect(fa.problems).to be_empty + end + + it "checks online and verifies that a standard license id is the same as what is indicated on its Github repo" do + fa = formula_auditor "cask", <<~RUBY, spdx_ids: spdx_ids, online: true + class Cask < Formula + url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" + sha256 "02f8bb20b33b23fb11e7d2a1d282519dfdb8b3090b9672448b8c2c2cacd3e478" + head "https://github.com/cask/cask.git" + license "GPL-3.0" + end + RUBY + + fa.audit_license + expect(fa.problems).to be_empty + end + + # TODO: fix this test + it "checks online and detects that a formula-specified license is not the same as what is indicated on its Github repository" do + fa = formula_auditor "cask", <<~RUBY, strict: true, online: true, spdx_ids: spdx_ids + class Cask < Formula + desc "Emacs dependency management" + homepage "https://cask.readthedocs.org/" + url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" + sha256 "02f8bb20b33b23fb11e7d2a1d282519dfdb8b3090b9672448b8c2c2cacd3e478" + head "https://github.com/cask/cask.git" + license "0BSD" + end + RUBY + + fa.audit_license + expect(fa.problems).to be_empty + # match "License mismatch - Github license is: GPL-3.0, \ + # but Formulae license states: #{standard_mismatch_spdx_id}." + end end - end describe "#audit_file" do specify "DATA but no __END__" do From 03fc6b2c157a20389a0be829562f8a44aeb2a393 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Wed, 17 Jun 2020 05:19:38 +0800 Subject: [PATCH 13/98] audit_spec: override core-tap attribute in online test --- Library/Homebrew/dev-cmd/audit.rb | 4 +-- Library/Homebrew/test/dev-cmd/audit_spec.rb | 27 +++++++++------------ 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 94be995ff..cebaa0766 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -357,8 +357,8 @@ module Homebrew github_license = get_repo_license_data(user, repo) return if github_license && (github_license == formula.license) - problem "License mismatch - Github license is: #{github_license}, \ -but Formulae license states: #{formula.license}." + problem "License mismatch - Github license is: #{github_license}, "\ + "but Formulae license states: #{formula.license}." else problem "#{formula.license} is not a standard SPDX license id." end diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index f9692a7b1..09ca81f4f 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -141,11 +141,11 @@ module Homebrew expect(fa.problems).to be_empty end - it "checks online and verifies that a standard license id is the same as what is indicated on its Github repo" do - fa = formula_auditor "cask", <<~RUBY, spdx_ids: spdx_ids, online: true + it "checks online and verifies that a standard license id is the same "\ + "as what is indicated on its Github repo" do + fa = formula_auditor "cask", <<~RUBY, spdx_ids: spdx_ids, online: true, core_tap: true class Cask < Formula url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" - sha256 "02f8bb20b33b23fb11e7d2a1d282519dfdb8b3090b9672448b8c2c2cacd3e478" head "https://github.com/cask/cask.git" license "GPL-3.0" end @@ -155,23 +155,20 @@ module Homebrew expect(fa.problems).to be_empty end - # TODO: fix this test - it "checks online and detects that a formula-specified license is not the same as what is indicated on its Github repository" do - fa = formula_auditor "cask", <<~RUBY, strict: true, online: true, spdx_ids: spdx_ids + it "checks online and detects that a formula-specified license is not "\ + "the same as what is indicated on its Github repository" do + # odie "lol" + fa = formula_auditor "cask", <<~RUBY, online: true, spdx_ids: spdx_ids, core_tap: true class Cask < Formula - desc "Emacs dependency management" - homepage "https://cask.readthedocs.org/" - url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" - sha256 "02f8bb20b33b23fb11e7d2a1d282519dfdb8b3090b9672448b8c2c2cacd3e478" - head "https://github.com/cask/cask.git" - license "0BSD" + url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" + head "https://github.com/cask/cask.git" + license "#{standard_mismatch_spdx_id}" end RUBY fa.audit_license - expect(fa.problems).to be_empty - # match "License mismatch - Github license is: GPL-3.0, \ - # but Formulae license states: #{standard_mismatch_spdx_id}." + expect(fa.problems.first).to match "License mismatch - Github license is: GPL-3.0, "\ + "but Formulae license states: #{standard_mismatch_spdx_id}." end end From 3bfca5bcee54846e4e378e53b5783f50edb1ff1a Mon Sep 17 00:00:00 2001 From: lionellloh Date: Wed, 17 Jun 2020 21:45:51 +0800 Subject: [PATCH 14/98] audit: change location of spdx.json file --- Library/Homebrew/{dev-cmd => data}/spdx.json | 0 Library/Homebrew/dev-cmd/audit.rb | 4 ++-- Library/Homebrew/test/dev-cmd/audit_spec.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename Library/Homebrew/{dev-cmd => data}/spdx.json (100%) diff --git a/Library/Homebrew/dev-cmd/spdx.json b/Library/Homebrew/data/spdx.json similarity index 100% rename from Library/Homebrew/dev-cmd/spdx.json rename to Library/Homebrew/data/spdx.json diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index cebaa0766..f2482be03 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -111,8 +111,8 @@ module Homebrew # Check style in a single batch run up front for performance style_results = Style.check_style_json(style_files, options) if style_files # load licenses - path = File.join(File.dirname(__FILE__), "spdx.json") - spdx_ids = JSON.parse(File.open(File.expand_path(path)).read) + full_path = File.join(File.dirname(__FILE__), "../data/spdx.json") + spdx_ids = JSON.parse(File.open(full_path).read) new_formula_problem_lines = [] audit_formulae.sort.each do |f| only = only_cops ? ["style"] : args.only diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 09ca81f4f..91b1cc77f 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -97,7 +97,7 @@ module Homebrew describe "#audit_license" do let(:spdx_ids) { - full_path = File.join(File.expand_path(File.dirname(__FILE__) + "../../../dev-cmd/"), "spdx.json") + full_path = File.join(File.expand_path(File.dirname(__FILE__) + "../../../data/"), "spdx.json") JSON.parse(File.open(full_path).read) } From 0b95f030fd7984ed4b073ed6fb9c8c2b092b7327 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Wed, 17 Jun 2020 22:13:04 +0800 Subject: [PATCH 15/98] audit: fix code review changes --- Library/Homebrew/dev-cmd/audit.rb | 6 ++++-- Library/Homebrew/test/dev-cmd/audit_spec.rb | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index f2482be03..002c9d637 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -112,7 +112,9 @@ module Homebrew style_results = Style.check_style_json(style_files, options) if style_files # load licenses full_path = File.join(File.dirname(__FILE__), "../data/spdx.json") - spdx_ids = JSON.parse(File.open(full_path).read) + spdx_ids = File.open(full_path, "r") do |f| + JSON.parse(f.read) + end new_formula_problem_lines = [] audit_formulae.sort.each do |f| only = only_cops ? ["style"] : args.only @@ -347,7 +349,7 @@ module Homebrew ].freeze def audit_license - if ! formula.license.blank? + if !formula.license.blank? if @spdx_ids.key?(formula.license) return unless @online diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 91b1cc77f..215d71184 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -97,8 +97,12 @@ module Homebrew describe "#audit_license" do let(:spdx_ids) { - full_path = File.join(File.expand_path(File.dirname(__FILE__) + "../../../data/"), "spdx.json") - JSON.parse(File.open(full_path).read) + # full_path = File.join(File.expand_path(File.dirname(__FILE__) + "../../../data/"), "spdx.json") + full_path = File.join(File.dirname(__FILE__), "../../data/spdx.json") + p full_path + File.open(full_path, "r") do |f| + JSON.parse(f.read) + end } let(:custom_spdx_id) { "zzz" } @@ -145,9 +149,9 @@ module Homebrew "as what is indicated on its Github repo" do fa = formula_auditor "cask", <<~RUBY, spdx_ids: spdx_ids, online: true, core_tap: true class Cask < Formula - url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" - head "https://github.com/cask/cask.git" - license "GPL-3.0" + url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" + head "https://github.com/cask/cask.git" + license "GPL-3.0" end RUBY @@ -157,12 +161,11 @@ module Homebrew it "checks online and detects that a formula-specified license is not "\ "the same as what is indicated on its Github repository" do - # odie "lol" fa = formula_auditor "cask", <<~RUBY, online: true, spdx_ids: spdx_ids, core_tap: true class Cask < Formula - url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" - head "https://github.com/cask/cask.git" - license "#{standard_mismatch_spdx_id}" + url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" + head "https://github.com/cask/cask.git" + license "#{standard_mismatch_spdx_id}" end RUBY From d92f747b1e1ac9e4fdc4f839174cf36d89aab879 Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 17 Jun 2020 22:52:25 +0800 Subject: [PATCH 16/98] create: add license field as parsable arg --- Library/Homebrew/dev-cmd/create.rb | 5 +++++ Library/Homebrew/formula_creator.rb | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/dev-cmd/create.rb b/Library/Homebrew/dev-cmd/create.rb index 3fe90865c..fd519ba0d 100644 --- a/Library/Homebrew/dev-cmd/create.rb +++ b/Library/Homebrew/dev-cmd/create.rb @@ -45,8 +45,11 @@ module Homebrew description: "Explicitly set the of the new formula." flag "--set-version=", description: "Explicitly set the of the new formula." + flag "--set-license=", + description: "Explicitly set the of the new formula." flag "--tap=", description: "Generate the new formula within the given tap, specified as `/`." + switch :force switch :verbose switch :debug @@ -66,11 +69,13 @@ module Homebrew version = args.set_version name = args.set_name + license = args.set_license tap = args.tap fc = FormulaCreator.new fc.name = name fc.version = version + fc.license = license fc.tap = Tap.fetch(tap || "homebrew/core") raise TapUnavailableError, tap unless fc.tap.installed? diff --git a/Library/Homebrew/formula_creator.rb b/Library/Homebrew/formula_creator.rb index 65ff9bc1a..251eddf11 100644 --- a/Library/Homebrew/formula_creator.rb +++ b/Library/Homebrew/formula_creator.rb @@ -5,8 +5,8 @@ require "erb" module Homebrew class FormulaCreator - attr_reader :url, :sha256, :desc, :homepage, :license - attr_accessor :name, :version, :tap, :path, :mode + attr_reader :url, :sha256, :desc, :homepage + attr_accessor :name, :version, :tap, :path, :mode, :license def url=(url) @url = url @@ -49,6 +49,7 @@ module Homebrew end def generate! + p "generate" raise "#{path} already exists" if path.exist? if version.nil? || version.null? From 2b669685054531ba369601a2a6f21fd3f20d0e27 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Wed, 17 Jun 2020 22:55:02 +0800 Subject: [PATCH 17/98] audit: cosmetic changes --- Library/Homebrew/test/dev-cmd/audit_spec.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 215d71184..9802f40bd 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -97,9 +97,7 @@ module Homebrew describe "#audit_license" do let(:spdx_ids) { - # full_path = File.join(File.expand_path(File.dirname(__FILE__) + "../../../data/"), "spdx.json") full_path = File.join(File.dirname(__FILE__), "../../data/spdx.json") - p full_path File.open(full_path, "r") do |f| JSON.parse(f.read) end From 610dfe0fc2ae77527c08785e23c006f0c9736142 Mon Sep 17 00:00:00 2001 From: Lionell Date: Thu, 18 Jun 2020 00:44:33 +0800 Subject: [PATCH 18/98] audit: fixed with PR comments. Refactored get_repo_license api call and audit_license only new_formula --- Library/Homebrew/dev-cmd/audit.rb | 28 +++++++++++++++------------- Library/Homebrew/utils/github.rb | 9 +++++++++ 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index ed7850960..007a91409 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -349,6 +349,8 @@ module Homebrew ].freeze def audit_license + return unless @new_formula + if !formula.license.blank? if @spdx_ids.key?(formula.license) return unless @online @@ -356,7 +358,7 @@ module Homebrew user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}, false) return if user.nil? - github_license = get_repo_license_data(user, repo) + github_license = GitHub.get_repo_license(user, repo) return if github_license && (github_license == formula.license) problem "License mismatch - Github license is: #{github_license}, "\ @@ -369,18 +371,18 @@ module Homebrew end end - def get_repo_license_data(user, repo) - return unless @online - - begin - res = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") - return unless res.key?("license") - - res["license"]["spdx_id"] || nil - rescue GitHub::HTTPNotFoundError - nil - end - end + # def get_github_repo_license_data(user, repo) + # return unless @online + # + # begin + # res = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") + # return unless res.key?("license") + # + # res["license"]["spdx_id"] || nil + # rescue GitHub::HTTPNotFoundError + # nil + # end + # end def audit_deps @specs.each do |spec| diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 556089c09..244bb397f 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -476,6 +476,15 @@ module GitHub open_api(url, scopes: ["admin:org", "user"], data: data, request_method: "POST") end + def get_repo_license(user, repo) + res = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") + return unless res.key?("license") + + res["license"]["spdx_id"] || nil + rescue GitHub::HTTPNotFoundError + nil + end + def api_errors [GitHub::AuthenticationFailedError, GitHub::HTTPNotFoundError, GitHub::RateLimitExceededError, GitHub::Error, JSON::ParserError].freeze From f78d4f41a08a8392559ed521f4ae5c771fb2c18b Mon Sep 17 00:00:00 2001 From: Lionell Date: Thu, 18 Jun 2020 00:45:13 +0800 Subject: [PATCH 19/98] audit spec: include cases for new formula --- Library/Homebrew/test/dev-cmd/audit_spec.rb | 23 ++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 9802f40bd..6878142d3 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -106,8 +106,21 @@ module Homebrew let(:custom_spdx_id) { "zzz" } let(:standard_mismatch_spdx_id) { "0BSD" } + it "does not check if the formula is not a new formula" do + fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids, new_formula: false + class Foo < Formula + url "https://brew.sh/foo-1.0.tgz" + license "" + end + RUBY + + fa.audit_license + p fa.problems + expect(fa.problems).to be_empty + end + it "detects no license info" do - fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids + fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids, new_formula: true class Foo < Formula url "https://brew.sh/foo-1.0.tgz" license "" @@ -120,7 +133,7 @@ module Homebrew end it "detects if license is not a standard spdx-id" do - fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids + fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids, new_formula: true class Foo < Formula url "https://brew.sh/foo-1.0.tgz" license "#{custom_spdx_id}" @@ -132,7 +145,7 @@ module Homebrew end it "verifies that a license info is a standard spdx id" do - fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids + fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids, new_formula: true class Foo < Formula url "https://brew.sh/foo-1.0.tgz" license "0BSD" @@ -145,7 +158,7 @@ module Homebrew it "checks online and verifies that a standard license id is the same "\ "as what is indicated on its Github repo" do - fa = formula_auditor "cask", <<~RUBY, spdx_ids: spdx_ids, online: true, core_tap: true + fa = formula_auditor "cask", <<~RUBY, spdx_ids: spdx_ids, online: true, core_tap: true, new_formula: true class Cask < Formula url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" head "https://github.com/cask/cask.git" @@ -159,7 +172,7 @@ module Homebrew it "checks online and detects that a formula-specified license is not "\ "the same as what is indicated on its Github repository" do - fa = formula_auditor "cask", <<~RUBY, online: true, spdx_ids: spdx_ids, core_tap: true + fa = formula_auditor "cask", <<~RUBY, online: true, spdx_ids: spdx_ids, core_tap: true, new_formula: true class Cask < Formula url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" head "https://github.com/cask/cask.git" From d084356959b0f8b5ba1b2ba99d20be8632c2042f Mon Sep 17 00:00:00 2001 From: Lionell Date: Thu, 18 Jun 2020 00:48:22 +0800 Subject: [PATCH 20/98] create: removed print statement --- Library/Homebrew/formula_creator.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/Library/Homebrew/formula_creator.rb b/Library/Homebrew/formula_creator.rb index 251eddf11..c040d8f1b 100644 --- a/Library/Homebrew/formula_creator.rb +++ b/Library/Homebrew/formula_creator.rb @@ -49,7 +49,6 @@ module Homebrew end def generate! - p "generate" raise "#{path} already exists" if path.exist? if version.nil? || version.null? From 3f6d3e5cf0abea0c10c4efbdc245e76131fd7ebd Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Tue, 16 Jun 2020 20:35:40 +0200 Subject: [PATCH 21/98] Support casks in readall --- Library/Homebrew/cmd/readall.rb | 8 ++--- Library/Homebrew/extend/os/linux/readall.rb | 9 ++++++ Library/Homebrew/extend/os/readall.rb | 3 ++ Library/Homebrew/readall.rb | 34 ++++++++++++++++----- docs/Manpage.md | 8 ++--- manpages/brew.1 | 2 +- 6 files changed, 47 insertions(+), 17 deletions(-) create mode 100644 Library/Homebrew/extend/os/linux/readall.rb create mode 100644 Library/Homebrew/extend/os/readall.rb diff --git a/Library/Homebrew/cmd/readall.rb b/Library/Homebrew/cmd/readall.rb index 410ce894b..2eedf9cb5 100644 --- a/Library/Homebrew/cmd/readall.rb +++ b/Library/Homebrew/cmd/readall.rb @@ -11,10 +11,10 @@ module Homebrew usage_banner <<~EOS `readall` [] [] - Import all formulae from the specified , or from all installed taps if none is provided. - This can be useful for debugging issues across all formulae when making + Import all items from the specified , or from all installed taps if none is provided. + This can be useful for debugging issues across all items when making significant changes to `formula.rb`, testing the performance of loading - all formulae or checking if any current formulae have Ruby issues. + all items or checking if any current formulae/casks have Ruby issues. EOS switch "--aliases", description: "Verify any alias symlinks in each tap." @@ -30,7 +30,7 @@ module Homebrew if args.syntax? scan_files = "#{HOMEBREW_LIBRARY_PATH}/**/*.rb" - ruby_files = Dir.glob(scan_files).reject { |file| file =~ %r{/(vendor|cask)/} } + ruby_files = Dir.glob(scan_files).reject { |file| file =~ %r{/(vendor)/} } Homebrew.failed = true unless Readall.valid_ruby_syntax?(ruby_files) end diff --git a/Library/Homebrew/extend/os/linux/readall.rb b/Library/Homebrew/extend/os/linux/readall.rb new file mode 100644 index 000000000..e9278821e --- /dev/null +++ b/Library/Homebrew/extend/os/linux/readall.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Readall + class << self + def valid_casks?(*) + true + end + end +end diff --git a/Library/Homebrew/extend/os/readall.rb b/Library/Homebrew/extend/os/readall.rb new file mode 100644 index 000000000..6ddbc3e6d --- /dev/null +++ b/Library/Homebrew/extend/os/readall.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +require "extend/os/linux/readall" if OS.linux? diff --git a/Library/Homebrew/readall.rb b/Library/Homebrew/readall.rb index 54c74c01a..491c406cb 100644 --- a/Library/Homebrew/readall.rb +++ b/Library/Homebrew/readall.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "formula" +require "cask/cask_loader" module Readall class << self @@ -35,28 +36,43 @@ module Readall end def valid_formulae?(formulae) - failed = false + success = true formulae.each do |file| Formulary.factory(file) rescue Interrupt raise rescue Exception => e # rubocop:disable Lint/RescueException onoe "Invalid formula: #{file}" - puts e - failed = true + $stderr.puts e + success = false end - !failed + success + end + + def valid_casks?(casks) + success = true + casks.each do |file| + Cask::CaskLoader.load(file) + rescue Interrupt + raise + rescue Exception => e # rubocop:disable Lint/RescueException + onoe "Invalid cask: #{file}" + $stderr.puts e + success = false + end + success end def valid_tap?(tap, options = {}) - failed = false + success = true if options[:aliases] valid_aliases = valid_aliases?(tap.alias_dir, tap.formula_dir) - failed = true unless valid_aliases + success = false unless valid_aliases end valid_formulae = valid_formulae?(tap.formula_files) - failed = true unless valid_formulae - !failed + valid_casks = valid_casks?(tap.cask_files) + success = false if !valid_formulae || !valid_casks + success end private @@ -79,3 +95,5 @@ module Readall end end end + +require "extend/os/readall" diff --git a/docs/Manpage.md b/docs/Manpage.md index 0b746685a..e242f36fc 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -367,10 +367,10 @@ Rerun the post-install steps for *`formula`*. ### `readall` [*`options`*] [*`tap`*] -Import all formulae from the specified *`tap`*, or from all installed taps if none -is provided. This can be useful for debugging issues across all formulae when -making significant changes to `formula.rb`, testing the performance of loading -all formulae or checking if any current formulae have Ruby issues. +Import all items from the specified *`tap`*, or from all installed taps if none is +provided. This can be useful for debugging issues across all items when making +significant changes to `formula.rb`, testing the performance of loading all +items or checking if any current formulae/casks have Ruby issues. * `--aliases`: Verify any alias symlinks in each tap. diff --git a/manpages/brew.1 b/manpages/brew.1 index 49bf5bd86..768ffb6b4 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -482,7 +482,7 @@ Pin the specified \fIformula\fR, preventing them from being upgraded when issuin Rerun the post\-install steps for \fIformula\fR\. . .SS "\fBreadall\fR [\fIoptions\fR] [\fItap\fR]" -Import all formulae from the specified \fItap\fR, or from all installed taps if none is provided\. This can be useful for debugging issues across all formulae when making significant changes to \fBformula\.rb\fR, testing the performance of loading all formulae or checking if any current formulae have Ruby issues\. +Import all items from the specified \fItap\fR, or from all installed taps if none is provided\. This can be useful for debugging issues across all items when making significant changes to \fBformula\.rb\fR, testing the performance of loading all items or checking if any current formulae/casks have Ruby issues\. . .TP \fB\-\-aliases\fR From 7744f181b96726d491ad875dc5720b7e0a861fd9 Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Fri, 19 Jun 2020 03:37:31 +0800 Subject: [PATCH 22/98] Update Library/Homebrew/dev-cmd/audit.rb Formatting change Co-authored-by: Mike McQuaid --- Library/Homebrew/dev-cmd/audit.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 007a91409..af2589ce5 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -361,8 +361,8 @@ module Homebrew github_license = GitHub.get_repo_license(user, repo) return if github_license && (github_license == formula.license) - problem "License mismatch - Github license is: #{github_license}, "\ - "but Formulae license states: #{formula.license}." + problem "License mismatch - GitHub license is: #{github_license}, "\ + "but Formulae license states: #{formula.license}." else problem "#{formula.license} is not a standard SPDX license id." end From eca528ccccf2c73c6059fc821f756de7630c6251 Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Fri, 19 Jun 2020 03:38:36 +0800 Subject: [PATCH 23/98] util github: remove nil as that is already expected behaviour Co-authored-by: Mike McQuaid --- Library/Homebrew/utils/github.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 244bb397f..2a6a67e91 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -480,7 +480,7 @@ module GitHub res = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") return unless res.key?("license") - res["license"]["spdx_id"] || nil + res["license"]["spdx_id"] rescue GitHub::HTTPNotFoundError nil end From b08d958064b3384d6616af814162b91acc020244 Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Fri, 19 Jun 2020 03:39:05 +0800 Subject: [PATCH 24/98] "license id" -> "license" Co-authored-by: Mike McQuaid --- Library/Homebrew/dev-cmd/audit.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index af2589ce5..3bdaabb3f 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -364,7 +364,7 @@ module Homebrew problem "License mismatch - GitHub license is: #{github_license}, "\ "but Formulae license states: #{formula.license}." else - problem "#{formula.license} is not a standard SPDX license id." + problem "#{formula.license} is not a standard SPDX license." end else problem "No license specified for package." From a0b0c77ee8c6cf326535cc1a02eb5f53fccfda5c Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Fri, 19 Jun 2020 03:58:34 +0800 Subject: [PATCH 25/98] audit license: use present instead of blank Co-authored-by: Mike McQuaid --- Library/Homebrew/dev-cmd/audit.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 3bdaabb3f..1e65db97a 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -349,9 +349,7 @@ module Homebrew ].freeze def audit_license - return unless @new_formula - - if !formula.license.blank? + if formula.license.present? if @spdx_ids.key?(formula.license) return unless @online From b2cccfcf68b131d2eab734b1e105a5b0407a06ba Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Fri, 19 Jun 2020 04:00:08 +0800 Subject: [PATCH 26/98] Apply suggestions from code review Co-authored-by: Mike McQuaid --- Library/Homebrew/dev-cmd/audit.rb | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 1e65db97a..ac68e2957 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -353,7 +353,7 @@ module Homebrew if @spdx_ids.key?(formula.license) return unless @online - user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}, false) + user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) return if user.nil? github_license = GitHub.get_repo_license(user, repo) @@ -369,19 +369,6 @@ module Homebrew end end - # def get_github_repo_license_data(user, repo) - # return unless @online - # - # begin - # res = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") - # return unless res.key?("license") - # - # res["license"]["spdx_id"] || nil - # rescue GitHub::HTTPNotFoundError - # nil - # end - # end - def audit_deps @specs.each do |spec| # Check for things we don't like to depend on. @@ -590,8 +577,6 @@ module Homebrew return unless @core_tap return unless @online - return unless @new_formula || !new_formula_only - _, user, repo = *regex.match(formula.stable.url) if formula.stable _, user, repo = *regex.match(formula.homepage) unless user return if !user || !repo From 4cb22ca899b2bb9cfa512573b01af5c0b57d8ee1 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Fri, 19 Jun 2020 04:08:50 +0800 Subject: [PATCH 27/98] license: update manpages --- docs/Manpage.md | 2 ++ manpages/brew.1 | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/docs/Manpage.md b/docs/Manpage.md index 0b746685a..ab6236778 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -785,6 +785,8 @@ a simple example. For the complete API, see: Explicitly set the *`name`* of the new formula. * `--set-version`: Explicitly set the *`version`* of the new formula. +* `--set-license`: + Explicitly set the *`license`* of the new formula. * `--tap`: Generate the new formula within the given tap, specified as *`user`*`/`*`repo`*. diff --git a/manpages/brew.1 b/manpages/brew.1 index 49bf5bd86..fd47c1a36 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -1031,6 +1031,10 @@ Explicitly set the \fIname\fR of the new formula\. Explicitly set the \fIversion\fR of the new formula\. . .TP +\fB\-\-set\-license\fR +Explicitly set the \fIlicense\fR of the new formula\. +. +.TP \fB\-\-tap\fR Generate the new formula within the given tap, specified as \fIuser\fR\fB/\fR\fIrepo\fR\. . From a58905000c25f0a6bb6c38d757290017510ed571 Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Fri, 19 Jun 2020 04:17:35 +0800 Subject: [PATCH 28/98] Update Library/Homebrew/dev-cmd/audit.rb audit license: suppress missing license problem unless it is a new_formula Co-authored-by: Mike McQuaid --- Library/Homebrew/dev-cmd/audit.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index ac68e2957..58483b41f 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -364,7 +364,7 @@ module Homebrew else problem "#{formula.license} is not a standard SPDX license." end - else + elsif @new_formula problem "No license specified for package." end end From 4287ea74d1549b0060f951aeeb8de51490b96498 Mon Sep 17 00:00:00 2001 From: Lionell Date: Fri, 19 Jun 2020 04:20:19 +0800 Subject: [PATCH 29/98] remove json from gemfile and modified get_repo_data --- Library/Homebrew/Gemfile | 1 - Library/Homebrew/dev-cmd/audit.rb | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Library/Homebrew/Gemfile b/Library/Homebrew/Gemfile index 458f288aa..917787658 100644 --- a/Library/Homebrew/Gemfile +++ b/Library/Homebrew/Gemfile @@ -5,7 +5,6 @@ source "https://rubygems.org" # installed gems gem "byebug" gem "coveralls", "~> 0.8", require: false -gem "json", require: false gem "parallel_tests" gem "ronn", require: false gem "rspec" diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index ac68e2957..dc4d9c9e0 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -573,7 +573,7 @@ module Homebrew new_formula_problem warning end - def get_repo_data(regex, new_formula_only = true) + def get_repo_data(regex) return unless @core_tap return unless @online From fa412f9bb4838901ebd16b15144e68b97cb5463a Mon Sep 17 00:00:00 2001 From: Lionell Date: Fri, 19 Jun 2020 04:24:36 +0800 Subject: [PATCH 30/98] audit spec: editted strings to matach audit problem strings --- Library/Homebrew/test/dev-cmd/audit_spec.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 6878142d3..eaef7af11 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -115,7 +115,6 @@ module Homebrew RUBY fa.audit_license - p fa.problems expect(fa.problems).to be_empty end @@ -141,7 +140,7 @@ module Homebrew RUBY fa.audit_license - expect(fa.problems.first).to match "#{custom_spdx_id} is not a standard SPDX license id." + expect(fa.problems.first).to match "#{custom_spdx_id} is not a standard SPDX license." end it "verifies that a license info is a standard spdx id" do @@ -181,7 +180,7 @@ module Homebrew RUBY fa.audit_license - expect(fa.problems.first).to match "License mismatch - Github license is: GPL-3.0, "\ + expect(fa.problems.first).to match "License mismatch - GitHub license is: GPL-3.0, "\ "but Formulae license states: #{standard_mismatch_spdx_id}." end end From bc28ee0f6dc24f17369ec11e2d0e6ba4f893364a Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 23 Jun 2020 01:38:21 +0800 Subject: [PATCH 31/98] license: update to new license format --- Library/Homebrew/data/spdx.json | 7341 ++++++++++++++++++++++--------- 1 file changed, 5296 insertions(+), 2045 deletions(-) diff --git a/Library/Homebrew/data/spdx.json b/Library/Homebrew/data/spdx.json index d09c5647e..530b2796f 100644 --- a/Library/Homebrew/data/spdx.json +++ b/Library/Homebrew/data/spdx.json @@ -1,2047 +1,5298 @@ { - "0BSD": { - "name": "BSD Zero Clause License", - "url": "http://landley.net/toybox/license.html", - "osiApproved": true - }, - "AAL": { - "name": "Attribution Assurance License", - "url": "https://opensource.org/licenses/attribution", - "osiApproved": true - }, - "ADSL": { - "name": "Amazon Digital Services License", - "url": "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense", - "osiApproved": false - }, - "AFL-1.1": { - "name": "Academic Free License v1.1", - "url": "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", - "osiApproved": true - }, - "AFL-1.2": { - "name": "Academic Free License v1.2", - "url": "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", - "osiApproved": true - }, - "AFL-2.0": { - "name": "Academic Free License v2.0", - "url": "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt", - "osiApproved": true - }, - "AFL-2.1": { - "name": "Academic Free License v2.1", - "url": "http://opensource.linux-mirror.org/licenses/afl-2.1.txt", - "osiApproved": true - }, - "AFL-3.0": { - "name": "Academic Free License v3.0", - "url": "http://www.rosenlaw.com/AFL3.0.htm", - "osiApproved": true - }, - "AGPL-1.0": { - "name": "Affero General Public License v1.0", - "url": "http://www.affero.org/oagpl.html", - "osiApproved": false - }, - "AGPL-1.0-only": { - "name": "Affero General Public License v1.0 only", - "url": "http://www.affero.org/oagpl.html", - "osiApproved": false - }, - "AGPL-1.0-or-later": { - "name": "Affero General Public License v1.0 or later", - "url": "http://www.affero.org/oagpl.html", - "osiApproved": false - }, - "AGPL-3.0": { - "name": "GNU Affero General Public License v3.0", - "url": "https://www.gnu.org/licenses/agpl.txt", - "osiApproved": true - }, - "AGPL-3.0-only": { - "name": "GNU Affero General Public License v3.0 only", - "url": "https://www.gnu.org/licenses/agpl.txt", - "osiApproved": true - }, - "AGPL-3.0-or-later": { - "name": "GNU Affero General Public License v3.0 or later", - "url": "https://www.gnu.org/licenses/agpl.txt", - "osiApproved": true - }, - "AMDPLPA": { - "name": "AMD's plpa_map.c License", - "url": "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License", - "osiApproved": false - }, - "AML": { - "name": "Apple MIT License", - "url": "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License", - "osiApproved": false - }, - "AMPAS": { - "name": "Academy of Motion Picture Arts and Sciences BSD", - "url": "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD", - "osiApproved": false - }, - "ANTLR-PD": { - "name": "ANTLR Software Rights Notice", - "url": "http://www.antlr2.org/license.html", - "osiApproved": false - }, - "APAFML": { - "name": "Adobe Postscript AFM License", - "url": "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM", - "osiApproved": false - }, - "APL-1.0": { - "name": "Adaptive Public License 1.0", - "url": "https://opensource.org/licenses/APL-1.0", - "osiApproved": true - }, - "APSL-1.0": { - "name": "Apple Public Source License 1.0", - "url": "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0", - "osiApproved": true - }, - "APSL-1.1": { - "name": "Apple Public Source License 1.1", - "url": "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE", - "osiApproved": true - }, - "APSL-1.2": { - "name": "Apple Public Source License 1.2", - "url": "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php", - "osiApproved": true - }, - "APSL-2.0": { - "name": "Apple Public Source License 2.0", - "url": "http://www.opensource.apple.com/license/apsl/", - "osiApproved": true - }, - "Abstyles": { - "name": "Abstyles License", - "url": "https://fedoraproject.org/wiki/Licensing/Abstyles", - "osiApproved": false - }, - "Adobe-2006": { - "name": "Adobe Systems Incorporated Source Code License Agreement", - "url": "https://fedoraproject.org/wiki/Licensing/AdobeLicense", - "osiApproved": false - }, - "Adobe-Glyph": { - "name": "Adobe Glyph List License", - "url": "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph", - "osiApproved": false - }, - "Afmparse": { - "name": "Afmparse License", - "url": "https://fedoraproject.org/wiki/Licensing/Afmparse", - "osiApproved": false - }, - "Aladdin": { - "name": "Aladdin Free Public License", - "url": "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm", - "osiApproved": false - }, - "Apache-1.0": { - "name": "Apache License 1.0", - "url": "http://www.apache.org/licenses/LICENSE-1.0", - "osiApproved": false - }, - "Apache-1.1": { - "name": "Apache License 1.1", - "url": "http://apache.org/licenses/LICENSE-1.1", - "osiApproved": true - }, - "Apache-2.0": { - "name": "Apache License 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0", - "osiApproved": true - }, - "Artistic-1.0": { - "name": "Artistic License 1.0", - "url": "https://opensource.org/licenses/Artistic-1.0", - "osiApproved": true - }, - "Artistic-1.0-Perl": { - "name": "Artistic License 1.0 (Perl)", - "url": "http://dev.perl.org/licenses/artistic.html", - "osiApproved": true - }, - "Artistic-1.0-cl8": { - "name": "Artistic License 1.0 w/clause 8", - "url": "https://opensource.org/licenses/Artistic-1.0", - "osiApproved": true - }, - "Artistic-2.0": { - "name": "Artistic License 2.0", - "url": "http://www.perlfoundation.org/artistic_license_2_0", - "osiApproved": true - }, - "BSD-1-Clause": { - "name": "BSD 1-Clause License", - "url": "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823", - "osiApproved": false - }, - "BSD-2-Clause": { - "name": "BSD 2-Clause \"Simplified\" License", - "url": "https://opensource.org/licenses/BSD-2-Clause", - "osiApproved": true - }, - "BSD-2-Clause-FreeBSD": { - "name": "BSD 2-Clause FreeBSD License", - "url": "http://www.freebsd.org/copyright/freebsd-license.html", - "osiApproved": false - }, - "BSD-2-Clause-NetBSD": { - "name": "BSD 2-Clause NetBSD License", - "url": "http://www.netbsd.org/about/redistribution.html#default", - "osiApproved": false - }, - "BSD-2-Clause-Patent": { - "name": "BSD-2-Clause Plus Patent License", - "url": "https://opensource.org/licenses/BSDplusPatent", - "osiApproved": true - }, - "BSD-3-Clause": { - "name": "BSD 3-Clause \"New\" or \"Revised\" License", - "url": "https://opensource.org/licenses/BSD-3-Clause", - "osiApproved": true - }, - "BSD-3-Clause-Attribution": { - "name": "BSD with attribution", - "url": "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution", - "osiApproved": false - }, - "BSD-3-Clause-Clear": { - "name": "BSD 3-Clause Clear License", - "url": "http://labs.metacarta.com/license-explanation.html#license", - "osiApproved": false - }, - "BSD-3-Clause-LBNL": { - "name": "Lawrence Berkeley National Labs BSD variant license", - "url": "https://fedoraproject.org/wiki/Licensing/LBNLBSD", - "osiApproved": true - }, - "BSD-3-Clause-No-Nuclear-License": { - "name": "BSD 3-Clause No Nuclear License", - "url": "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc", - "osiApproved": false - }, - "BSD-3-Clause-No-Nuclear-License-2014": { - "name": "BSD 3-Clause No Nuclear License 2014", - "url": "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense", - "osiApproved": false - }, - "BSD-3-Clause-No-Nuclear-Warranty": { - "name": "BSD 3-Clause No Nuclear Warranty", - "url": "https://jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt", - "osiApproved": false - }, - "BSD-3-Clause-Open-MPI": { - "name": "BSD 3-Clause Open MPI variant", - "url": "https://www.open-mpi.org/community/license.php", - "osiApproved": false - }, - "BSD-4-Clause": { - "name": "BSD 4-Clause \"Original\" or \"Old\" License", - "url": "http://directory.fsf.org/wiki/License:BSD_4Clause", - "osiApproved": false - }, - "BSD-4-Clause-UC": { - "name": "BSD-4-Clause (University of California-Specific)", - "url": "http://www.freebsd.org/copyright/license.html", - "osiApproved": false - }, - "BSD-Protection": { - "name": "BSD Protection License", - "url": "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License", - "osiApproved": false - }, - "BSD-Source-Code": { - "name": "BSD Source Code Attribution", - "url": "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt", - "osiApproved": false - }, - "BSL-1.0": { - "name": "Boost Software License 1.0", - "url": "http://www.boost.org/LICENSE_1_0.txt", - "osiApproved": true - }, - "Bahyph": { - "name": "Bahyph License", - "url": "https://fedoraproject.org/wiki/Licensing/Bahyph", - "osiApproved": false - }, - "Barr": { - "name": "Barr License", - "url": "https://fedoraproject.org/wiki/Licensing/Barr", - "osiApproved": false - }, - "Beerware": { - "name": "Beerware License", - "url": "https://fedoraproject.org/wiki/Licensing/Beerware", - "osiApproved": false - }, - "BitTorrent-1.0": { - "name": "BitTorrent Open Source License v1.0", - "url": "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s", - "osiApproved": false - }, - "BitTorrent-1.1": { - "name": "BitTorrent Open Source License v1.1", - "url": "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1", - "osiApproved": false - }, - "BlueOak-1.0.0": { - "name": "Blue Oak Model License 1.0.0", - "url": "https://blueoakcouncil.org/license/1.0.0", - "osiApproved": false - }, - "Borceux": { - "name": "Borceux license", - "url": "https://fedoraproject.org/wiki/Licensing/Borceux", - "osiApproved": false - }, - "CATOSL-1.1": { - "name": "Computer Associates Trusted Open Source License 1.1", - "url": "https://opensource.org/licenses/CATOSL-1.1", - "osiApproved": true - }, - "CC-BY-1.0": { - "name": "Creative Commons Attribution 1.0 Generic", - "url": "https://creativecommons.org/licenses/by/1.0/legalcode", - "osiApproved": false - }, - "CC-BY-2.0": { - "name": "Creative Commons Attribution 2.0 Generic", - "url": "https://creativecommons.org/licenses/by/2.0/legalcode", - "osiApproved": false - }, - "CC-BY-2.5": { - "name": "Creative Commons Attribution 2.5 Generic", - "url": "https://creativecommons.org/licenses/by/2.5/legalcode", - "osiApproved": false - }, - "CC-BY-3.0": { - "name": "Creative Commons Attribution 3.0 Unported", - "url": "https://creativecommons.org/licenses/by/3.0/legalcode", - "osiApproved": false - }, - "CC-BY-4.0": { - "name": "Creative Commons Attribution 4.0 International", - "url": "https://creativecommons.org/licenses/by/4.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-1.0": { - "name": "Creative Commons Attribution Non Commercial 1.0 Generic", - "url": "https://creativecommons.org/licenses/by-nc/1.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-2.0": { - "name": "Creative Commons Attribution Non Commercial 2.0 Generic", - "url": "https://creativecommons.org/licenses/by-nc/2.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-2.5": { - "name": "Creative Commons Attribution Non Commercial 2.5 Generic", - "url": "https://creativecommons.org/licenses/by-nc/2.5/legalcode", - "osiApproved": false - }, - "CC-BY-NC-3.0": { - "name": "Creative Commons Attribution Non Commercial 3.0 Unported", - "url": "https://creativecommons.org/licenses/by-nc/3.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-4.0": { - "name": "Creative Commons Attribution Non Commercial 4.0 International", - "url": "https://creativecommons.org/licenses/by-nc/4.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-ND-1.0": { - "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", - "url": "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-ND-2.0": { - "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", - "url": "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-ND-2.5": { - "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", - "url": "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode", - "osiApproved": false - }, - "CC-BY-NC-ND-3.0": { - "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", - "url": "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-ND-4.0": { - "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", - "url": "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-SA-1.0": { - "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", - "url": "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-SA-2.0": { - "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", - "url": "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-SA-2.5": { - "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", - "url": "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode", - "osiApproved": false - }, - "CC-BY-NC-SA-3.0": { - "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", - "url": "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode", - "osiApproved": false - }, - "CC-BY-NC-SA-4.0": { - "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", - "url": "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode", - "osiApproved": false - }, - "CC-BY-ND-1.0": { - "name": "Creative Commons Attribution No Derivatives 1.0 Generic", - "url": "https://creativecommons.org/licenses/by-nd/1.0/legalcode", - "osiApproved": false - }, - "CC-BY-ND-2.0": { - "name": "Creative Commons Attribution No Derivatives 2.0 Generic", - "url": "https://creativecommons.org/licenses/by-nd/2.0/legalcode", - "osiApproved": false - }, - "CC-BY-ND-2.5": { - "name": "Creative Commons Attribution No Derivatives 2.5 Generic", - "url": "https://creativecommons.org/licenses/by-nd/2.5/legalcode", - "osiApproved": false - }, - "CC-BY-ND-3.0": { - "name": "Creative Commons Attribution No Derivatives 3.0 Unported", - "url": "https://creativecommons.org/licenses/by-nd/3.0/legalcode", - "osiApproved": false - }, - "CC-BY-ND-4.0": { - "name": "Creative Commons Attribution No Derivatives 4.0 International", - "url": "https://creativecommons.org/licenses/by-nd/4.0/legalcode", - "osiApproved": false - }, - "CC-BY-SA-1.0": { - "name": "Creative Commons Attribution Share Alike 1.0 Generic", - "url": "https://creativecommons.org/licenses/by-sa/1.0/legalcode", - "osiApproved": false - }, - "CC-BY-SA-2.0": { - "name": "Creative Commons Attribution Share Alike 2.0 Generic", - "url": "https://creativecommons.org/licenses/by-sa/2.0/legalcode", - "osiApproved": false - }, - "CC-BY-SA-2.5": { - "name": "Creative Commons Attribution Share Alike 2.5 Generic", - "url": "https://creativecommons.org/licenses/by-sa/2.5/legalcode", - "osiApproved": false - }, - "CC-BY-SA-3.0": { - "name": "Creative Commons Attribution Share Alike 3.0 Unported", - "url": "https://creativecommons.org/licenses/by-sa/3.0/legalcode", - "osiApproved": false - }, - "CC-BY-SA-4.0": { - "name": "Creative Commons Attribution Share Alike 4.0 International", - "url": "https://creativecommons.org/licenses/by-sa/4.0/legalcode", - "osiApproved": false - }, - "CC-PDDC": { - "name": "Creative Commons Public Domain Dedication and Certification", - "url": "https://creativecommons.org/licenses/publicdomain/", - "osiApproved": false - }, - "CC0-1.0": { - "name": "Creative Commons Zero v1.0 Universal", - "url": "https://creativecommons.org/publicdomain/zero/1.0/legalcode", - "osiApproved": false - }, - "CDDL-1.0": { - "name": "Common Development and Distribution License 1.0", - "url": "https://opensource.org/licenses/cddl1", - "osiApproved": true - }, - "CDDL-1.1": { - "name": "Common Development and Distribution License 1.1", - "url": "http://glassfish.java.net/public/CDDL+GPL_1_1.html", - "osiApproved": false - }, - "CDLA-Permissive-1.0": { - "name": "Community Data License Agreement Permissive 1.0", - "url": "https://cdla.io/permissive-1-0", - "osiApproved": false - }, - "CDLA-Sharing-1.0": { - "name": "Community Data License Agreement Sharing 1.0", - "url": "https://cdla.io/sharing-1-0", - "osiApproved": false - }, - "CECILL-1.0": { - "name": "CeCILL Free Software License Agreement v1.0", - "url": "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html", - "osiApproved": false - }, - "CECILL-1.1": { - "name": "CeCILL Free Software License Agreement v1.1", - "url": "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html", - "osiApproved": false - }, - "CECILL-2.0": { - "name": "CeCILL Free Software License Agreement v2.0", - "url": "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html", - "osiApproved": false - }, - "CECILL-2.1": { - "name": "CeCILL Free Software License Agreement v2.1", - "url": "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html", - "osiApproved": true - }, - "CECILL-B": { - "name": "CeCILL-B Free Software License Agreement", - "url": "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html", - "osiApproved": false - }, - "CECILL-C": { - "name": "CeCILL-C Free Software License Agreement", - "url": "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html", - "osiApproved": false - }, - "CERN-OHL-1.1": { - "name": "CERN Open Hardware Licence v1.1", - "url": "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1", - "osiApproved": false - }, - "CERN-OHL-1.2": { - "name": "CERN Open Hardware Licence v1.2", - "url": "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2", - "osiApproved": false - }, - "CNRI-Jython": { - "name": "CNRI Jython License", - "url": "http://www.jython.org/license.html", - "osiApproved": false - }, - "CNRI-Python": { - "name": "CNRI Python License", - "url": "https://opensource.org/licenses/CNRI-Python", - "osiApproved": true - }, - "CNRI-Python-GPL-Compatible": { - "name": "CNRI Python Open Source GPL Compatible License Agreement", - "url": "http://www.python.org/download/releases/1.6.1/download_win/", - "osiApproved": false - }, - "CPAL-1.0": { - "name": "Common Public Attribution License 1.0", - "url": "https://opensource.org/licenses/CPAL-1.0", - "osiApproved": true - }, - "CPL-1.0": { - "name": "Common Public License 1.0", - "url": "https://opensource.org/licenses/CPL-1.0", - "osiApproved": true - }, - "CPOL-1.02": { - "name": "Code Project Open License 1.02", - "url": "http://www.codeproject.com/info/cpol10.aspx", - "osiApproved": false - }, - "CUA-OPL-1.0": { - "name": "CUA Office Public License v1.0", - "url": "https://opensource.org/licenses/CUA-OPL-1.0", - "osiApproved": true - }, - "Caldera": { - "name": "Caldera License", - "url": "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf", - "osiApproved": false - }, - "ClArtistic": { - "name": "Clarified Artistic License", - "url": "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", - "osiApproved": false - }, - "Condor-1.1": { - "name": "Condor Public License v1.1", - "url": "http://research.cs.wisc.edu/condor/license.html#condor", - "osiApproved": false - }, - "Crossword": { - "name": "Crossword License", - "url": "https://fedoraproject.org/wiki/Licensing/Crossword", - "osiApproved": false - }, - "CrystalStacker": { - "name": "CrystalStacker License", - "url": "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker", - "osiApproved": false - }, - "Cube": { - "name": "Cube License", - "url": "https://fedoraproject.org/wiki/Licensing/Cube", - "osiApproved": false - }, - "D-FSL-1.0": { - "name": "Deutsche Freie Software Lizenz", - "url": "http://www.dipp.nrw.de/d-fsl/lizenzen/", - "osiApproved": false - }, - "DOC": { - "name": "DOC License", - "url": "http://www.cs.wustl.edu/~schmidt/ACE-copying.html", - "osiApproved": false - }, - "DSDP": { - "name": "DSDP License", - "url": "https://fedoraproject.org/wiki/Licensing/DSDP", - "osiApproved": false - }, - "Dotseqn": { - "name": "Dotseqn License", - "url": "https://fedoraproject.org/wiki/Licensing/Dotseqn", - "osiApproved": false - }, - "ECL-1.0": { - "name": "Educational Community License v1.0", - "url": "https://opensource.org/licenses/ECL-1.0", - "osiApproved": true - }, - "ECL-2.0": { - "name": "Educational Community License v2.0", - "url": "https://opensource.org/licenses/ECL-2.0", - "osiApproved": true - }, - "EFL-1.0": { - "name": "Eiffel Forum License v1.0", - "url": "http://www.eiffel-nice.org/license/forum.txt", - "osiApproved": true - }, - "EFL-2.0": { - "name": "Eiffel Forum License v2.0", - "url": "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", - "osiApproved": true - }, - "EPL-1.0": { - "name": "Eclipse Public License 1.0", - "url": "http://www.eclipse.org/legal/epl-v10.html", - "osiApproved": true - }, - "EPL-2.0": { - "name": "Eclipse Public License 2.0", - "url": "https://www.eclipse.org/legal/epl-2.0", - "osiApproved": true - }, - "EUDatagrid": { - "name": "EU DataGrid Software License", - "url": "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", - "osiApproved": true - }, - "EUPL-1.0": { - "name": "European Union Public License 1.0", - "url": "http://ec.europa.eu/idabc/en/document/7330.html", - "osiApproved": false - }, - "EUPL-1.1": { - "name": "European Union Public License 1.1", - "url": "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", - "osiApproved": true - }, - "EUPL-1.2": { - "name": "European Union Public License 1.2", - "url": "https://joinup.ec.europa.eu/page/eupl-text-11-12", - "osiApproved": true - }, - "Entessa": { - "name": "Entessa Public License v1.0", - "url": "https://opensource.org/licenses/Entessa", - "osiApproved": true - }, - "ErlPL-1.1": { - "name": "Erlang Public License v1.1", - "url": "http://www.erlang.org/EPLICENSE", - "osiApproved": false - }, - "Eurosym": { - "name": "Eurosym License", - "url": "https://fedoraproject.org/wiki/Licensing/Eurosym", - "osiApproved": false - }, - "FSFAP": { - "name": "FSF All Permissive License", - "url": "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html", - "osiApproved": false - }, - "FSFUL": { - "name": "FSF Unlimited License", - "url": "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License", - "osiApproved": false - }, - "FSFULLR": { - "name": "FSF Unlimited License (with License Retention)", - "url": "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant", - "osiApproved": false - }, - "FTL": { - "name": "Freetype Project License", - "url": "http://freetype.fis.uniroma2.it/FTL.TXT", - "osiApproved": false - }, - "Fair": { - "name": "Fair License", - "url": "http://fairlicense.org/", - "osiApproved": true - }, - "Frameworx-1.0": { - "name": "Frameworx Open License 1.0", - "url": "https://opensource.org/licenses/Frameworx-1.0", - "osiApproved": true - }, - "FreeImage": { - "name": "FreeImage Public License v1.0", - "url": "http://freeimage.sourceforge.net/freeimage-license.txt", - "osiApproved": false - }, - "GFDL-1.1": { - "name": "GNU Free Documentation License v1.1", - "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", - "osiApproved": false - }, - "GFDL-1.1-only": { - "name": "GNU Free Documentation License v1.1 only", - "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", - "osiApproved": false - }, - "GFDL-1.1-or-later": { - "name": "GNU Free Documentation License v1.1 or later", - "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt", - "osiApproved": false - }, - "GFDL-1.2": { - "name": "GNU Free Documentation License v1.2", - "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", - "osiApproved": false - }, - "GFDL-1.2-only": { - "name": "GNU Free Documentation License v1.2 only", - "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", - "osiApproved": false - }, - "GFDL-1.2-or-later": { - "name": "GNU Free Documentation License v1.2 or later", - "url": "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt", - "osiApproved": false - }, - "GFDL-1.3": { - "name": "GNU Free Documentation License v1.3", - "url": "https://www.gnu.org/licenses/fdl-1.3.txt", - "osiApproved": false - }, - "GFDL-1.3-only": { - "name": "GNU Free Documentation License v1.3 only", - "url": "https://www.gnu.org/licenses/fdl-1.3.txt", - "osiApproved": false - }, - "GFDL-1.3-or-later": { - "name": "GNU Free Documentation License v1.3 or later", - "url": "https://www.gnu.org/licenses/fdl-1.3.txt", - "osiApproved": false - }, - "GL2PS": { - "name": "GL2PS License", - "url": "http://www.geuz.org/gl2ps/COPYING.GL2PS", - "osiApproved": false - }, - "GPL-1.0": { - "name": "GNU General Public License v1.0 only", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", - "osiApproved": false - }, - "GPL-1.0+": { - "name": "GNU General Public License v1.0 or later", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", - "osiApproved": false - }, - "GPL-1.0-only": { - "name": "GNU General Public License v1.0 only", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", - "osiApproved": false - }, - "GPL-1.0-or-later": { - "name": "GNU General Public License v1.0 or later", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html", - "osiApproved": false - }, - "GPL-2.0": { - "name": "GNU General Public License v2.0 only", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "osiApproved": true - }, - "GPL-2.0+": { - "name": "GNU General Public License v2.0 or later", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "osiApproved": true - }, - "GPL-2.0-only": { - "name": "GNU General Public License v2.0 only", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "osiApproved": true - }, - "GPL-2.0-or-later": { - "name": "GNU General Public License v2.0 or later", - "url": "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", - "osiApproved": true - }, - "GPL-2.0-with-GCC-exception": { - "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", - "url": "https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/libgcc1.c;h=762f5143fc6eed57b6797c82710f3538aa52b40b;hb=cb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10", - "osiApproved": false - }, - "GPL-2.0-with-autoconf-exception": { - "name": "GNU General Public License v2.0 w/Autoconf exception", - "url": "http://ac-archive.sourceforge.net/doc/copyright.html", - "osiApproved": false - }, - "GPL-2.0-with-bison-exception": { - "name": "GNU General Public License v2.0 w/Bison exception", - "url": "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id=193d7c7054ba7197b0789e14965b739162319b5e#n141", - "osiApproved": false - }, - "GPL-2.0-with-classpath-exception": { - "name": "GNU General Public License v2.0 w/Classpath exception", - "url": "https://www.gnu.org/software/classpath/license.html", - "osiApproved": false - }, - "GPL-2.0-with-font-exception": { - "name": "GNU General Public License v2.0 w/Font exception", - "url": "https://www.gnu.org/licenses/gpl-faq.html#FontException", - "osiApproved": false - }, - "GPL-3.0": { - "name": "GNU General Public License v3.0 only", - "url": "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "osiApproved": true - }, - "GPL-3.0+": { - "name": "GNU General Public License v3.0 or later", - "url": "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "osiApproved": true - }, - "GPL-3.0-only": { - "name": "GNU General Public License v3.0 only", - "url": "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "osiApproved": true - }, - "GPL-3.0-or-later": { - "name": "GNU General Public License v3.0 or later", - "url": "https://www.gnu.org/licenses/gpl-3.0-standalone.html", - "osiApproved": true - }, - "GPL-3.0-with-GCC-exception": { - "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", - "url": "https://www.gnu.org/licenses/gcc-exception-3.1.html", - "osiApproved": true - }, - "GPL-3.0-with-autoconf-exception": { - "name": "GNU General Public License v3.0 w/Autoconf exception", - "url": "https://www.gnu.org/licenses/autoconf-exception-3.0.html", - "osiApproved": false - }, - "Giftware": { - "name": "Giftware License", - "url": "http://liballeg.org/license.html#allegro-4-the-giftware-license", - "osiApproved": false - }, - "Glide": { - "name": "3dfx Glide License", - "url": "http://www.users.on.net/~triforce/glidexp/COPYING.txt", - "osiApproved": false - }, - "Glulxe": { - "name": "Glulxe License", - "url": "https://fedoraproject.org/wiki/Licensing/Glulxe", - "osiApproved": false - }, - "HPND": { - "name": "Historical Permission Notice and Disclaimer", - "url": "https://opensource.org/licenses/HPND", - "osiApproved": true - }, - "HPND-sell-variant": { - "name": "Historical Permission Notice and Disclaimer - sell variant", - "url": "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19", - "osiApproved": false - }, - "HaskellReport": { - "name": "Haskell Language Report License", - "url": "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License", - "osiApproved": false - }, - "IBM-pibs": { - "name": "IBM PowerPC Initialization and Boot Software", - "url": "http://git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d", - "osiApproved": false - }, - "ICU": { - "name": "ICU License", - "url": "http://source.icu-project.org/repos/icu/icu/trunk/license.html", - "osiApproved": false - }, - "IJG": { - "name": "Independent JPEG Group License", - "url": "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2", - "osiApproved": false - }, - "IPA": { - "name": "IPA Font License", - "url": "https://opensource.org/licenses/IPA", - "osiApproved": true - }, - "IPL-1.0": { - "name": "IBM Public License v1.0", - "url": "https://opensource.org/licenses/IPL-1.0", - "osiApproved": true - }, - "ISC": { - "name": "ISC License", - "url": "https://www.isc.org/downloads/software-support-policy/isc-license/", - "osiApproved": true - }, - "ImageMagick": { - "name": "ImageMagick License", - "url": "http://www.imagemagick.org/script/license.php", - "osiApproved": false - }, - "Imlib2": { - "name": "Imlib2 License", - "url": "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", - "osiApproved": false - }, - "Info-ZIP": { - "name": "Info-ZIP License", - "url": "http://www.info-zip.org/license.html", - "osiApproved": false - }, - "Intel": { - "name": "Intel Open Source License", - "url": "https://opensource.org/licenses/Intel", - "osiApproved": true - }, - "Intel-ACPI": { - "name": "Intel ACPI Software License Agreement", - "url": "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement", - "osiApproved": false - }, - "Interbase-1.0": { - "name": "Interbase Public License v1.0", - "url": "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html", - "osiApproved": false - }, - "JPNIC": { - "name": "Japan Network Information Center License", - "url": "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366", - "osiApproved": false - }, - "JSON": { - "name": "JSON License", - "url": "http://www.json.org/license.html", - "osiApproved": false - }, - "JasPer-2.0": { - "name": "JasPer License", - "url": "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE", - "osiApproved": false - }, - "LAL-1.2": { - "name": "Licence Art Libre 1.2", - "url": "http://artlibre.org/licence/lal/licence-art-libre-12/", - "osiApproved": false - }, - "LAL-1.3": { - "name": "Licence Art Libre 1.3", - "url": "https://artlibre.org/", - "osiApproved": false - }, - "LGPL-2.0": { - "name": "GNU Library General Public License v2 only", - "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", - "osiApproved": true - }, - "LGPL-2.0+": { - "name": "GNU Library General Public License v2 or later", - "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", - "osiApproved": true - }, - "LGPL-2.0-only": { - "name": "GNU Library General Public License v2 only", - "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", - "osiApproved": true - }, - "LGPL-2.0-or-later": { - "name": "GNU Library General Public License v2 or later", - "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html", - "osiApproved": true - }, - "LGPL-2.1": { - "name": "GNU Lesser General Public License v2.1 only", - "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "osiApproved": true - }, - "LGPL-2.1+": { - "name": "GNU Library General Public License v2.1 or later", - "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "osiApproved": true - }, - "LGPL-2.1-only": { - "name": "GNU Lesser General Public License v2.1 only", - "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "osiApproved": true - }, - "LGPL-2.1-or-later": { - "name": "GNU Lesser General Public License v2.1 or later", - "url": "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", - "osiApproved": true - }, - "LGPL-3.0": { - "name": "GNU Lesser General Public License v3.0 only", - "url": "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "osiApproved": true - }, - "LGPL-3.0+": { - "name": "GNU Lesser General Public License v3.0 or later", - "url": "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "osiApproved": true - }, - "LGPL-3.0-only": { - "name": "GNU Lesser General Public License v3.0 only", - "url": "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "osiApproved": true - }, - "LGPL-3.0-or-later": { - "name": "GNU Lesser General Public License v3.0 or later", - "url": "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", - "osiApproved": true - }, - "LGPLLR": { - "name": "Lesser General Public License For Linguistic Resources", - "url": "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html", - "osiApproved": false - }, - "LPL-1.0": { - "name": "Lucent Public License Version 1.0", - "url": "https://opensource.org/licenses/LPL-1.0", - "osiApproved": true - }, - "LPL-1.02": { - "name": "Lucent Public License v1.02", - "url": "http://plan9.bell-labs.com/plan9/license.html", - "osiApproved": true - }, - "LPPL-1.0": { - "name": "LaTeX Project Public License v1.0", - "url": "http://www.latex-project.org/lppl/lppl-1-0.txt", - "osiApproved": false - }, - "LPPL-1.1": { - "name": "LaTeX Project Public License v1.1", - "url": "http://www.latex-project.org/lppl/lppl-1-1.txt", - "osiApproved": false - }, - "LPPL-1.2": { - "name": "LaTeX Project Public License v1.2", - "url": "http://www.latex-project.org/lppl/lppl-1-2.txt", - "osiApproved": false - }, - "LPPL-1.3a": { - "name": "LaTeX Project Public License v1.3a", - "url": "http://www.latex-project.org/lppl/lppl-1-3a.txt", - "osiApproved": false - }, - "LPPL-1.3c": { - "name": "LaTeX Project Public License v1.3c", - "url": "http://www.latex-project.org/lppl/lppl-1-3c.txt", - "osiApproved": true - }, - "Latex2e": { - "name": "Latex2e License", - "url": "https://fedoraproject.org/wiki/Licensing/Latex2e", - "osiApproved": false - }, - "Leptonica": { - "name": "Leptonica License", - "url": "https://fedoraproject.org/wiki/Licensing/Leptonica", - "osiApproved": false - }, - "LiLiQ-P-1.1": { - "name": "Licence Libre du Québec – Permissive version 1.1", - "url": "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", - "osiApproved": true - }, - "LiLiQ-R-1.1": { - "name": "Licence Libre du Québec – Réciprocité version 1.1", - "url": "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", - "osiApproved": true - }, - "LiLiQ-Rplus-1.1": { - "name": "Licence Libre du Québec – Réciprocité forte version 1.1", - "url": "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", - "osiApproved": true - }, - "Libpng": { - "name": "libpng License", - "url": "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt", - "osiApproved": false - }, - "Linux-OpenIB": { - "name": "Linux Kernel Variant of OpenIB.org license", - "url": "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h", - "osiApproved": false - }, - "MIT": { - "name": "MIT License", - "url": "https://opensource.org/licenses/MIT", - "osiApproved": true - }, - "MIT-0": { - "name": "MIT No Attribution", - "url": "https://github.com/aws/mit-0", - "osiApproved": false - }, - "MIT-CMU": { - "name": "CMU License", - "url": "https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#CMU_Style", - "osiApproved": false - }, - "MIT-advertising": { - "name": "Enlightenment License (e16)", - "url": "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising", - "osiApproved": false - }, - "MIT-enna": { - "name": "enna License", - "url": "https://fedoraproject.org/wiki/Licensing/MIT#enna", - "osiApproved": false - }, - "MIT-feh": { - "name": "feh License", - "url": "https://fedoraproject.org/wiki/Licensing/MIT#feh", - "osiApproved": false - }, - "MITNFA": { - "name": "MIT +no-false-attribs license", - "url": "https://fedoraproject.org/wiki/Licensing/MITNFA", - "osiApproved": false - }, - "MPL-1.0": { - "name": "Mozilla Public License 1.0", - "url": "http://www.mozilla.org/MPL/MPL-1.0.html", - "osiApproved": true - }, - "MPL-1.1": { - "name": "Mozilla Public License 1.1", - "url": "http://www.mozilla.org/MPL/MPL-1.1.html", - "osiApproved": true - }, - "MPL-2.0": { - "name": "Mozilla Public License 2.0", - "url": "http://www.mozilla.org/MPL/2.0/", - "osiApproved": true - }, - "MPL-2.0-no-copyleft-exception": { - "name": "Mozilla Public License 2.0 (no copyleft exception)", - "url": "http://www.mozilla.org/MPL/2.0/", - "osiApproved": true - }, - "MS-PL": { - "name": "Microsoft Public License", - "url": "http://www.microsoft.com/opensource/licenses.mspx", - "osiApproved": true - }, - "MS-RL": { - "name": "Microsoft Reciprocal License", - "url": "http://www.microsoft.com/opensource/licenses.mspx", - "osiApproved": true - }, - "MTLL": { - "name": "Matrix Template Library License", - "url": "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License", - "osiApproved": false - }, - "MakeIndex": { - "name": "MakeIndex License", - "url": "https://fedoraproject.org/wiki/Licensing/MakeIndex", - "osiApproved": false - }, - "MirOS": { - "name": "The MirOS Licence", - "url": "https://opensource.org/licenses/MirOS", - "osiApproved": true - }, - "Motosoto": { - "name": "Motosoto License", - "url": "https://opensource.org/licenses/Motosoto", - "osiApproved": true - }, - "MulanPSL-1.0": { - "name": "Mulan Permissive Software License, Version 1", - "url": "https://license.coscl.org.cn/MulanPSL/", - "osiApproved": false - }, - "Multics": { - "name": "Multics License", - "url": "https://opensource.org/licenses/Multics", - "osiApproved": true - }, - "Mup": { - "name": "Mup License", - "url": "https://fedoraproject.org/wiki/Licensing/Mup", - "osiApproved": false - }, - "NASA-1.3": { - "name": "NASA Open Source Agreement 1.3", - "url": "http://ti.arc.nasa.gov/opensource/nosa/", - "osiApproved": true - }, - "NBPL-1.0": { - "name": "Net Boolean Public License v1", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894", - "osiApproved": false - }, - "NCSA": { - "name": "University of Illinois/NCSA Open Source License", - "url": "http://otm.illinois.edu/uiuc_openSource", - "osiApproved": true - }, - "NGPL": { - "name": "Nethack General Public License", - "url": "https://opensource.org/licenses/NGPL", - "osiApproved": true - }, - "NLOD-1.0": { - "name": "Norwegian Licence for Open Government Data", - "url": "http://data.norge.no/nlod/en/1.0", - "osiApproved": false - }, - "NLPL": { - "name": "No Limit Public License", - "url": "https://fedoraproject.org/wiki/Licensing/NLPL", - "osiApproved": false - }, - "NOSL": { - "name": "Netizen Open Source License", - "url": "http://bits.netizen.com.au/licenses/NOSL/nosl.txt", - "osiApproved": false - }, - "NPL-1.0": { - "name": "Netscape Public License v1.0", - "url": "http://www.mozilla.org/MPL/NPL/1.0/", - "osiApproved": false - }, - "NPL-1.1": { - "name": "Netscape Public License v1.1", - "url": "http://www.mozilla.org/MPL/NPL/1.1/", - "osiApproved": false - }, - "NPOSL-3.0": { - "name": "Non-Profit Open Software License 3.0", - "url": "https://opensource.org/licenses/NOSL3.0", - "osiApproved": true - }, - "NRL": { - "name": "NRL License", - "url": "http://web.mit.edu/network/isakmp/nrllicense.html", - "osiApproved": false - }, - "NTP": { - "name": "NTP License", - "url": "https://opensource.org/licenses/NTP", - "osiApproved": true - }, - "NTP-0": { - "name": "NTP No Attribution", - "url": "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c", - "osiApproved": false - }, - "Naumen": { - "name": "Naumen Public License", - "url": "https://opensource.org/licenses/Naumen", - "osiApproved": true - }, - "Net-SNMP": { - "name": "Net-SNMP License", - "url": "http://net-snmp.sourceforge.net/about/license.html", - "osiApproved": false - }, - "NetCDF": { - "name": "NetCDF license", - "url": "http://www.unidata.ucar.edu/software/netcdf/copyright.html", - "osiApproved": false - }, - "Newsletr": { - "name": "Newsletr License", - "url": "https://fedoraproject.org/wiki/Licensing/Newsletr", - "osiApproved": false - }, - "Nokia": { - "name": "Nokia Open Source License", - "url": "https://opensource.org/licenses/nokia", - "osiApproved": true - }, - "Noweb": { - "name": "Noweb License", - "url": "https://fedoraproject.org/wiki/Licensing/Noweb", - "osiApproved": false - }, - "Nunit": { - "name": "Nunit License", - "url": "https://fedoraproject.org/wiki/Licensing/Nunit", - "osiApproved": false - }, - "OCCT-PL": { - "name": "Open CASCADE Technology Public License", - "url": "http://www.opencascade.com/content/occt-public-license", - "osiApproved": false - }, - "OCLC-2.0": { - "name": "OCLC Research Public License 2.0", - "url": "http://www.oclc.org/research/activities/software/license/v2final.htm", - "osiApproved": true - }, - "ODC-By-1.0": { - "name": "Open Data Commons Attribution License v1.0", - "url": "https://opendatacommons.org/licenses/by/1.0/", - "osiApproved": false - }, - "ODbL-1.0": { - "name": "ODC Open Database License v1.0", - "url": "http://www.opendatacommons.org/licenses/odbl/1.0/", - "osiApproved": false - }, - "OFL-1.0": { - "name": "SIL Open Font License 1.0", - "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", - "osiApproved": false - }, - "OFL-1.0-RFN": { - "name": "SIL Open Font License 1.0 with Reserved Font Name", - "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", - "osiApproved": false - }, - "OFL-1.0-no-RFN": { - "name": "SIL Open Font License 1.0 with no Reserved Font Name", - "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web", - "osiApproved": false - }, - "OFL-1.1": { - "name": "SIL Open Font License 1.1", - "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", - "osiApproved": true - }, - "OFL-1.1-RFN": { - "name": "SIL Open Font License 1.1 with Reserved Font Name", - "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", - "osiApproved": true - }, - "OFL-1.1-no-RFN": { - "name": "SIL Open Font License 1.1 with no Reserved Font Name", - "url": "http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web", - "osiApproved": true - }, - "OGL-Canada-2.0": { - "name": "Open Government Licence - Canada", - "url": "https://open.canada.ca/en/open-government-licence-canada", - "osiApproved": false - }, - "OGL-UK-1.0": { - "name": "Open Government Licence v1.0", - "url": "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/", - "osiApproved": false - }, - "OGL-UK-2.0": { - "name": "Open Government Licence v2.0", - "url": "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/", - "osiApproved": false - }, - "OGL-UK-3.0": { - "name": "Open Government Licence v3.0", - "url": "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/", - "osiApproved": false - }, - "OGTSL": { - "name": "Open Group Test Suite License", - "url": "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", - "osiApproved": true - }, - "OLDAP-1.1": { - "name": "Open LDAP Public License v1.1", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f", - "osiApproved": false - }, - "OLDAP-1.2": { - "name": "Open LDAP Public License v1.2", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7", - "osiApproved": false - }, - "OLDAP-1.3": { - "name": "Open LDAP Public License v1.3", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1", - "osiApproved": false - }, - "OLDAP-1.4": { - "name": "Open LDAP Public License v1.4", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941", - "osiApproved": false - }, - "OLDAP-2.0": { - "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea", - "osiApproved": false - }, - "OLDAP-2.0.1": { - "name": "Open LDAP Public License v2.0.1", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e", - "osiApproved": false - }, - "OLDAP-2.1": { - "name": "Open LDAP Public License v2.1", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715", - "osiApproved": false - }, - "OLDAP-2.2": { - "name": "Open LDAP Public License v2.2", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3", - "osiApproved": false - }, - "OLDAP-2.2.1": { - "name": "Open LDAP Public License v2.2.1", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e", - "osiApproved": false - }, - "OLDAP-2.2.2": { - "name": "Open LDAP Public License 2.2.2", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188", - "osiApproved": false - }, - "OLDAP-2.3": { - "name": "Open LDAP Public License v2.3", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3", - "osiApproved": false - }, - "OLDAP-2.4": { - "name": "Open LDAP Public License v2.4", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386", - "osiApproved": false - }, - "OLDAP-2.5": { - "name": "Open LDAP Public License v2.5", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=6852b9d90022e8593c98205413380536b1b5a7cf", - "osiApproved": false - }, - "OLDAP-2.6": { - "name": "Open LDAP Public License v2.6", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205", - "osiApproved": false - }, - "OLDAP-2.7": { - "name": "Open LDAP Public License v2.7", - "url": "http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2", - "osiApproved": false - }, - "OLDAP-2.8": { - "name": "Open LDAP Public License v2.8", - "url": "http://www.openldap.org/software/release/license.html", - "osiApproved": false - }, - "OML": { - "name": "Open Market License", - "url": "https://fedoraproject.org/wiki/Licensing/Open_Market_License", - "osiApproved": false - }, - "OPL-1.0": { - "name": "Open Public License v1.0", - "url": "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", - "osiApproved": false - }, - "OSET-PL-2.1": { - "name": "OSET Public License version 2.1", - "url": "http://www.osetfoundation.org/public-license", - "osiApproved": true - }, - "OSL-1.0": { - "name": "Open Software License 1.0", - "url": "https://opensource.org/licenses/OSL-1.0", - "osiApproved": true - }, - "OSL-1.1": { - "name": "Open Software License 1.1", - "url": "https://fedoraproject.org/wiki/Licensing/OSL1.1", - "osiApproved": false - }, - "OSL-2.0": { - "name": "Open Software License 2.0", - "url": "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html", - "osiApproved": true - }, - "OSL-2.1": { - "name": "Open Software License 2.1", - "url": "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", - "osiApproved": true - }, - "OSL-3.0": { - "name": "Open Software License 3.0", - "url": "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", - "osiApproved": true - }, - "OpenSSL": { - "name": "OpenSSL License", - "url": "http://www.openssl.org/source/license.html", - "osiApproved": false - }, - "PDDL-1.0": { - "name": "ODC Public Domain Dedication & License 1.0", - "url": "http://opendatacommons.org/licenses/pddl/1.0/", - "osiApproved": false - }, - "PHP-3.0": { - "name": "PHP License v3.0", - "url": "http://www.php.net/license/3_0.txt", - "osiApproved": true - }, - "PHP-3.01": { - "name": "PHP License v3.01", - "url": "http://www.php.net/license/3_01.txt", - "osiApproved": false - }, - "PSF-2.0": { - "name": "Python Software Foundation License 2.0", - "url": "https://opensource.org/licenses/Python-2.0", - "osiApproved": false - }, - "Parity-6.0.0": { - "name": "The Parity Public License 6.0.0", - "url": "https://paritylicense.com/versions/6.0.0.html", - "osiApproved": false - }, - "Plexus": { - "name": "Plexus Classworlds License", - "url": "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License", - "osiApproved": false - }, - "PostgreSQL": { - "name": "PostgreSQL License", - "url": "http://www.postgresql.org/about/licence", - "osiApproved": true - }, - "Python-2.0": { - "name": "Python License 2.0", - "url": "https://opensource.org/licenses/Python-2.0", - "osiApproved": true - }, - "QPL-1.0": { - "name": "Q Public License 1.0", - "url": "http://doc.qt.nokia.com/3.3/license.html", - "osiApproved": true - }, - "Qhull": { - "name": "Qhull License", - "url": "https://fedoraproject.org/wiki/Licensing/Qhull", - "osiApproved": false - }, - "RHeCos-1.1": { - "name": "Red Hat eCos Public License v1.1", - "url": "http://ecos.sourceware.org/old-license.html", - "osiApproved": false - }, - "RPL-1.1": { - "name": "Reciprocal Public License 1.1", - "url": "https://opensource.org/licenses/RPL-1.1", - "osiApproved": true - }, - "RPL-1.5": { - "name": "Reciprocal Public License 1.5", - "url": "https://opensource.org/licenses/RPL-1.5", - "osiApproved": true - }, - "RPSL-1.0": { - "name": "RealNetworks Public Source License v1.0", - "url": "https://helixcommunity.org/content/rpsl", - "osiApproved": true - }, - "RSA-MD": { - "name": "RSA Message-Digest License ", - "url": "http://www.faqs.org/rfcs/rfc1321.html", - "osiApproved": false - }, - "RSCPL": { - "name": "Ricoh Source Code Public License", - "url": "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", - "osiApproved": true - }, - "Rdisc": { - "name": "Rdisc License", - "url": "https://fedoraproject.org/wiki/Licensing/Rdisc_License", - "osiApproved": false - }, - "Ruby": { - "name": "Ruby License", - "url": "http://www.ruby-lang.org/en/LICENSE.txt", - "osiApproved": false - }, - "SAX-PD": { - "name": "Sax Public Domain Notice", - "url": "http://www.saxproject.org/copying.html", - "osiApproved": false - }, - "SCEA": { - "name": "SCEA Shared Source License", - "url": "http://research.scea.com/scea_shared_source_license.html", - "osiApproved": false - }, - "SGI-B-1.0": { - "name": "SGI Free Software License B v1.0", - "url": "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html", - "osiApproved": false - }, - "SGI-B-1.1": { - "name": "SGI Free Software License B v1.1", - "url": "http://oss.sgi.com/projects/FreeB/", - "osiApproved": false - }, - "SGI-B-2.0": { - "name": "SGI Free Software License B v2.0", - "url": "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf", - "osiApproved": false - }, - "SHL-0.5": { - "name": "Solderpad Hardware License v0.5", - "url": "https://solderpad.org/licenses/SHL-0.5/", - "osiApproved": false - }, - "SHL-0.51": { - "name": "Solderpad Hardware License, Version 0.51", - "url": "https://solderpad.org/licenses/SHL-0.51/", - "osiApproved": false - }, - "SISSL": { - "name": "Sun Industry Standards Source License v1.1", - "url": "http://www.openoffice.org/licenses/sissl_license.html", - "osiApproved": true - }, - "SISSL-1.2": { - "name": "Sun Industry Standards Source License v1.2", - "url": "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html", - "osiApproved": false - }, - "SMLNJ": { - "name": "Standard ML of New Jersey License", - "url": "https://www.smlnj.org/license.html", - "osiApproved": false - }, - "SMPPL": { - "name": "Secure Messaging Protocol Public License", - "url": "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt", - "osiApproved": false - }, - "SNIA": { - "name": "SNIA Public License 1.1", - "url": "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License", - "osiApproved": false - }, - "SPL-1.0": { - "name": "Sun Public License v1.0", - "url": "https://opensource.org/licenses/SPL-1.0", - "osiApproved": true - }, - "SSH-OpenSSH": { - "name": "SSH OpenSSH license", - "url": "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10", - "osiApproved": false - }, - "SSH-short": { - "name": "SSH short notice", - "url": "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", - "osiApproved": false - }, - "SSPL-1.0": { - "name": "Server Side Public License, v 1", - "url": "https://www.mongodb.com/licensing/server-side-public-license", - "osiApproved": false - }, - "SWL": { - "name": "Scheme Widget Library (SWL) Software License Agreement", - "url": "https://fedoraproject.org/wiki/Licensing/SWL", - "osiApproved": false - }, - "Saxpath": { - "name": "Saxpath License", - "url": "https://fedoraproject.org/wiki/Licensing/Saxpath_License", - "osiApproved": false - }, - "Sendmail": { - "name": "Sendmail License", - "url": "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", - "osiApproved": false - }, - "Sendmail-8.23": { - "name": "Sendmail License 8.23", - "url": "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", - "osiApproved": false - }, - "SimPL-2.0": { - "name": "Simple Public License 2.0", - "url": "https://opensource.org/licenses/SimPL-2.0", - "osiApproved": true - }, - "Sleepycat": { - "name": "Sleepycat License", - "url": "https://opensource.org/licenses/Sleepycat", - "osiApproved": true - }, - "Spencer-86": { - "name": "Spencer License 86", - "url": "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", - "osiApproved": false - }, - "Spencer-94": { - "name": "Spencer License 94", - "url": "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License", - "osiApproved": false - }, - "Spencer-99": { - "name": "Spencer License 99", - "url": "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c", - "osiApproved": false - }, - "StandardML-NJ": { - "name": "Standard ML of New Jersey License", - "url": "http://www.smlnj.org//license.html", - "osiApproved": false - }, - "SugarCRM-1.1.3": { - "name": "SugarCRM Public License v1.1.3", - "url": "http://www.sugarcrm.com/crm/SPL", - "osiApproved": false - }, - "TAPR-OHL-1.0": { - "name": "TAPR Open Hardware License v1.0", - "url": "https://www.tapr.org/OHL", - "osiApproved": false - }, - "TCL": { - "name": "TCL/TK License", - "url": "http://www.tcl.tk/software/tcltk/license.html", - "osiApproved": false - }, - "TCP-wrappers": { - "name": "TCP Wrappers License", - "url": "http://rc.quest.com/topics/openssh/license.php#tcpwrappers", - "osiApproved": false - }, - "TMate": { - "name": "TMate Open Source License", - "url": "http://svnkit.com/license.html", - "osiApproved": false - }, - "TORQUE-1.1": { - "name": "TORQUE v2.5+ Software License v1.1", - "url": "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1", - "osiApproved": false - }, - "TOSL": { - "name": "Trusster Open Source License", - "url": "https://fedoraproject.org/wiki/Licensing/TOSL", - "osiApproved": false - }, - "TU-Berlin-1.0": { - "name": "Technische Universitaet Berlin License 1.0", - "url": "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT", - "osiApproved": false - }, - "TU-Berlin-2.0": { - "name": "Technische Universitaet Berlin License 2.0", - "url": "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt", - "osiApproved": false - }, - "UCL-1.0": { - "name": "Upstream Compatibility License v1.0", - "url": "https://opensource.org/licenses/UCL-1.0", - "osiApproved": true - }, - "UPL-1.0": { - "name": "Universal Permissive License v1.0", - "url": "https://opensource.org/licenses/UPL", - "osiApproved": true - }, - "Unicode-DFS-2015": { - "name": "Unicode License Agreement - Data Files and Software (2015)", - "url": "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html", - "osiApproved": false - }, - "Unicode-DFS-2016": { - "name": "Unicode License Agreement - Data Files and Software (2016)", - "url": "http://www.unicode.org/copyright.html", - "osiApproved": false - }, - "Unicode-TOU": { - "name": "Unicode Terms of Use", - "url": "http://www.unicode.org/copyright.html", - "osiApproved": false - }, - "Unlicense": { - "name": "The Unlicense", - "url": "https://unlicense.org/", - "osiApproved": false - }, - "VOSTROM": { - "name": "VOSTROM Public License for Open Source", - "url": "https://fedoraproject.org/wiki/Licensing/VOSTROM", - "osiApproved": false - }, - "VSL-1.0": { - "name": "Vovida Software License v1.0", - "url": "https://opensource.org/licenses/VSL-1.0", - "osiApproved": true - }, - "Vim": { - "name": "Vim License", - "url": "http://vimdoc.sourceforge.net/htmldoc/uganda.html", - "osiApproved": false - }, - "W3C": { - "name": "W3C Software Notice and License (2002-12-31)", - "url": "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", - "osiApproved": true - }, - "W3C-19980720": { - "name": "W3C Software Notice and License (1998-07-20)", - "url": "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html", - "osiApproved": false - }, - "W3C-20150513": { - "name": "W3C Software Notice and Document License (2015-05-13)", - "url": "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document", - "osiApproved": false - }, - "WTFPL": { - "name": "Do What The F*ck You Want To Public License", - "url": "http://sam.zoy.org/wtfpl/COPYING", - "osiApproved": false - }, - "Watcom-1.0": { - "name": "Sybase Open Watcom Public License 1.0", - "url": "https://opensource.org/licenses/Watcom-1.0", - "osiApproved": true - }, - "Wsuipa": { - "name": "Wsuipa License", - "url": "https://fedoraproject.org/wiki/Licensing/Wsuipa", - "osiApproved": false - }, - "X11": { - "name": "X11 License", - "url": "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3", - "osiApproved": false - }, - "XFree86-1.1": { - "name": "XFree86 License 1.1", - "url": "http://www.xfree86.org/current/LICENSE4.html", - "osiApproved": false - }, - "XSkat": { - "name": "XSkat License", - "url": "https://fedoraproject.org/wiki/Licensing/XSkat_License", - "osiApproved": false - }, - "Xerox": { - "name": "Xerox License", - "url": "https://fedoraproject.org/wiki/Licensing/Xerox", - "osiApproved": false - }, - "Xnet": { - "name": "X.Net License", - "url": "https://opensource.org/licenses/Xnet", - "osiApproved": true - }, - "YPL-1.0": { - "name": "Yahoo! Public License v1.0", - "url": "http://www.zimbra.com/license/yahoo_public_license_1.0.html", - "osiApproved": false - }, - "YPL-1.1": { - "name": "Yahoo! Public License v1.1", - "url": "http://www.zimbra.com/license/yahoo_public_license_1.1.html", - "osiApproved": false - }, - "ZPL-1.1": { - "name": "Zope Public License 1.1", - "url": "http://old.zope.org/Resources/License/ZPL-1.1", - "osiApproved": false - }, - "ZPL-2.0": { - "name": "Zope Public License 2.0", - "url": "http://old.zope.org/Resources/License/ZPL-2.0", - "osiApproved": true - }, - "ZPL-2.1": { - "name": "Zope Public License 2.1", - "url": "http://old.zope.org/Resources/ZPL/", - "osiApproved": false - }, - "Zed": { - "name": "Zed License", - "url": "https://fedoraproject.org/wiki/Licensing/Zed", - "osiApproved": false - }, - "Zend-2.0": { - "name": "Zend License v2.0", - "url": "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt", - "osiApproved": false - }, - "Zimbra-1.3": { - "name": "Zimbra Public License v1.3", - "url": "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html", - "osiApproved": false - }, - "Zimbra-1.4": { - "name": "Zimbra Public License v1.4", - "url": "http://www.zimbra.com/legal/zimbra-public-license-1-4", - "osiApproved": false - }, - "Zlib": { - "name": "zlib License", - "url": "http://www.zlib.net/zlib_license.html", - "osiApproved": true - }, - "blessing": { - "name": "SQLite Blessing", - "url": "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln=4-9", - "osiApproved": false - }, - "bzip2-1.0.5": { - "name": "bzip2 and libbzip2 License v1.0.5", - "url": "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html", - "osiApproved": false - }, - "bzip2-1.0.6": { - "name": "bzip2 and libbzip2 License v1.0.6", - "url": "https://github.com/asimonov-im/bzip2/blob/master/LICENSE", - "osiApproved": false - }, - "copyleft-next-0.3.0": { - "name": "copyleft-next 0.3.0", - "url": "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0", - "osiApproved": false - }, - "copyleft-next-0.3.1": { - "name": "copyleft-next 0.3.1", - "url": "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1", - "osiApproved": false - }, - "curl": { - "name": "curl License", - "url": "https://github.com/bagder/curl/blob/master/COPYING", - "osiApproved": false - }, - "diffmark": { - "name": "diffmark license", - "url": "https://fedoraproject.org/wiki/Licensing/diffmark", - "osiApproved": false - }, - "dvipdfm": { - "name": "dvipdfm License", - "url": "https://fedoraproject.org/wiki/Licensing/dvipdfm", - "osiApproved": false - }, - "eCos-2.0": { - "name": "eCos license version 2.0", - "url": "https://www.gnu.org/licenses/ecos-license.html", - "osiApproved": false - }, - "eGenix": { - "name": "eGenix.com Public License 1.1.0", - "url": "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", - "osiApproved": false - }, - "etalab-2.0": { - "name": "Etalab Open License 2.0", - "url": "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", - "osiApproved": false - }, - "gSOAP-1.3b": { - "name": "gSOAP Public License v1.3b", - "url": "http://www.cs.fsu.edu/~engelen/license.html", - "osiApproved": false - }, - "gnuplot": { - "name": "gnuplot License", - "url": "https://fedoraproject.org/wiki/Licensing/Gnuplot", - "osiApproved": false - }, - "iMatix": { - "name": "iMatix Standard Function Library Agreement", - "url": "http://legacy.imatix.com/html/sfl/sfl4.htm#license", - "osiApproved": false - }, - "libpng-2.0": { - "name": "PNG Reference Library version 2", - "url": "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt", - "osiApproved": false - }, - "libselinux-1.0": { - "name": "libselinux public domain notice", - "url": "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE", - "osiApproved": false - }, - "libtiff": { - "name": "libtiff License", - "url": "https://fedoraproject.org/wiki/Licensing/libtiff", - "osiApproved": false - }, - "mpich2": { - "name": "mpich2 License", - "url": "https://fedoraproject.org/wiki/Licensing/MIT", - "osiApproved": false - }, - "psfrag": { - "name": "psfrag License", - "url": "https://fedoraproject.org/wiki/Licensing/psfrag", - "osiApproved": false - }, - "psutils": { - "name": "psutils License", - "url": "https://fedoraproject.org/wiki/Licensing/psutils", - "osiApproved": false - }, - "wxWindows": { - "name": "wxWindows Library License", - "url": "https://opensource.org/licenses/WXwindows", - "osiApproved": false - }, - "xinetd": { - "name": "xinetd License", - "url": "https://fedoraproject.org/wiki/Licensing/Xinetd_License", - "osiApproved": false - }, - "xpp": { - "name": "XPP License", - "url": "https://fedoraproject.org/wiki/Licensing/xpp", - "osiApproved": false - }, - "zlib-acknowledgement": { - "name": "zlib/libpng License with Acknowledgement", - "url": "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement", - "osiApproved": false - } + "licenseListVersion": "3.9-4-g1a3102c", + "licenses": [ + { + "reference": "./0BSD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/0BSD.json", + "referenceNumber": "239", + "name": "BSD Zero Clause License", + "licenseId": "0BSD", + "seeAlso": [ + "http://landley.net/toybox/license.html" + ], + "isOsiApproved": true + }, + { + "reference": "./AAL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/AAL.json", + "referenceNumber": "60", + "name": "Attribution Assurance License", + "licenseId": "AAL", + "seeAlso": [ + "https://opensource.org/licenses/attribution" + ], + "isOsiApproved": true + }, + { + "reference": "./ADSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/ADSL.json", + "referenceNumber": "217", + "name": "Amazon Digital Services License", + "licenseId": "ADSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense" + ], + "isOsiApproved": false + }, + { + "reference": "./AFL-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AFL-1.1.json", + "referenceNumber": "28", + "name": "Academic Free License v1.1", + "licenseId": "AFL-1.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.1.txt", + "http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true + }, + { + "reference": "./AFL-1.2.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AFL-1.2.json", + "referenceNumber": "222", + "name": "Academic Free License v1.2", + "licenseId": "AFL-1.2", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-1.2.txt", + "http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php" + ], + "isOsiApproved": true + }, + { + "reference": "./AFL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AFL-2.0.json", + "referenceNumber": "341", + "name": "Academic Free License v2.0", + "licenseId": "AFL-2.0", + "seeAlso": [ + "http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt" + ], + "isOsiApproved": true + }, + { + "reference": "./AFL-2.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AFL-2.1.json", + "referenceNumber": "249", + "name": "Academic Free License v2.1", + "licenseId": "AFL-2.1", + "seeAlso": [ + "http://opensource.linux-mirror.org/licenses/afl-2.1.txt" + ], + "isOsiApproved": true + }, + { + "reference": "./AFL-3.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AFL-3.0.json", + "referenceNumber": "361", + "name": "Academic Free License v3.0", + "licenseId": "AFL-3.0", + "seeAlso": [ + "http://www.rosenlaw.com/AFL3.0.htm", + "https://opensource.org/licenses/afl-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./AGPL-1.0.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AGPL-1.0.json", + "referenceNumber": "175", + "name": "Affero General Public License v1.0", + "licenseId": "AGPL-1.0", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "./AGPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/AGPL-1.0-only.json", + "referenceNumber": "71", + "name": "Affero General Public License v1.0 only", + "licenseId": "AGPL-1.0-only", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "./AGPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/AGPL-1.0-or-later.json", + "referenceNumber": "168", + "name": "Affero General Public License v1.0 or later", + "licenseId": "AGPL-1.0-or-later", + "seeAlso": [ + "http://www.affero.org/oagpl.html" + ], + "isOsiApproved": false + }, + { + "reference": "./AGPL-3.0.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AGPL-3.0.json", + "referenceNumber": "148", + "name": "GNU Affero General Public License v3.0", + "licenseId": "AGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./AGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AGPL-3.0-only.json", + "referenceNumber": "298", + "name": "GNU Affero General Public License v3.0 only", + "licenseId": "AGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./AGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/AGPL-3.0-or-later.json", + "referenceNumber": "160", + "name": "GNU Affero General Public License v3.0 or later", + "licenseId": "AGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/agpl.txt", + "https://opensource.org/licenses/AGPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./AMDPLPA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/AMDPLPA.json", + "referenceNumber": "133", + "name": "AMD\u0027s plpa_map.c License", + "licenseId": "AMDPLPA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License" + ], + "isOsiApproved": false + }, + { + "reference": "./AML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/AML.json", + "referenceNumber": "157", + "name": "Apple MIT License", + "licenseId": "AML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_MIT_License" + ], + "isOsiApproved": false + }, + { + "reference": "./AMPAS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/AMPAS.json", + "referenceNumber": "136", + "name": "Academy of Motion Picture Arts and Sciences BSD", + "licenseId": "AMPAS", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD" + ], + "isOsiApproved": false + }, + { + "reference": "./ANTLR-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/ANTLR-PD.json", + "referenceNumber": "44", + "name": "ANTLR Software Rights Notice", + "licenseId": "ANTLR-PD", + "seeAlso": [ + "http://www.antlr2.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./APAFML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/APAFML.json", + "referenceNumber": "248", + "name": "Adobe Postscript AFM License", + "licenseId": "APAFML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM" + ], + "isOsiApproved": false + }, + { + "reference": "./APL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/APL-1.0.json", + "referenceNumber": "278", + "name": "Adaptive Public License 1.0", + "licenseId": "APL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/APL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./APSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/APSL-1.0.json", + "referenceNumber": "387", + "name": "Apple Public Source License 1.0", + "licenseId": "APSL-1.0", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./APSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/APSL-1.1.json", + "referenceNumber": "338", + "name": "Apple Public Source License 1.1", + "licenseId": "APSL-1.1", + "seeAlso": [ + "http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE" + ], + "isOsiApproved": true + }, + { + "reference": "./APSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/APSL-1.2.json", + "referenceNumber": "201", + "name": "Apple Public Source License 1.2", + "licenseId": "APSL-1.2", + "seeAlso": [ + "http://www.samurajdata.se/opensource/mirror/licenses/apsl.php" + ], + "isOsiApproved": true + }, + { + "reference": "./APSL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/APSL-2.0.json", + "referenceNumber": "141", + "name": "Apple Public Source License 2.0", + "licenseId": "APSL-2.0", + "seeAlso": [ + "http://www.opensource.apple.com/license/apsl/" + ], + "isOsiApproved": true + }, + { + "reference": "./Abstyles.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Abstyles.json", + "referenceNumber": "75", + "name": "Abstyles License", + "licenseId": "Abstyles", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Abstyles" + ], + "isOsiApproved": false + }, + { + "reference": "./Adobe-2006.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Adobe-2006.json", + "referenceNumber": "310", + "name": "Adobe Systems Incorporated Source Code License Agreement", + "licenseId": "Adobe-2006", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/AdobeLicense" + ], + "isOsiApproved": false + }, + { + "reference": "./Adobe-Glyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Adobe-Glyph.json", + "referenceNumber": "343", + "name": "Adobe Glyph List License", + "licenseId": "Adobe-Glyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph" + ], + "isOsiApproved": false + }, + { + "reference": "./Afmparse.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Afmparse.json", + "referenceNumber": "332", + "name": "Afmparse License", + "licenseId": "Afmparse", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Afmparse" + ], + "isOsiApproved": false + }, + { + "reference": "./Aladdin.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Aladdin.json", + "referenceNumber": "315", + "name": "Aladdin Free Public License", + "licenseId": "Aladdin", + "seeAlso": [ + "http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm" + ], + "isOsiApproved": false + }, + { + "reference": "./Apache-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Apache-1.0.json", + "referenceNumber": "32", + "name": "Apache License 1.0", + "licenseId": "Apache-1.0", + "seeAlso": [ + "http://www.apache.org/licenses/LICENSE-1.0" + ], + "isOsiApproved": false + }, + { + "reference": "./Apache-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Apache-1.1.json", + "referenceNumber": "274", + "name": "Apache License 1.1", + "licenseId": "Apache-1.1", + "seeAlso": [ + "http://apache.org/licenses/LICENSE-1.1", + "https://opensource.org/licenses/Apache-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./Apache-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Apache-2.0.json", + "referenceNumber": "366", + "name": "Apache License 2.0", + "licenseId": "Apache-2.0", + "seeAlso": [ + "http://www.apache.org/licenses/LICENSE-2.0", + "https://opensource.org/licenses/Apache-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Artistic-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Artistic-1.0.json", + "referenceNumber": "273", + "name": "Artistic License 1.0", + "licenseId": "Artistic-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Artistic-1.0-Perl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Artistic-1.0-Perl.json", + "referenceNumber": "306", + "name": "Artistic License 1.0 (Perl)", + "licenseId": "Artistic-1.0-Perl", + "seeAlso": [ + "http://dev.perl.org/licenses/artistic.html" + ], + "isOsiApproved": true + }, + { + "reference": "./Artistic-1.0-cl8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Artistic-1.0-cl8.json", + "referenceNumber": "229", + "name": "Artistic License 1.0 w/clause 8", + "licenseId": "Artistic-1.0-cl8", + "seeAlso": [ + "https://opensource.org/licenses/Artistic-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Artistic-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Artistic-2.0.json", + "referenceNumber": "78", + "name": "Artistic License 2.0", + "licenseId": "Artistic-2.0", + "seeAlso": [ + "http://www.perlfoundation.org/artistic_license_2_0", + "https://opensource.org/licenses/artistic-license-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./BSD-1-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-1-Clause.json", + "referenceNumber": "389", + "name": "BSD 1-Clause License", + "licenseId": "BSD-1-Clause", + "seeAlso": [ + "https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision\u003d326823" + ], + "isOsiApproved": true + }, + { + "reference": "./BSD-2-Clause.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-2-Clause.json", + "referenceNumber": "307", + "name": "BSD 2-Clause \"Simplified\" License", + "licenseId": "BSD-2-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-2-Clause" + ], + "isOsiApproved": true + }, + { + "reference": "./BSD-2-Clause-FreeBSD.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/BSD-2-Clause-FreeBSD.json", + "referenceNumber": "281", + "name": "BSD 2-Clause FreeBSD License", + "licenseId": "BSD-2-Clause-FreeBSD", + "seeAlso": [ + "http://www.freebsd.org/copyright/freebsd-license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-2-Clause-NetBSD.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/BSD-2-Clause-NetBSD.json", + "referenceNumber": "186", + "name": "BSD 2-Clause NetBSD License", + "licenseId": "BSD-2-Clause-NetBSD", + "seeAlso": [ + "http://www.netbsd.org/about/redistribution.html#default" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-2-Clause-Patent.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-2-Clause-Patent.json", + "referenceNumber": "362", + "name": "BSD-2-Clause Plus Patent License", + "licenseId": "BSD-2-Clause-Patent", + "seeAlso": [ + "https://opensource.org/licenses/BSDplusPatent" + ], + "isOsiApproved": true + }, + { + "reference": "./BSD-3-Clause.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause.json", + "referenceNumber": "202", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "licenseId": "BSD-3-Clause", + "seeAlso": [ + "https://opensource.org/licenses/BSD-3-Clause" + ], + "isOsiApproved": true + }, + { + "reference": "./BSD-3-Clause-Attribution.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-Attribution.json", + "referenceNumber": "39", + "name": "BSD with attribution", + "licenseId": "BSD-3-Clause-Attribution", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-3-Clause-Clear.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-Clear.json", + "referenceNumber": "88", + "name": "BSD 3-Clause Clear License", + "licenseId": "BSD-3-Clause-Clear", + "seeAlso": [ + "http://labs.metacarta.com/license-explanation.html#license" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-3-Clause-LBNL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-LBNL.json", + "referenceNumber": "147", + "name": "Lawrence Berkeley National Labs BSD variant license", + "licenseId": "BSD-3-Clause-LBNL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/LBNLBSD" + ], + "isOsiApproved": true + }, + { + "reference": "./BSD-3-Clause-No-Nuclear-License.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json", + "referenceNumber": "62", + "name": "BSD 3-Clause No Nuclear License", + "licenseId": "BSD-3-Clause-No-Nuclear-License", + "seeAlso": [ + "http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam\u003d1467140197_43d516ce1776bd08a58235a7785be1cc" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-3-Clause-No-Nuclear-License-2014.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json", + "referenceNumber": "342", + "name": "BSD 3-Clause No Nuclear License 2014", + "licenseId": "BSD-3-Clause-No-Nuclear-License-2014", + "seeAlso": [ + "https://java.net/projects/javaeetutorial/pages/BerkeleyLicense" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-3-Clause-No-Nuclear-Warranty.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json", + "referenceNumber": "117", + "name": "BSD 3-Clause No Nuclear Warranty", + "licenseId": "BSD-3-Clause-No-Nuclear-Warranty", + "seeAlso": [ + "https://jogamp.org/git/?p\u003dgluegen.git;a\u003dblob_plain;f\u003dLICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-3-Clause-Open-MPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-Open-MPI.json", + "referenceNumber": "214", + "name": "BSD 3-Clause Open MPI variant", + "licenseId": "BSD-3-Clause-Open-MPI", + "seeAlso": [ + "https://www.open-mpi.org/community/license.php", + "http://www.netlib.org/lapack/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-4-Clause.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/BSD-4-Clause.json", + "referenceNumber": "69", + "name": "BSD 4-Clause \"Original\" or \"Old\" License", + "licenseId": "BSD-4-Clause", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BSD_4Clause" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-4-Clause-UC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-4-Clause-UC.json", + "referenceNumber": "372", + "name": "BSD-4-Clause (University of California-Specific)", + "licenseId": "BSD-4-Clause-UC", + "seeAlso": [ + "http://www.freebsd.org/copyright/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-Protection.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-Protection.json", + "referenceNumber": "400", + "name": "BSD Protection License", + "licenseId": "BSD-Protection", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/BSD_Protection_License" + ], + "isOsiApproved": false + }, + { + "reference": "./BSD-Source-Code.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BSD-Source-Code.json", + "referenceNumber": "169", + "name": "BSD Source Code Attribution", + "licenseId": "BSD-Source-Code", + "seeAlso": [ + "https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./BSL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/BSL-1.0.json", + "referenceNumber": "295", + "name": "Boost Software License 1.0", + "licenseId": "BSL-1.0", + "seeAlso": [ + "http://www.boost.org/LICENSE_1_0.txt", + "https://opensource.org/licenses/BSL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Bahyph.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Bahyph.json", + "referenceNumber": "151", + "name": "Bahyph License", + "licenseId": "Bahyph", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Bahyph" + ], + "isOsiApproved": false + }, + { + "reference": "./Barr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Barr.json", + "referenceNumber": "128", + "name": "Barr License", + "licenseId": "Barr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Barr" + ], + "isOsiApproved": false + }, + { + "reference": "./Beerware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Beerware.json", + "referenceNumber": "251", + "name": "Beerware License", + "licenseId": "Beerware", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Beerware", + "https://people.freebsd.org/~phk/" + ], + "isOsiApproved": false + }, + { + "reference": "./BitTorrent-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BitTorrent-1.0.json", + "referenceNumber": "207", + "name": "BitTorrent Open Source License v1.0", + "licenseId": "BitTorrent-1.0", + "seeAlso": [ + "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1\u003d1.1\u0026r2\u003d1.1.1.1\u0026diff_format\u003ds" + ], + "isOsiApproved": false + }, + { + "reference": "./BitTorrent-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/BitTorrent-1.1.json", + "referenceNumber": "188", + "name": "BitTorrent Open Source License v1.1", + "licenseId": "BitTorrent-1.1", + "seeAlso": [ + "http://directory.fsf.org/wiki/License:BitTorrentOSL1.1" + ], + "isOsiApproved": false + }, + { + "reference": "./BlueOak-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/BlueOak-1.0.0.json", + "referenceNumber": "211", + "name": "Blue Oak Model License 1.0.0", + "licenseId": "BlueOak-1.0.0", + "seeAlso": [ + "https://blueoakcouncil.org/license/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "./Borceux.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Borceux.json", + "referenceNumber": "305", + "name": "Borceux license", + "licenseId": "Borceux", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Borceux" + ], + "isOsiApproved": false + }, + { + "reference": "./CAL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CAL-1.0.json", + "referenceNumber": "59", + "name": "Cryptographic Autonomy License 1.0", + "licenseId": "CAL-1.0", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./CAL-1.0-Combined-Work-Exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json", + "referenceNumber": "80", + "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)", + "licenseId": "CAL-1.0-Combined-Work-Exception", + "seeAlso": [ + "http://cryptographicautonomylicense.com/license-text.html", + "https://opensource.org/licenses/CAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./CATOSL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CATOSL-1.1.json", + "referenceNumber": "234", + "name": "Computer Associates Trusted Open Source License 1.1", + "licenseId": "CATOSL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/CATOSL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./CC-BY-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-1.0.json", + "referenceNumber": "23", + "name": "Creative Commons Attribution 1.0 Generic", + "licenseId": "CC-BY-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-2.0.json", + "referenceNumber": "61", + "name": "Creative Commons Attribution 2.0 Generic", + "licenseId": "CC-BY-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-2.5.json", + "referenceNumber": "187", + "name": "Creative Commons Attribution 2.5 Generic", + "licenseId": "CC-BY-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-3.0.json", + "referenceNumber": "344", + "name": "Creative Commons Attribution 3.0 Unported", + "licenseId": "CC-BY-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-4.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CC-BY-4.0.json", + "referenceNumber": "218", + "name": "Creative Commons Attribution 4.0 International", + "licenseId": "CC-BY-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-1.0.json", + "referenceNumber": "231", + "name": "Creative Commons Attribution Non Commercial 1.0 Generic", + "licenseId": "CC-BY-NC-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-2.0.json", + "referenceNumber": "326", + "name": "Creative Commons Attribution Non Commercial 2.0 Generic", + "licenseId": "CC-BY-NC-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-2.5.json", + "referenceNumber": "398", + "name": "Creative Commons Attribution Non Commercial 2.5 Generic", + "licenseId": "CC-BY-NC-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-3.0.json", + "referenceNumber": "336", + "name": "Creative Commons Attribution Non Commercial 3.0 Unported", + "licenseId": "CC-BY-NC-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-4.0.json", + "referenceNumber": "272", + "name": "Creative Commons Attribution Non Commercial 4.0 International", + "licenseId": "CC-BY-NC-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-1.0.json", + "referenceNumber": "102", + "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic", + "licenseId": "CC-BY-NC-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-2.0.json", + "referenceNumber": "138", + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic", + "licenseId": "CC-BY-NC-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-2.5.json", + "referenceNumber": "30", + "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic", + "licenseId": "CC-BY-NC-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-3.0.json", + "referenceNumber": "41", + "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported", + "licenseId": "CC-BY-NC-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-4.0.json", + "referenceNumber": "172", + "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International", + "licenseId": "CC-BY-NC-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-1.0.json", + "referenceNumber": "120", + "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic", + "licenseId": "CC-BY-NC-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-2.0.json", + "referenceNumber": "411", + "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic", + "licenseId": "CC-BY-NC-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-2.5.json", + "referenceNumber": "215", + "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic", + "licenseId": "CC-BY-NC-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-3.0.json", + "referenceNumber": "360", + "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported", + "licenseId": "CC-BY-NC-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-NC-SA-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-4.0.json", + "referenceNumber": "331", + "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International", + "licenseId": "CC-BY-NC-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-ND-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-1.0.json", + "referenceNumber": "94", + "name": "Creative Commons Attribution No Derivatives 1.0 Generic", + "licenseId": "CC-BY-ND-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-ND-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-2.0.json", + "referenceNumber": "46", + "name": "Creative Commons Attribution No Derivatives 2.0 Generic", + "licenseId": "CC-BY-ND-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-ND-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-2.5.json", + "referenceNumber": "27", + "name": "Creative Commons Attribution No Derivatives 2.5 Generic", + "licenseId": "CC-BY-ND-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-ND-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-3.0.json", + "referenceNumber": "284", + "name": "Creative Commons Attribution No Derivatives 3.0 Unported", + "licenseId": "CC-BY-ND-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-ND-4.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-4.0.json", + "referenceNumber": "318", + "name": "Creative Commons Attribution No Derivatives 4.0 International", + "licenseId": "CC-BY-ND-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-nd/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-SA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-1.0.json", + "referenceNumber": "403", + "name": "Creative Commons Attribution Share Alike 1.0 Generic", + "licenseId": "CC-BY-SA-1.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-SA-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-2.0.json", + "referenceNumber": "367", + "name": "Creative Commons Attribution Share Alike 2.0 Generic", + "licenseId": "CC-BY-SA-2.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-SA-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-2.5.json", + "referenceNumber": "203", + "name": "Creative Commons Attribution Share Alike 2.5 Generic", + "licenseId": "CC-BY-SA-2.5", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/2.5/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-SA-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-3.0.json", + "referenceNumber": "233", + "name": "Creative Commons Attribution Share Alike 3.0 Unported", + "licenseId": "CC-BY-SA-3.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/3.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-BY-SA-4.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-4.0.json", + "referenceNumber": "297", + "name": "Creative Commons Attribution Share Alike 4.0 International", + "licenseId": "CC-BY-SA-4.0", + "seeAlso": [ + "https://creativecommons.org/licenses/by-sa/4.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CC-PDDC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CC-PDDC.json", + "referenceNumber": "92", + "name": "Creative Commons Public Domain Dedication and Certification", + "licenseId": "CC-PDDC", + "seeAlso": [ + "https://creativecommons.org/licenses/publicdomain/" + ], + "isOsiApproved": false + }, + { + "reference": "./CC0-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CC0-1.0.json", + "referenceNumber": "66", + "name": "Creative Commons Zero v1.0 Universal", + "licenseId": "CC0-1.0", + "seeAlso": [ + "https://creativecommons.org/publicdomain/zero/1.0/legalcode" + ], + "isOsiApproved": false + }, + { + "reference": "./CDDL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CDDL-1.0.json", + "referenceNumber": "335", + "name": "Common Development and Distribution License 1.0", + "licenseId": "CDDL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/cddl1" + ], + "isOsiApproved": true + }, + { + "reference": "./CDDL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CDDL-1.1.json", + "referenceNumber": "283", + "name": "Common Development and Distribution License 1.1", + "licenseId": "CDDL-1.1", + "seeAlso": [ + "http://glassfish.java.net/public/CDDL+GPL_1_1.html", + "https://javaee.github.io/glassfish/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "./CDLA-Permissive-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CDLA-Permissive-1.0.json", + "referenceNumber": "108", + "name": "Community Data License Agreement Permissive 1.0", + "licenseId": "CDLA-Permissive-1.0", + "seeAlso": [ + "https://cdla.io/permissive-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "./CDLA-Sharing-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CDLA-Sharing-1.0.json", + "referenceNumber": "178", + "name": "Community Data License Agreement Sharing 1.0", + "licenseId": "CDLA-Sharing-1.0", + "seeAlso": [ + "https://cdla.io/sharing-1-0" + ], + "isOsiApproved": false + }, + { + "reference": "./CECILL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CECILL-1.0.json", + "referenceNumber": "10", + "name": "CeCILL Free Software License Agreement v1.0", + "licenseId": "CECILL-1.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html" + ], + "isOsiApproved": false + }, + { + "reference": "./CECILL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CECILL-1.1.json", + "referenceNumber": "135", + "name": "CeCILL Free Software License Agreement v1.1", + "licenseId": "CECILL-1.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html" + ], + "isOsiApproved": false + }, + { + "reference": "./CECILL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CECILL-2.0.json", + "referenceNumber": "5", + "name": "CeCILL Free Software License Agreement v2.0", + "licenseId": "CECILL-2.0", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2-en.html" + ], + "isOsiApproved": false + }, + { + "reference": "./CECILL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CECILL-2.1.json", + "referenceNumber": "145", + "name": "CeCILL Free Software License Agreement v2.1", + "licenseId": "CECILL-2.1", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html" + ], + "isOsiApproved": true + }, + { + "reference": "./CECILL-B.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CECILL-B.json", + "referenceNumber": "93", + "name": "CeCILL-B Free Software License Agreement", + "licenseId": "CECILL-B", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html" + ], + "isOsiApproved": false + }, + { + "reference": "./CECILL-C.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CECILL-C.json", + "referenceNumber": "240", + "name": "CeCILL-C Free Software License Agreement", + "licenseId": "CECILL-C", + "seeAlso": [ + "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html" + ], + "isOsiApproved": false + }, + { + "reference": "./CERN-OHL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CERN-OHL-1.1.json", + "referenceNumber": "123", + "name": "CERN Open Hardware Licence v1.1", + "licenseId": "CERN-OHL-1.1", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1" + ], + "isOsiApproved": false + }, + { + "reference": "./CERN-OHL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CERN-OHL-1.2.json", + "referenceNumber": "167", + "name": "CERN Open Hardware Licence v1.2", + "licenseId": "CERN-OHL-1.2", + "seeAlso": [ + "https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2" + ], + "isOsiApproved": false + }, + { + "reference": "./CERN-OHL-P-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CERN-OHL-P-2.0.json", + "referenceNumber": "255", + "name": "CERN Open Hardware Licence Version 2 - Permissive", + "licenseId": "CERN-OHL-P-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": false + }, + { + "reference": "./CERN-OHL-S-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CERN-OHL-S-2.0.json", + "referenceNumber": "47", + "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal", + "licenseId": "CERN-OHL-S-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": false + }, + { + "reference": "./CERN-OHL-W-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CERN-OHL-W-2.0.json", + "referenceNumber": "267", + "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal", + "licenseId": "CERN-OHL-W-2.0", + "seeAlso": [ + "https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2" + ], + "isOsiApproved": false + }, + { + "reference": "./CNRI-Jython.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CNRI-Jython.json", + "referenceNumber": "77", + "name": "CNRI Jython License", + "licenseId": "CNRI-Jython", + "seeAlso": [ + "http://www.jython.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./CNRI-Python.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CNRI-Python.json", + "referenceNumber": "96", + "name": "CNRI Python License", + "licenseId": "CNRI-Python", + "seeAlso": [ + "https://opensource.org/licenses/CNRI-Python" + ], + "isOsiApproved": true + }, + { + "reference": "./CNRI-Python-GPL-Compatible.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CNRI-Python-GPL-Compatible.json", + "referenceNumber": "348", + "name": "CNRI Python Open Source GPL Compatible License Agreement", + "licenseId": "CNRI-Python-GPL-Compatible", + "seeAlso": [ + "http://www.python.org/download/releases/1.6.1/download_win/" + ], + "isOsiApproved": false + }, + { + "reference": "./CPAL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CPAL-1.0.json", + "referenceNumber": "285", + "name": "Common Public Attribution License 1.0", + "licenseId": "CPAL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPAL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./CPL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/CPL-1.0.json", + "referenceNumber": "236", + "name": "Common Public License 1.0", + "licenseId": "CPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./CPOL-1.02.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CPOL-1.02.json", + "referenceNumber": "230", + "name": "Code Project Open License 1.02", + "licenseId": "CPOL-1.02", + "seeAlso": [ + "http://www.codeproject.com/info/cpol10.aspx" + ], + "isOsiApproved": false + }, + { + "reference": "./CUA-OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CUA-OPL-1.0.json", + "referenceNumber": "165", + "name": "CUA Office Public License v1.0", + "licenseId": "CUA-OPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/CUA-OPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Caldera.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Caldera.json", + "referenceNumber": "250", + "name": "Caldera License", + "licenseId": "Caldera", + "seeAlso": [ + "http://www.lemis.com/grog/UNIX/ancient-source-all.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "./ClArtistic.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/ClArtistic.json", + "referenceNumber": "245", + "name": "Clarified Artistic License", + "licenseId": "ClArtistic", + "seeAlso": [ + "http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/", + "http://www.ncftp.com/ncftp/doc/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./Condor-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Condor-1.1.json", + "referenceNumber": "150", + "name": "Condor Public License v1.1", + "licenseId": "Condor-1.1", + "seeAlso": [ + "http://research.cs.wisc.edu/condor/license.html#condor", + "http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor" + ], + "isOsiApproved": false + }, + { + "reference": "./Crossword.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Crossword.json", + "referenceNumber": "101", + "name": "Crossword License", + "licenseId": "Crossword", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Crossword" + ], + "isOsiApproved": false + }, + { + "reference": "./CrystalStacker.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/CrystalStacker.json", + "referenceNumber": "38", + "name": "CrystalStacker License", + "licenseId": "CrystalStacker", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd\u003dLicensing/CrystalStacker" + ], + "isOsiApproved": false + }, + { + "reference": "./Cube.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Cube.json", + "referenceNumber": "391", + "name": "Cube License", + "licenseId": "Cube", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Cube" + ], + "isOsiApproved": false + }, + { + "reference": "./D-FSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/D-FSL-1.0.json", + "referenceNumber": "358", + "name": "Deutsche Freie Software Lizenz", + "licenseId": "D-FSL-1.0", + "seeAlso": [ + "http://www.dipp.nrw.de/d-fsl/lizenzen/", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt", + "http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file", + "https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file" + ], + "isOsiApproved": false + }, + { + "reference": "./DOC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/DOC.json", + "referenceNumber": "275", + "name": "DOC License", + "licenseId": "DOC", + "seeAlso": [ + "http://www.cs.wustl.edu/~schmidt/ACE-copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "./DSDP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/DSDP.json", + "referenceNumber": "266", + "name": "DSDP License", + "licenseId": "DSDP", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/DSDP" + ], + "isOsiApproved": false + }, + { + "reference": "./Dotseqn.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Dotseqn.json", + "referenceNumber": "33", + "name": "Dotseqn License", + "licenseId": "Dotseqn", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Dotseqn" + ], + "isOsiApproved": false + }, + { + "reference": "./ECL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/ECL-1.0.json", + "referenceNumber": "418", + "name": "Educational Community License v1.0", + "licenseId": "ECL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./ECL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/ECL-2.0.json", + "referenceNumber": "1", + "name": "Educational Community License v2.0", + "licenseId": "ECL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/ECL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./EFL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/EFL-1.0.json", + "referenceNumber": "76", + "name": "Eiffel Forum License v1.0", + "licenseId": "EFL-1.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/forum.txt", + "https://opensource.org/licenses/EFL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./EFL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/EFL-2.0.json", + "referenceNumber": "7", + "name": "Eiffel Forum License v2.0", + "licenseId": "EFL-2.0", + "seeAlso": [ + "http://www.eiffel-nice.org/license/eiffel-forum-license-2.html", + "https://opensource.org/licenses/EFL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./EPL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/EPL-1.0.json", + "referenceNumber": "277", + "name": "Eclipse Public License 1.0", + "licenseId": "EPL-1.0", + "seeAlso": [ + "http://www.eclipse.org/legal/epl-v10.html", + "https://opensource.org/licenses/EPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./EPL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/EPL-2.0.json", + "referenceNumber": "416", + "name": "Eclipse Public License 2.0", + "licenseId": "EPL-2.0", + "seeAlso": [ + "https://www.eclipse.org/legal/epl-2.0", + "https://www.opensource.org/licenses/EPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./EUDatagrid.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/EUDatagrid.json", + "referenceNumber": "263", + "name": "EU DataGrid Software License", + "licenseId": "EUDatagrid", + "seeAlso": [ + "http://eu-datagrid.web.cern.ch/eu-datagrid/license.html", + "https://opensource.org/licenses/EUDatagrid" + ], + "isOsiApproved": true + }, + { + "reference": "./EUPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/EUPL-1.0.json", + "referenceNumber": "98", + "name": "European Union Public License 1.0", + "licenseId": "EUPL-1.0", + "seeAlso": [ + "http://ec.europa.eu/idabc/en/document/7330.html", + "http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id\u003d31096" + ], + "isOsiApproved": false + }, + { + "reference": "./EUPL-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/EUPL-1.1.json", + "referenceNumber": "409", + "name": "European Union Public License 1.1", + "licenseId": "EUPL-1.1", + "seeAlso": [ + "https://joinup.ec.europa.eu/software/page/eupl/licence-eupl", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf", + "https://opensource.org/licenses/EUPL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./EUPL-1.2.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/EUPL-1.2.json", + "referenceNumber": "271", + "name": "European Union Public License 1.2", + "licenseId": "EUPL-1.2", + "seeAlso": [ + "https://joinup.ec.europa.eu/page/eupl-text-11-12", + "https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf", + "https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt", + "http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri\u003dCELEX:32017D0863", + "https://opensource.org/licenses/EUPL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./Entessa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Entessa.json", + "referenceNumber": "386", + "name": "Entessa Public License v1.0", + "licenseId": "Entessa", + "seeAlso": [ + "https://opensource.org/licenses/Entessa" + ], + "isOsiApproved": true + }, + { + "reference": "./ErlPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/ErlPL-1.1.json", + "referenceNumber": "408", + "name": "Erlang Public License v1.1", + "licenseId": "ErlPL-1.1", + "seeAlso": [ + "http://www.erlang.org/EPLICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "./Eurosym.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Eurosym.json", + "referenceNumber": "171", + "name": "Eurosym License", + "licenseId": "Eurosym", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Eurosym" + ], + "isOsiApproved": false + }, + { + "reference": "./FSFAP.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/FSFAP.json", + "referenceNumber": "394", + "name": "FSF All Permissive License", + "licenseId": "FSFAP", + "seeAlso": [ + "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html" + ], + "isOsiApproved": false + }, + { + "reference": "./FSFUL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/FSFUL.json", + "referenceNumber": "2", + "name": "FSF Unlimited License", + "licenseId": "FSFUL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License" + ], + "isOsiApproved": false + }, + { + "reference": "./FSFULLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/FSFULLR.json", + "referenceNumber": "308", + "name": "FSF Unlimited License (with License Retention)", + "licenseId": "FSFULLR", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant" + ], + "isOsiApproved": false + }, + { + "reference": "./FTL.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/FTL.json", + "referenceNumber": "374", + "name": "Freetype Project License", + "licenseId": "FTL", + "seeAlso": [ + "http://freetype.fis.uniroma2.it/FTL.TXT", + "http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT" + ], + "isOsiApproved": false + }, + { + "reference": "./Fair.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Fair.json", + "referenceNumber": "262", + "name": "Fair License", + "licenseId": "Fair", + "seeAlso": [ + "http://fairlicense.org/", + "https://opensource.org/licenses/Fair" + ], + "isOsiApproved": true + }, + { + "reference": "./Frameworx-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Frameworx-1.0.json", + "referenceNumber": "373", + "name": "Frameworx Open License 1.0", + "licenseId": "Frameworx-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Frameworx-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./FreeImage.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/FreeImage.json", + "referenceNumber": "370", + "name": "FreeImage Public License v1.0", + "licenseId": "FreeImage", + "seeAlso": [ + "http://freeimage.sourceforge.net/freeimage-license.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.1.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.1.json", + "referenceNumber": "257", + "name": "GNU Free Documentation License v1.1", + "licenseId": "GFDL-1.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.1-only.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.1-only.json", + "referenceNumber": "104", + "name": "GNU Free Documentation License v1.1 only", + "licenseId": "GFDL-1.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.1-or-later.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.1-or-later.json", + "referenceNumber": "124", + "name": "GNU Free Documentation License v1.1 or later", + "licenseId": "GFDL-1.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.2.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.2.json", + "referenceNumber": "197", + "name": "GNU Free Documentation License v1.2", + "licenseId": "GFDL-1.2", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.2-only.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.2-only.json", + "referenceNumber": "90", + "name": "GNU Free Documentation License v1.2 only", + "licenseId": "GFDL-1.2-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.2-or-later.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.2-or-later.json", + "referenceNumber": "132", + "name": "GNU Free Documentation License v1.2 or later", + "licenseId": "GFDL-1.2-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.3.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.3.json", + "referenceNumber": "365", + "name": "GNU Free Documentation License v1.3", + "licenseId": "GFDL-1.3", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.3-only.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.3-only.json", + "referenceNumber": "200", + "name": "GNU Free Documentation License v1.3 only", + "licenseId": "GFDL-1.3-only", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GFDL-1.3-or-later.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GFDL-1.3-or-later.json", + "referenceNumber": "53", + "name": "GNU Free Documentation License v1.3 or later", + "licenseId": "GFDL-1.3-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/fdl-1.3.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./GL2PS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/GL2PS.json", + "referenceNumber": "314", + "name": "GL2PS License", + "licenseId": "GL2PS", + "seeAlso": [ + "http://www.geuz.org/gl2ps/COPYING.GL2PS" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-1.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-1.0.json", + "referenceNumber": "330", + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-1.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-1.0+.json", + "referenceNumber": "205", + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-1.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/GPL-1.0-only.json", + "referenceNumber": "15", + "name": "GNU General Public License v1.0 only", + "licenseId": "GPL-1.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-1.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/GPL-1.0-or-later.json", + "referenceNumber": "134", + "name": "GNU General Public License v1.0 or later", + "licenseId": "GPL-1.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-2.0.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0.json", + "referenceNumber": "356", + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-2.0+.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0+.json", + "referenceNumber": "401", + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0-only.json", + "referenceNumber": "235", + "name": "GNU General Public License v2.0 only", + "licenseId": "GPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0-or-later.json", + "referenceNumber": "258", + "name": "GNU General Public License v2.0 or later", + "licenseId": "GPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html", + "https://opensource.org/licenses/GPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-2.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-GCC-exception.json", + "referenceNumber": "340", + "name": "GNU General Public License v2.0 w/GCC Runtime Library exception", + "licenseId": "GPL-2.0-with-GCC-exception", + "seeAlso": [ + "https://gcc.gnu.org/git/?p\u003dgcc.git;a\u003dblob;f\u003dgcc/libgcc1.c;h\u003d762f5143fc6eed57b6797c82710f3538aa52b40b;hb\u003dcb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-2.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json", + "referenceNumber": "36", + "name": "GNU General Public License v2.0 w/Autoconf exception", + "licenseId": "GPL-2.0-with-autoconf-exception", + "seeAlso": [ + "http://ac-archive.sourceforge.net/doc/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-2.0-with-bison-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-bison-exception.json", + "referenceNumber": "371", + "name": "GNU General Public License v2.0 w/Bison exception", + "licenseId": "GPL-2.0-with-bison-exception", + "seeAlso": [ + "http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id\u003d193d7c7054ba7197b0789e14965b739162319b5e#n141" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-2.0-with-classpath-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-classpath-exception.json", + "referenceNumber": "227", + "name": "GNU General Public License v2.0 w/Classpath exception", + "licenseId": "GPL-2.0-with-classpath-exception", + "seeAlso": [ + "https://www.gnu.org/software/classpath/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-2.0-with-font-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-font-exception.json", + "referenceNumber": "24", + "name": "GNU General Public License v2.0 w/Font exception", + "licenseId": "GPL-2.0-with-font-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-faq.html#FontException" + ], + "isOsiApproved": false + }, + { + "reference": "./GPL-3.0.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GPL-3.0.json", + "referenceNumber": "414", + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-3.0+.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GPL-3.0+.json", + "referenceNumber": "152", + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GPL-3.0-only.json", + "referenceNumber": "127", + "name": "GNU General Public License v3.0 only", + "licenseId": "GPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/GPL-3.0-or-later.json", + "referenceNumber": "399", + "name": "GNU General Public License v3.0 or later", + "licenseId": "GPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/gpl-3.0-standalone.html", + "https://opensource.org/licenses/GPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-3.0-with-GCC-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-3.0-with-GCC-exception.json", + "referenceNumber": "6", + "name": "GNU General Public License v3.0 w/GCC Runtime Library exception", + "licenseId": "GPL-3.0-with-GCC-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/gcc-exception-3.1.html" + ], + "isOsiApproved": true + }, + { + "reference": "./GPL-3.0-with-autoconf-exception.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json", + "referenceNumber": "8", + "name": "GNU General Public License v3.0 w/Autoconf exception", + "licenseId": "GPL-3.0-with-autoconf-exception", + "seeAlso": [ + "https://www.gnu.org/licenses/autoconf-exception-3.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Giftware.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Giftware.json", + "referenceNumber": "379", + "name": "Giftware License", + "licenseId": "Giftware", + "seeAlso": [ + "http://liballeg.org/license.html#allegro-4-the-giftware-license" + ], + "isOsiApproved": false + }, + { + "reference": "./Glide.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Glide.json", + "referenceNumber": "121", + "name": "3dfx Glide License", + "licenseId": "Glide", + "seeAlso": [ + "http://www.users.on.net/~triforce/glidexp/COPYING.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./Glulxe.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Glulxe.json", + "referenceNumber": "206", + "name": "Glulxe License", + "licenseId": "Glulxe", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Glulxe" + ], + "isOsiApproved": false + }, + { + "reference": "./HPND.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/HPND.json", + "referenceNumber": "154", + "name": "Historical Permission Notice and Disclaimer", + "licenseId": "HPND", + "seeAlso": [ + "https://opensource.org/licenses/HPND" + ], + "isOsiApproved": true + }, + { + "reference": "./HPND-sell-variant.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/HPND-sell-variant.json", + "referenceNumber": "164", + "name": "Historical Permission Notice and Disclaimer - sell variant", + "licenseId": "HPND-sell-variant", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h\u003dv4.19" + ], + "isOsiApproved": false + }, + { + "reference": "./HaskellReport.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/HaskellReport.json", + "referenceNumber": "212", + "name": "Haskell Language Report License", + "licenseId": "HaskellReport", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License" + ], + "isOsiApproved": false + }, + { + "reference": "./Hippocratic-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Hippocratic-2.1.json", + "referenceNumber": "185", + "name": "Hippocratic License 2.1", + "licenseId": "Hippocratic-2.1", + "seeAlso": [ + "https://firstdonoharm.dev/version/2/1/license.html", + "https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./IBM-pibs.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/IBM-pibs.json", + "referenceNumber": "241", + "name": "IBM PowerPC Initialization and Boot Software", + "licenseId": "IBM-pibs", + "seeAlso": [ + "http://git.denx.de/?p\u003du-boot.git;a\u003dblob;f\u003darch/powerpc/cpu/ppc4xx/miiphy.c;h\u003d297155fdafa064b955e53e9832de93bfb0cfb85b;hb\u003d9fab4bf4cc077c21e43941866f3f2c196f28670d" + ], + "isOsiApproved": false + }, + { + "reference": "./ICU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/ICU.json", + "referenceNumber": "180", + "name": "ICU License", + "licenseId": "ICU", + "seeAlso": [ + "http://source.icu-project.org/repos/icu/icu/trunk/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./IJG.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/IJG.json", + "referenceNumber": "244", + "name": "Independent JPEG Group License", + "licenseId": "IJG", + "seeAlso": [ + "http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev\u003d1.2" + ], + "isOsiApproved": false + }, + { + "reference": "./IPA.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/IPA.json", + "referenceNumber": "321", + "name": "IPA Font License", + "licenseId": "IPA", + "seeAlso": [ + "https://opensource.org/licenses/IPA" + ], + "isOsiApproved": true + }, + { + "reference": "./IPL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/IPL-1.0.json", + "referenceNumber": "320", + "name": "IBM Public License v1.0", + "licenseId": "IPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/IPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./ISC.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/ISC.json", + "referenceNumber": "364", + "name": "ISC License", + "licenseId": "ISC", + "seeAlso": [ + "https://www.isc.org/downloads/software-support-policy/isc-license/", + "https://opensource.org/licenses/ISC" + ], + "isOsiApproved": true + }, + { + "reference": "./ImageMagick.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/ImageMagick.json", + "referenceNumber": "337", + "name": "ImageMagick License", + "licenseId": "ImageMagick", + "seeAlso": [ + "http://www.imagemagick.org/script/license.php" + ], + "isOsiApproved": false + }, + { + "reference": "./Imlib2.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Imlib2.json", + "referenceNumber": "140", + "name": "Imlib2 License", + "licenseId": "Imlib2", + "seeAlso": [ + "http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING", + "https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "./Info-ZIP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Info-ZIP.json", + "referenceNumber": "294", + "name": "Info-ZIP License", + "licenseId": "Info-ZIP", + "seeAlso": [ + "http://www.info-zip.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Intel.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Intel.json", + "referenceNumber": "29", + "name": "Intel Open Source License", + "licenseId": "Intel", + "seeAlso": [ + "https://opensource.org/licenses/Intel" + ], + "isOsiApproved": true + }, + { + "reference": "./Intel-ACPI.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Intel-ACPI.json", + "referenceNumber": "243", + "name": "Intel ACPI Software License Agreement", + "licenseId": "Intel-ACPI", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement" + ], + "isOsiApproved": false + }, + { + "reference": "./Interbase-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Interbase-1.0.json", + "referenceNumber": "334", + "name": "Interbase Public License v1.0", + "licenseId": "Interbase-1.0", + "seeAlso": [ + "https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html" + ], + "isOsiApproved": false + }, + { + "reference": "./JPNIC.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/JPNIC.json", + "referenceNumber": "327", + "name": "Japan Network Information Center License", + "licenseId": "JPNIC", + "seeAlso": [ + "https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366" + ], + "isOsiApproved": false + }, + { + "reference": "./JSON.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/JSON.json", + "referenceNumber": "204", + "name": "JSON License", + "licenseId": "JSON", + "seeAlso": [ + "http://www.json.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./JasPer-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/JasPer-2.0.json", + "referenceNumber": "81", + "name": "JasPer License", + "licenseId": "JasPer-2.0", + "seeAlso": [ + "http://www.ece.uvic.ca/~mdadams/jasper/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "./LAL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LAL-1.2.json", + "referenceNumber": "159", + "name": "Licence Art Libre 1.2", + "licenseId": "LAL-1.2", + "seeAlso": [ + "http://artlibre.org/licence/lal/licence-art-libre-12/" + ], + "isOsiApproved": false + }, + { + "reference": "./LAL-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LAL-1.3.json", + "referenceNumber": "368", + "name": "Licence Art Libre 1.3", + "licenseId": "LAL-1.3", + "seeAlso": [ + "https://artlibre.org/" + ], + "isOsiApproved": false + }, + { + "reference": "./LGPL-2.0.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-2.0.json", + "referenceNumber": "286", + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-2.0+.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-2.0+.json", + "referenceNumber": "144", + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-2.0-only.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LGPL-2.0-only.json", + "referenceNumber": "339", + "name": "GNU Library General Public License v2 only", + "licenseId": "LGPL-2.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-2.0-or-later.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LGPL-2.0-or-later.json", + "referenceNumber": "35", + "name": "GNU Library General Public License v2 or later", + "licenseId": "LGPL-2.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-2.1.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-2.1.json", + "referenceNumber": "189", + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-2.1+.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-2.1+.json", + "referenceNumber": "209", + "name": "GNU Library General Public License v2.1 or later", + "licenseId": "LGPL-2.1+", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-2.1-only.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-2.1-only.json", + "referenceNumber": "143", + "name": "GNU Lesser General Public License v2.1 only", + "licenseId": "LGPL-2.1-only", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-2.1-or-later.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-2.1-or-later.json", + "referenceNumber": "279", + "name": "GNU Lesser General Public License v2.1 or later", + "licenseId": "LGPL-2.1-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html", + "https://opensource.org/licenses/LGPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-3.0.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-3.0.json", + "referenceNumber": "216", + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-3.0+.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-3.0+.json", + "referenceNumber": "228", + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0+", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-3.0-only.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-3.0-only.json", + "referenceNumber": "49", + "name": "GNU Lesser General Public License v3.0 only", + "licenseId": "LGPL-3.0-only", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPL-3.0-or-later.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LGPL-3.0-or-later.json", + "referenceNumber": "328", + "name": "GNU Lesser General Public License v3.0 or later", + "licenseId": "LGPL-3.0-or-later", + "seeAlso": [ + "https://www.gnu.org/licenses/lgpl-3.0-standalone.html", + "https://opensource.org/licenses/LGPL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./LGPLLR.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LGPLLR.json", + "referenceNumber": "417", + "name": "Lesser General Public License For Linguistic Resources", + "licenseId": "LGPLLR", + "seeAlso": [ + "http://www-igm.univ-mlv.fr/~unitex/lgpllr.html" + ], + "isOsiApproved": false + }, + { + "reference": "./LPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LPL-1.0.json", + "referenceNumber": "383", + "name": "Lucent Public License Version 1.0", + "licenseId": "LPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/LPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./LPL-1.02.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LPL-1.02.json", + "referenceNumber": "125", + "name": "Lucent Public License v1.02", + "licenseId": "LPL-1.02", + "seeAlso": [ + "http://plan9.bell-labs.com/plan9/license.html", + "https://opensource.org/licenses/LPL-1.02" + ], + "isOsiApproved": true + }, + { + "reference": "./LPPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LPPL-1.0.json", + "referenceNumber": "86", + "name": "LaTeX Project Public License v1.0", + "licenseId": "LPPL-1.0", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-0.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./LPPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LPPL-1.1.json", + "referenceNumber": "174", + "name": "LaTeX Project Public License v1.1", + "licenseId": "LPPL-1.1", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-1.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./LPPL-1.2.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LPPL-1.2.json", + "referenceNumber": "166", + "name": "LaTeX Project Public License v1.2", + "licenseId": "LPPL-1.2", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-2.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./LPPL-1.3a.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/LPPL-1.3a.json", + "referenceNumber": "280", + "name": "LaTeX Project Public License v1.3a", + "licenseId": "LPPL-1.3a", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3a.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./LPPL-1.3c.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LPPL-1.3c.json", + "referenceNumber": "131", + "name": "LaTeX Project Public License v1.3c", + "licenseId": "LPPL-1.3c", + "seeAlso": [ + "http://www.latex-project.org/lppl/lppl-1-3c.txt", + "https://opensource.org/licenses/LPPL-1.3c" + ], + "isOsiApproved": true + }, + { + "reference": "./Latex2e.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Latex2e.json", + "referenceNumber": "37", + "name": "Latex2e License", + "licenseId": "Latex2e", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Latex2e" + ], + "isOsiApproved": false + }, + { + "reference": "./Leptonica.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Leptonica.json", + "referenceNumber": "311", + "name": "Leptonica License", + "licenseId": "Leptonica", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Leptonica" + ], + "isOsiApproved": false + }, + { + "reference": "./LiLiQ-P-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LiLiQ-P-1.1.json", + "referenceNumber": "83", + "name": "Licence Libre du Québec – Permissive version 1.1", + "licenseId": "LiLiQ-P-1.1", + "seeAlso": [ + "https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/", + "http://opensource.org/licenses/LiLiQ-P-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./LiLiQ-R-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LiLiQ-R-1.1.json", + "referenceNumber": "301", + "name": "Licence Libre du Québec – Réciprocité version 1.1", + "licenseId": "LiLiQ-R-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-R-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./LiLiQ-Rplus-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/LiLiQ-Rplus-1.1.json", + "referenceNumber": "346", + "name": "Licence Libre du Québec – Réciprocité forte version 1.1", + "licenseId": "LiLiQ-Rplus-1.1", + "seeAlso": [ + "https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/", + "http://opensource.org/licenses/LiLiQ-Rplus-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./Libpng.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Libpng.json", + "referenceNumber": "388", + "name": "libpng License", + "licenseId": "Libpng", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./Linux-OpenIB.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Linux-OpenIB.json", + "referenceNumber": "224", + "name": "Linux Kernel Variant of OpenIB.org license", + "licenseId": "Linux-OpenIB", + "seeAlso": [ + "https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h" + ], + "isOsiApproved": false + }, + { + "reference": "./MIT.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/MIT.json", + "referenceNumber": "265", + "name": "MIT License", + "licenseId": "MIT", + "seeAlso": [ + "https://opensource.org/licenses/MIT" + ], + "isOsiApproved": true + }, + { + "reference": "./MIT-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MIT-0.json", + "referenceNumber": "79", + "name": "MIT No Attribution", + "licenseId": "MIT-0", + "seeAlso": [ + "https://github.com/aws/mit-0", + "https://romanrm.net/mit-zero", + "https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE" + ], + "isOsiApproved": false + }, + { + "reference": "./MIT-CMU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MIT-CMU.json", + "referenceNumber": "355", + "name": "CMU License", + "licenseId": "MIT-CMU", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing:MIT?rd\u003dLicensing/MIT#CMU_Style", + "https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "./MIT-advertising.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MIT-advertising.json", + "referenceNumber": "199", + "name": "Enlightenment License (e16)", + "licenseId": "MIT-advertising", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising" + ], + "isOsiApproved": false + }, + { + "reference": "./MIT-enna.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MIT-enna.json", + "referenceNumber": "54", + "name": "enna License", + "licenseId": "MIT-enna", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#enna" + ], + "isOsiApproved": false + }, + { + "reference": "./MIT-feh.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MIT-feh.json", + "referenceNumber": "376", + "name": "feh License", + "licenseId": "MIT-feh", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT#feh" + ], + "isOsiApproved": false + }, + { + "reference": "./MITNFA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MITNFA.json", + "referenceNumber": "347", + "name": "MIT +no-false-attribs license", + "licenseId": "MITNFA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MITNFA" + ], + "isOsiApproved": false + }, + { + "reference": "./MPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MPL-1.0.json", + "referenceNumber": "247", + "name": "Mozilla Public License 1.0", + "licenseId": "MPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.0.html", + "https://opensource.org/licenses/MPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./MPL-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/MPL-1.1.json", + "referenceNumber": "407", + "name": "Mozilla Public License 1.1", + "licenseId": "MPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/MPL-1.1.html", + "https://opensource.org/licenses/MPL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./MPL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/MPL-2.0.json", + "referenceNumber": "126", + "name": "Mozilla Public License 2.0", + "licenseId": "MPL-2.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./MPL-2.0-no-copyleft-exception.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json", + "referenceNumber": "190", + "name": "Mozilla Public License 2.0 (no copyleft exception)", + "licenseId": "MPL-2.0-no-copyleft-exception", + "seeAlso": [ + "http://www.mozilla.org/MPL/2.0/", + "https://opensource.org/licenses/MPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./MS-PL.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/MS-PL.json", + "referenceNumber": "377", + "name": "Microsoft Public License", + "licenseId": "MS-PL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-PL" + ], + "isOsiApproved": true + }, + { + "reference": "./MS-RL.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/MS-RL.json", + "referenceNumber": "4", + "name": "Microsoft Reciprocal License", + "licenseId": "MS-RL", + "seeAlso": [ + "http://www.microsoft.com/opensource/licenses.mspx", + "https://opensource.org/licenses/MS-RL" + ], + "isOsiApproved": true + }, + { + "reference": "./MTLL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MTLL.json", + "referenceNumber": "106", + "name": "Matrix Template Library License", + "licenseId": "MTLL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "./MakeIndex.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MakeIndex.json", + "referenceNumber": "354", + "name": "MakeIndex License", + "licenseId": "MakeIndex", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MakeIndex" + ], + "isOsiApproved": false + }, + { + "reference": "./MirOS.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MirOS.json", + "referenceNumber": "381", + "name": "The MirOS Licence", + "licenseId": "MirOS", + "seeAlso": [ + "https://opensource.org/licenses/MirOS" + ], + "isOsiApproved": true + }, + { + "reference": "./Motosoto.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Motosoto.json", + "referenceNumber": "12", + "name": "Motosoto License", + "licenseId": "Motosoto", + "seeAlso": [ + "https://opensource.org/licenses/Motosoto" + ], + "isOsiApproved": true + }, + { + "reference": "./MulanPSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MulanPSL-1.0.json", + "referenceNumber": "208", + "name": "Mulan Permissive Software License, Version 1", + "licenseId": "MulanPSL-1.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL/", + "https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "./MulanPSL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/MulanPSL-2.0.json", + "referenceNumber": "153", + "name": "Mulan Permissive Software License, Version 2", + "licenseId": "MulanPSL-2.0", + "seeAlso": [ + "https://license.coscl.org.cn/MulanPSL2/" + ], + "isOsiApproved": true + }, + { + "reference": "./Multics.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Multics.json", + "referenceNumber": "170", + "name": "Multics License", + "licenseId": "Multics", + "seeAlso": [ + "https://opensource.org/licenses/Multics" + ], + "isOsiApproved": true + }, + { + "reference": "./Mup.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Mup.json", + "referenceNumber": "316", + "name": "Mup License", + "licenseId": "Mup", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Mup" + ], + "isOsiApproved": false + }, + { + "reference": "./NASA-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NASA-1.3.json", + "referenceNumber": "114", + "name": "NASA Open Source Agreement 1.3", + "licenseId": "NASA-1.3", + "seeAlso": [ + "http://ti.arc.nasa.gov/opensource/nosa/", + "https://opensource.org/licenses/NASA-1.3" + ], + "isOsiApproved": true + }, + { + "reference": "./NBPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NBPL-1.0.json", + "referenceNumber": "17", + "name": "Net Boolean Public License v1", + "licenseId": "NBPL-1.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d37b4b3f6cc4bf34e1d3dec61e69914b9819d8894" + ], + "isOsiApproved": false + }, + { + "reference": "./NCGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NCGL-UK-2.0.json", + "referenceNumber": "225", + "name": "Non-Commercial Government Licence", + "licenseId": "NCGL-UK-2.0", + "seeAlso": [ + "https://github.com/spdx/license-list-XML/blob/master/src/Apache-2.0.xml" + ], + "isOsiApproved": false + }, + { + "reference": "./NCSA.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/NCSA.json", + "referenceNumber": "194", + "name": "University of Illinois/NCSA Open Source License", + "licenseId": "NCSA", + "seeAlso": [ + "http://otm.illinois.edu/uiuc_openSource", + "https://opensource.org/licenses/NCSA" + ], + "isOsiApproved": true + }, + { + "reference": "./NGPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NGPL.json", + "referenceNumber": "319", + "name": "Nethack General Public License", + "licenseId": "NGPL", + "seeAlso": [ + "https://opensource.org/licenses/NGPL" + ], + "isOsiApproved": true + }, + { + "reference": "./NLOD-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NLOD-1.0.json", + "referenceNumber": "139", + "name": "Norwegian Licence for Open Government Data", + "licenseId": "NLOD-1.0", + "seeAlso": [ + "http://data.norge.no/nlod/en/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "./NLPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NLPL.json", + "referenceNumber": "317", + "name": "No Limit Public License", + "licenseId": "NLPL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/NLPL" + ], + "isOsiApproved": false + }, + { + "reference": "./NOSL.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/NOSL.json", + "referenceNumber": "392", + "name": "Netizen Open Source License", + "licenseId": "NOSL", + "seeAlso": [ + "http://bits.netizen.com.au/licenses/NOSL/nosl.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./NPL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/NPL-1.0.json", + "referenceNumber": "253", + "name": "Netscape Public License v1.0", + "licenseId": "NPL-1.0", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.0/" + ], + "isOsiApproved": false + }, + { + "reference": "./NPL-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/NPL-1.1.json", + "referenceNumber": "422", + "name": "Netscape Public License v1.1", + "licenseId": "NPL-1.1", + "seeAlso": [ + "http://www.mozilla.org/MPL/NPL/1.1/" + ], + "isOsiApproved": false + }, + { + "reference": "./NPOSL-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NPOSL-3.0.json", + "referenceNumber": "156", + "name": "Non-Profit Open Software License 3.0", + "licenseId": "NPOSL-3.0", + "seeAlso": [ + "https://opensource.org/licenses/NOSL3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./NRL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NRL.json", + "referenceNumber": "105", + "name": "NRL License", + "licenseId": "NRL", + "seeAlso": [ + "http://web.mit.edu/network/isakmp/nrllicense.html" + ], + "isOsiApproved": false + }, + { + "reference": "./NTP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NTP.json", + "referenceNumber": "268", + "name": "NTP License", + "licenseId": "NTP", + "seeAlso": [ + "https://opensource.org/licenses/NTP" + ], + "isOsiApproved": true + }, + { + "reference": "./NTP-0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NTP-0.json", + "referenceNumber": "192", + "name": "NTP No Attribution", + "licenseId": "NTP-0", + "seeAlso": [ + "https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c" + ], + "isOsiApproved": false + }, + { + "reference": "./Naumen.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Naumen.json", + "referenceNumber": "293", + "name": "Naumen Public License", + "licenseId": "Naumen", + "seeAlso": [ + "https://opensource.org/licenses/Naumen" + ], + "isOsiApproved": true + }, + { + "reference": "./Net-SNMP.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Net-SNMP.json", + "referenceNumber": "288", + "name": "Net-SNMP License", + "licenseId": "Net-SNMP", + "seeAlso": [ + "http://net-snmp.sourceforge.net/about/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./NetCDF.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/NetCDF.json", + "referenceNumber": "219", + "name": "NetCDF license", + "licenseId": "NetCDF", + "seeAlso": [ + "http://www.unidata.ucar.edu/software/netcdf/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Newsletr.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Newsletr.json", + "referenceNumber": "369", + "name": "Newsletr License", + "licenseId": "Newsletr", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Newsletr" + ], + "isOsiApproved": false + }, + { + "reference": "./Nokia.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Nokia.json", + "referenceNumber": "130", + "name": "Nokia Open Source License", + "licenseId": "Nokia", + "seeAlso": [ + "https://opensource.org/licenses/nokia" + ], + "isOsiApproved": true + }, + { + "reference": "./Noweb.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Noweb.json", + "referenceNumber": "73", + "name": "Noweb License", + "licenseId": "Noweb", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Noweb" + ], + "isOsiApproved": false + }, + { + "reference": "./Nunit.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Nunit.json", + "referenceNumber": "91", + "name": "Nunit License", + "licenseId": "Nunit", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Nunit" + ], + "isOsiApproved": false + }, + { + "reference": "./O-UDA-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/O-UDA-1.0.json", + "referenceNumber": "48", + "name": "Open Use of Data Agreement v1.0", + "licenseId": "O-UDA-1.0", + "seeAlso": [ + "https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md" + ], + "isOsiApproved": false + }, + { + "reference": "./OCCT-PL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OCCT-PL.json", + "referenceNumber": "68", + "name": "Open CASCADE Technology Public License", + "licenseId": "OCCT-PL", + "seeAlso": [ + "http://www.opencascade.com/content/occt-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "./OCLC-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OCLC-2.0.json", + "referenceNumber": "352", + "name": "OCLC Research Public License 2.0", + "licenseId": "OCLC-2.0", + "seeAlso": [ + "http://www.oclc.org/research/activities/software/license/v2final.htm", + "https://opensource.org/licenses/OCLC-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./ODC-By-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/ODC-By-1.0.json", + "referenceNumber": "393", + "name": "Open Data Commons Attribution License v1.0", + "licenseId": "ODC-By-1.0", + "seeAlso": [ + "https://opendatacommons.org/licenses/by/1.0/" + ], + "isOsiApproved": false + }, + { + "reference": "./ODbL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/ODbL-1.0.json", + "referenceNumber": "351", + "name": "ODC Open Database License v1.0", + "licenseId": "ODbL-1.0", + "seeAlso": [ + "http://www.opendatacommons.org/licenses/odbl/1.0/" + ], + "isOsiApproved": false + }, + { + "reference": "./OFL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OFL-1.0.json", + "referenceNumber": "84", + "name": "SIL Open Font License 1.0", + "licenseId": "OFL-1.0", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "./OFL-1.0-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OFL-1.0-RFN.json", + "referenceNumber": "309", + "name": "SIL Open Font License 1.0 with Reserved Font Name", + "licenseId": "OFL-1.0-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "./OFL-1.0-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OFL-1.0-no-RFN.json", + "referenceNumber": "74", + "name": "SIL Open Font License 1.0 with no Reserved Font Name", + "licenseId": "OFL-1.0-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL10_web" + ], + "isOsiApproved": false + }, + { + "reference": "./OFL-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OFL-1.1.json", + "referenceNumber": "322", + "name": "SIL Open Font License 1.1", + "licenseId": "OFL-1.1", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./OFL-1.1-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OFL-1.1-RFN.json", + "referenceNumber": "43", + "name": "SIL Open Font License 1.1 with Reserved Font Name", + "licenseId": "OFL-1.1-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./OFL-1.1-no-RFN.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OFL-1.1-no-RFN.json", + "referenceNumber": "246", + "name": "SIL Open Font License 1.1 with no Reserved Font Name", + "licenseId": "OFL-1.1-no-RFN", + "seeAlso": [ + "http://scripts.sil.org/cms/scripts/page.php?item_id\u003dOFL_web", + "https://opensource.org/licenses/OFL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./OGC-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OGC-1.0.json", + "referenceNumber": "378", + "name": "OGC Software License, Version 1.0", + "licenseId": "OGC-1.0", + "seeAlso": [ + "https://www.ogc.org/ogc/software/1.0" + ], + "isOsiApproved": false + }, + { + "reference": "./OGL-Canada-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OGL-Canada-2.0.json", + "referenceNumber": "357", + "name": "Open Government Licence - Canada", + "licenseId": "OGL-Canada-2.0", + "seeAlso": [ + "https://open.canada.ca/en/open-government-licence-canada" + ], + "isOsiApproved": false + }, + { + "reference": "./OGL-UK-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OGL-UK-1.0.json", + "referenceNumber": "359", + "name": "Open Government Licence v1.0", + "licenseId": "OGL-UK-1.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/" + ], + "isOsiApproved": false + }, + { + "reference": "./OGL-UK-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OGL-UK-2.0.json", + "referenceNumber": "13", + "name": "Open Government Licence v2.0", + "licenseId": "OGL-UK-2.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/" + ], + "isOsiApproved": false + }, + { + "reference": "./OGL-UK-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OGL-UK-3.0.json", + "referenceNumber": "21", + "name": "Open Government Licence v3.0", + "licenseId": "OGL-UK-3.0", + "seeAlso": [ + "http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" + ], + "isOsiApproved": false + }, + { + "reference": "./OGTSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OGTSL.json", + "referenceNumber": "26", + "name": "Open Group Test Suite License", + "licenseId": "OGTSL", + "seeAlso": [ + "http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt", + "https://opensource.org/licenses/OGTSL" + ], + "isOsiApproved": true + }, + { + "reference": "./OLDAP-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-1.1.json", + "referenceNumber": "57", + "name": "Open LDAP Public License v1.1", + "licenseId": "OLDAP-1.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d806557a5ad59804ef3a44d5abfbe91d706b0791f" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-1.2.json", + "referenceNumber": "50", + "name": "Open LDAP Public License v1.2", + "licenseId": "OLDAP-1.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d42b0383c50c299977b5893ee695cf4e486fb0dc7" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-1.3.json", + "referenceNumber": "42", + "name": "Open LDAP Public License v1.3", + "licenseId": "OLDAP-1.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003de5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-1.4.json", + "referenceNumber": "52", + "name": "Open LDAP Public License v1.4", + "licenseId": "OLDAP-1.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dc9f95c2f3f2ffb5e0ae55fe7388af75547660941" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.0.json", + "referenceNumber": "25", + "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)", + "licenseId": "OLDAP-2.0", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcbf50f4e1185a21abd4c0a54d3f4341fe28f36ea" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.0.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.0.1.json", + "referenceNumber": "290", + "name": "Open LDAP Public License v2.0.1", + "licenseId": "OLDAP-2.0.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db6d68acd14e51ca3aab4428bf26522aa74873f0e" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.1.json", + "referenceNumber": "413", + "name": "Open LDAP Public License v2.1", + "licenseId": "OLDAP-2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003db0d176738e96a0d3b9f85cb51e140a86f21be715" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.2.json", + "referenceNumber": "329", + "name": "Open LDAP Public License v2.2", + "licenseId": "OLDAP-2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d470b0c18ec67621c85881b2733057fecf4a1acc3" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.2.1.json", + "referenceNumber": "396", + "name": "Open LDAP Public License v2.2.1", + "licenseId": "OLDAP-2.2.1", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d4bc786f34b50aa301be6f5600f58a980070f481e" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.2.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.2.2.json", + "referenceNumber": "176", + "name": "Open LDAP Public License 2.2.2", + "licenseId": "OLDAP-2.2.2", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003ddf2cc1e21eb7c160695f5b7cffd6296c151ba188" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.3.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.3.json", + "referenceNumber": "238", + "name": "Open LDAP Public License v2.3", + "licenseId": "OLDAP-2.3", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dd32cf54a32d581ab475d23c810b0a7fbaf8d63c3" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.4.json", + "referenceNumber": "119", + "name": "Open LDAP Public License v2.4", + "licenseId": "OLDAP-2.4", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003dcd1284c4a91a8a380d904eee68d1583f989ed386" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.5.json", + "referenceNumber": "112", + "name": "Open LDAP Public License v2.5", + "licenseId": "OLDAP-2.5", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d6852b9d90022e8593c98205413380536b1b5a7cf" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.6.json", + "referenceNumber": "113", + "name": "Open LDAP Public License v2.6", + "licenseId": "OLDAP-2.6", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d1cae062821881f41b73012ba816434897abf4205" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.7.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.7.json", + "referenceNumber": "237", + "name": "Open LDAP Public License v2.7", + "licenseId": "OLDAP-2.7", + "seeAlso": [ + "http://www.openldap.org/devel/gitweb.cgi?p\u003dopenldap.git;a\u003dblob;f\u003dLICENSE;hb\u003d47c2415c1df81556eeb39be6cad458ef87c534a2" + ], + "isOsiApproved": false + }, + { + "reference": "./OLDAP-2.8.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OLDAP-2.8.json", + "referenceNumber": "261", + "name": "Open LDAP Public License v2.8", + "licenseId": "OLDAP-2.8", + "seeAlso": [ + "http://www.openldap.org/software/release/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./OML.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OML.json", + "referenceNumber": "177", + "name": "Open Market License", + "licenseId": "OML", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Open_Market_License" + ], + "isOsiApproved": false + }, + { + "reference": "./OPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OPL-1.0.json", + "referenceNumber": "349", + "name": "Open Public License v1.0", + "licenseId": "OPL-1.0", + "seeAlso": [ + "http://old.koalateam.com/jackaroo/OPL_1_0.TXT", + "https://fedoraproject.org/wiki/Licensing/Open_Public_License" + ], + "isOsiApproved": false + }, + { + "reference": "./OSET-PL-2.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/OSET-PL-2.1.json", + "referenceNumber": "210", + "name": "OSET Public License version 2.1", + "licenseId": "OSET-PL-2.1", + "seeAlso": [ + "http://www.osetfoundation.org/public-license", + "https://opensource.org/licenses/OPL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "./OSL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OSL-1.0.json", + "referenceNumber": "99", + "name": "Open Software License 1.0", + "licenseId": "OSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/OSL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./OSL-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OSL-1.1.json", + "referenceNumber": "184", + "name": "Open Software License 1.1", + "licenseId": "OSL-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/OSL1.1" + ], + "isOsiApproved": false + }, + { + "reference": "./OSL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OSL-2.0.json", + "referenceNumber": "375", + "name": "Open Software License 2.0", + "licenseId": "OSL-2.0", + "seeAlso": [ + "http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html" + ], + "isOsiApproved": true + }, + { + "reference": "./OSL-2.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OSL-2.1.json", + "referenceNumber": "163", + "name": "Open Software License 2.1", + "licenseId": "OSL-2.1", + "seeAlso": [ + "http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm", + "https://opensource.org/licenses/OSL-2.1" + ], + "isOsiApproved": true + }, + { + "reference": "./OSL-3.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OSL-3.0.json", + "referenceNumber": "155", + "name": "Open Software License 3.0", + "licenseId": "OSL-3.0", + "seeAlso": [ + "https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm", + "https://opensource.org/licenses/OSL-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./OpenSSL.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/OpenSSL.json", + "referenceNumber": "87", + "name": "OpenSSL License", + "licenseId": "OpenSSL", + "seeAlso": [ + "http://www.openssl.org/source/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./PDDL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/PDDL-1.0.json", + "referenceNumber": "137", + "name": "ODC Public Domain Dedication \u0026 License 1.0", + "licenseId": "PDDL-1.0", + "seeAlso": [ + "http://opendatacommons.org/licenses/pddl/1.0/" + ], + "isOsiApproved": false + }, + { + "reference": "./PHP-3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/PHP-3.0.json", + "referenceNumber": "198", + "name": "PHP License v3.0", + "licenseId": "PHP-3.0", + "seeAlso": [ + "http://www.php.net/license/3_0.txt", + "https://opensource.org/licenses/PHP-3.0" + ], + "isOsiApproved": true + }, + { + "reference": "./PHP-3.01.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/PHP-3.01.json", + "referenceNumber": "3", + "name": "PHP License v3.01", + "licenseId": "PHP-3.01", + "seeAlso": [ + "http://www.php.net/license/3_01.txt" + ], + "isOsiApproved": true + }, + { + "reference": "./PSF-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/PSF-2.0.json", + "referenceNumber": "95", + "name": "Python Software Foundation License 2.0", + "licenseId": "PSF-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": false + }, + { + "reference": "./Parity-6.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Parity-6.0.0.json", + "referenceNumber": "419", + "name": "The Parity Public License 6.0.0", + "licenseId": "Parity-6.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/6.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Parity-7.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Parity-7.0.0.json", + "referenceNumber": "404", + "name": "The Parity Public License 7.0.0", + "licenseId": "Parity-7.0.0", + "seeAlso": [ + "https://paritylicense.com/versions/7.0.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Plexus.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Plexus.json", + "referenceNumber": "162", + "name": "Plexus Classworlds License", + "licenseId": "Plexus", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License" + ], + "isOsiApproved": false + }, + { + "reference": "./PolyForm-Noncommercial-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json", + "referenceNumber": "292", + "name": "PolyForm Noncommercial License 1.0.0", + "licenseId": "PolyForm-Noncommercial-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/noncommercial/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "./PolyForm-Small-Business-1.0.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json", + "referenceNumber": "122", + "name": "PolyForm Small Business License 1.0.0", + "licenseId": "PolyForm-Small-Business-1.0.0", + "seeAlso": [ + "https://polyformproject.org/licenses/small-business/1.0.0" + ], + "isOsiApproved": false + }, + { + "reference": "./PostgreSQL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/PostgreSQL.json", + "referenceNumber": "11", + "name": "PostgreSQL License", + "licenseId": "PostgreSQL", + "seeAlso": [ + "http://www.postgresql.org/about/licence", + "https://opensource.org/licenses/PostgreSQL" + ], + "isOsiApproved": true + }, + { + "reference": "./Python-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Python-2.0.json", + "referenceNumber": "406", + "name": "Python License 2.0", + "licenseId": "Python-2.0", + "seeAlso": [ + "https://opensource.org/licenses/Python-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./QPL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/QPL-1.0.json", + "referenceNumber": "300", + "name": "Q Public License 1.0", + "licenseId": "QPL-1.0", + "seeAlso": [ + "http://doc.qt.nokia.com/3.3/license.html", + "https://opensource.org/licenses/QPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Qhull.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Qhull.json", + "referenceNumber": "129", + "name": "Qhull License", + "licenseId": "Qhull", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Qhull" + ], + "isOsiApproved": false + }, + { + "reference": "./RHeCos-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/RHeCos-1.1.json", + "referenceNumber": "64", + "name": "Red Hat eCos Public License v1.1", + "licenseId": "RHeCos-1.1", + "seeAlso": [ + "http://ecos.sourceware.org/old-license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./RPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/RPL-1.1.json", + "referenceNumber": "223", + "name": "Reciprocal Public License 1.1", + "licenseId": "RPL-1.1", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.1" + ], + "isOsiApproved": true + }, + { + "reference": "./RPL-1.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/RPL-1.5.json", + "referenceNumber": "109", + "name": "Reciprocal Public License 1.5", + "licenseId": "RPL-1.5", + "seeAlso": [ + "https://opensource.org/licenses/RPL-1.5" + ], + "isOsiApproved": true + }, + { + "reference": "./RPSL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/RPSL-1.0.json", + "referenceNumber": "55", + "name": "RealNetworks Public Source License v1.0", + "licenseId": "RPSL-1.0", + "seeAlso": [ + "https://helixcommunity.org/content/rpsl", + "https://opensource.org/licenses/RPSL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./RSA-MD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/RSA-MD.json", + "referenceNumber": "289", + "name": "RSA Message-Digest License ", + "licenseId": "RSA-MD", + "seeAlso": [ + "http://www.faqs.org/rfcs/rfc1321.html" + ], + "isOsiApproved": false + }, + { + "reference": "./RSCPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/RSCPL.json", + "referenceNumber": "350", + "name": "Ricoh Source Code Public License", + "licenseId": "RSCPL", + "seeAlso": [ + "http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml", + "https://opensource.org/licenses/RSCPL" + ], + "isOsiApproved": true + }, + { + "reference": "./Rdisc.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Rdisc.json", + "referenceNumber": "333", + "name": "Rdisc License", + "licenseId": "Rdisc", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Rdisc_License" + ], + "isOsiApproved": false + }, + { + "reference": "./Ruby.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Ruby.json", + "referenceNumber": "14", + "name": "Ruby License", + "licenseId": "Ruby", + "seeAlso": [ + "http://www.ruby-lang.org/en/LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./SAX-PD.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SAX-PD.json", + "referenceNumber": "158", + "name": "Sax Public Domain Notice", + "licenseId": "SAX-PD", + "seeAlso": [ + "http://www.saxproject.org/copying.html" + ], + "isOsiApproved": false + }, + { + "reference": "./SCEA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SCEA.json", + "referenceNumber": "142", + "name": "SCEA Shared Source License", + "licenseId": "SCEA", + "seeAlso": [ + "http://research.scea.com/scea_shared_source_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./SGI-B-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SGI-B-1.0.json", + "referenceNumber": "196", + "name": "SGI Free Software License B v1.0", + "licenseId": "SGI-B-1.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "./SGI-B-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SGI-B-1.1.json", + "referenceNumber": "299", + "name": "SGI Free Software License B v1.1", + "licenseId": "SGI-B-1.1", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/" + ], + "isOsiApproved": false + }, + { + "reference": "./SGI-B-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/SGI-B-2.0.json", + "referenceNumber": "31", + "name": "SGI Free Software License B v2.0", + "licenseId": "SGI-B-2.0", + "seeAlso": [ + "http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "./SHL-0.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SHL-0.5.json", + "referenceNumber": "51", + "name": "Solderpad Hardware License v0.5", + "licenseId": "SHL-0.5", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.5/" + ], + "isOsiApproved": false + }, + { + "reference": "./SHL-0.51.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SHL-0.51.json", + "referenceNumber": "291", + "name": "Solderpad Hardware License, Version 0.51", + "licenseId": "SHL-0.51", + "seeAlso": [ + "https://solderpad.org/licenses/SHL-0.51/" + ], + "isOsiApproved": false + }, + { + "reference": "./SISSL.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/SISSL.json", + "referenceNumber": "82", + "name": "Sun Industry Standards Source License v1.1", + "licenseId": "SISSL", + "seeAlso": [ + "http://www.openoffice.org/licenses/sissl_license.html", + "https://opensource.org/licenses/SISSL" + ], + "isOsiApproved": true + }, + { + "reference": "./SISSL-1.2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SISSL-1.2.json", + "referenceNumber": "65", + "name": "Sun Industry Standards Source License v1.2", + "licenseId": "SISSL-1.2", + "seeAlso": [ + "http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./SMLNJ.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/SMLNJ.json", + "referenceNumber": "226", + "name": "Standard ML of New Jersey License", + "licenseId": "SMLNJ", + "seeAlso": [ + "https://www.smlnj.org/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./SMPPL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SMPPL.json", + "referenceNumber": "110", + "name": "Secure Messaging Protocol Public License", + "licenseId": "SMPPL", + "seeAlso": [ + "https://github.com/dcblake/SMP/blob/master/Documentation/License.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./SNIA.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SNIA.json", + "referenceNumber": "313", + "name": "SNIA Public License 1.1", + "licenseId": "SNIA", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SNIA_Public_License" + ], + "isOsiApproved": false + }, + { + "reference": "./SPL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/SPL-1.0.json", + "referenceNumber": "256", + "name": "Sun Public License v1.0", + "licenseId": "SPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/SPL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./SSH-OpenSSH.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SSH-OpenSSH.json", + "referenceNumber": "22", + "name": "SSH OpenSSH license", + "licenseId": "SSH-OpenSSH", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10" + ], + "isOsiApproved": false + }, + { + "reference": "./SSH-short.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SSH-short.json", + "referenceNumber": "70", + "name": "SSH short notice", + "licenseId": "SSH-short", + "seeAlso": [ + "https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h", + "http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1", + "https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp" + ], + "isOsiApproved": false + }, + { + "reference": "./SSPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SSPL-1.0.json", + "referenceNumber": "345", + "name": "Server Side Public License, v 1", + "licenseId": "SSPL-1.0", + "seeAlso": [ + "https://www.mongodb.com/licensing/server-side-public-license" + ], + "isOsiApproved": false + }, + { + "reference": "./SWL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SWL.json", + "referenceNumber": "97", + "name": "Scheme Widget Library (SWL) Software License Agreement", + "licenseId": "SWL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/SWL" + ], + "isOsiApproved": false + }, + { + "reference": "./Saxpath.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Saxpath.json", + "referenceNumber": "34", + "name": "Saxpath License", + "licenseId": "Saxpath", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Saxpath_License" + ], + "isOsiApproved": false + }, + { + "reference": "./Sendmail.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Sendmail.json", + "referenceNumber": "304", + "name": "Sendmail License", + "licenseId": "Sendmail", + "seeAlso": [ + "http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf", + "https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "./Sendmail-8.23.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Sendmail-8.23.json", + "referenceNumber": "182", + "name": "Sendmail License 8.23", + "licenseId": "Sendmail-8.23", + "seeAlso": [ + "https://www.proofpoint.com/sites/default/files/sendmail-license.pdf", + "https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf" + ], + "isOsiApproved": false + }, + { + "reference": "./SimPL-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SimPL-2.0.json", + "referenceNumber": "259", + "name": "Simple Public License 2.0", + "licenseId": "SimPL-2.0", + "seeAlso": [ + "https://opensource.org/licenses/SimPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Sleepycat.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Sleepycat.json", + "referenceNumber": "58", + "name": "Sleepycat License", + "licenseId": "Sleepycat", + "seeAlso": [ + "https://opensource.org/licenses/Sleepycat" + ], + "isOsiApproved": true + }, + { + "reference": "./Spencer-86.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Spencer-86.json", + "referenceNumber": "191", + "name": "Spencer License 86", + "licenseId": "Spencer-86", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "./Spencer-94.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Spencer-94.json", + "referenceNumber": "220", + "name": "Spencer License 94", + "licenseId": "Spencer-94", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License" + ], + "isOsiApproved": false + }, + { + "reference": "./Spencer-99.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Spencer-99.json", + "referenceNumber": "67", + "name": "Spencer License 99", + "licenseId": "Spencer-99", + "seeAlso": [ + "http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c" + ], + "isOsiApproved": false + }, + { + "reference": "./StandardML-NJ.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/StandardML-NJ.json", + "referenceNumber": "296", + "name": "Standard ML of New Jersey License", + "licenseId": "StandardML-NJ", + "seeAlso": [ + "http://www.smlnj.org//license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./SugarCRM-1.1.3.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/SugarCRM-1.1.3.json", + "referenceNumber": "353", + "name": "SugarCRM Public License v1.1.3", + "licenseId": "SugarCRM-1.1.3", + "seeAlso": [ + "http://www.sugarcrm.com/crm/SPL" + ], + "isOsiApproved": false + }, + { + "reference": "./TAPR-OHL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/TAPR-OHL-1.0.json", + "referenceNumber": "9", + "name": "TAPR Open Hardware License v1.0", + "licenseId": "TAPR-OHL-1.0", + "seeAlso": [ + "https://www.tapr.org/OHL" + ], + "isOsiApproved": false + }, + { + "reference": "./TCL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/TCL.json", + "referenceNumber": "56", + "name": "TCL/TK License", + "licenseId": "TCL", + "seeAlso": [ + "http://www.tcl.tk/software/tcltk/license.html", + "https://fedoraproject.org/wiki/Licensing/TCL" + ], + "isOsiApproved": false + }, + { + "reference": "./TCP-wrappers.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/TCP-wrappers.json", + "referenceNumber": "242", + "name": "TCP Wrappers License", + "licenseId": "TCP-wrappers", + "seeAlso": [ + "http://rc.quest.com/topics/openssh/license.php#tcpwrappers" + ], + "isOsiApproved": false + }, + { + "reference": "./TMate.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/TMate.json", + "referenceNumber": "415", + "name": "TMate Open Source License", + "licenseId": "TMate", + "seeAlso": [ + "http://svnkit.com/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./TORQUE-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/TORQUE-1.1.json", + "referenceNumber": "195", + "name": "TORQUE v2.5+ Software License v1.1", + "licenseId": "TORQUE-1.1", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TORQUEv1.1" + ], + "isOsiApproved": false + }, + { + "reference": "./TOSL.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/TOSL.json", + "referenceNumber": "260", + "name": "Trusster Open Source License", + "licenseId": "TOSL", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/TOSL" + ], + "isOsiApproved": false + }, + { + "reference": "./TU-Berlin-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/TU-Berlin-1.0.json", + "referenceNumber": "384", + "name": "Technische Universitaet Berlin License 1.0", + "licenseId": "TU-Berlin-1.0", + "seeAlso": [ + "https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT" + ], + "isOsiApproved": false + }, + { + "reference": "./TU-Berlin-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/TU-Berlin-2.0.json", + "referenceNumber": "405", + "name": "Technische Universitaet Berlin License 2.0", + "licenseId": "TU-Berlin-2.0", + "seeAlso": [ + "https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./UCL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/UCL-1.0.json", + "referenceNumber": "302", + "name": "Upstream Compatibility License v1.0", + "licenseId": "UCL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UCL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./UPL-1.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/UPL-1.0.json", + "referenceNumber": "149", + "name": "Universal Permissive License v1.0", + "licenseId": "UPL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/UPL" + ], + "isOsiApproved": true + }, + { + "reference": "./Unicode-DFS-2015.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Unicode-DFS-2015.json", + "referenceNumber": "270", + "name": "Unicode License Agreement - Data Files and Software (2015)", + "licenseId": "Unicode-DFS-2015", + "seeAlso": [ + "https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Unicode-DFS-2016.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Unicode-DFS-2016.json", + "referenceNumber": "382", + "name": "Unicode License Agreement - Data Files and Software (2016)", + "licenseId": "Unicode-DFS-2016", + "seeAlso": [ + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Unicode-TOU.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Unicode-TOU.json", + "referenceNumber": "16", + "name": "Unicode Terms of Use", + "licenseId": "Unicode-TOU", + "seeAlso": [ + "http://www.unicode.org/copyright.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Unlicense.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Unlicense.json", + "referenceNumber": "179", + "name": "The Unlicense", + "licenseId": "Unlicense", + "seeAlso": [ + "https://unlicense.org/" + ], + "isOsiApproved": false + }, + { + "reference": "./VOSTROM.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/VOSTROM.json", + "referenceNumber": "363", + "name": "VOSTROM Public License for Open Source", + "licenseId": "VOSTROM", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/VOSTROM" + ], + "isOsiApproved": false + }, + { + "reference": "./VSL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/VSL-1.0.json", + "referenceNumber": "402", + "name": "Vovida Software License v1.0", + "licenseId": "VSL-1.0", + "seeAlso": [ + "https://opensource.org/licenses/VSL-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Vim.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Vim.json", + "referenceNumber": "213", + "name": "Vim License", + "licenseId": "Vim", + "seeAlso": [ + "http://vimdoc.sourceforge.net/htmldoc/uganda.html" + ], + "isOsiApproved": false + }, + { + "reference": "./W3C.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/W3C.json", + "referenceNumber": "111", + "name": "W3C Software Notice and License (2002-12-31)", + "licenseId": "W3C", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html", + "https://opensource.org/licenses/W3C" + ], + "isOsiApproved": true + }, + { + "reference": "./W3C-19980720.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/W3C-19980720.json", + "referenceNumber": "276", + "name": "W3C Software Notice and License (1998-07-20)", + "licenseId": "W3C-19980720", + "seeAlso": [ + "http://www.w3.org/Consortium/Legal/copyright-software-19980720.html" + ], + "isOsiApproved": false + }, + { + "reference": "./W3C-20150513.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/W3C-20150513.json", + "referenceNumber": "115", + "name": "W3C Software Notice and Document License (2015-05-13)", + "licenseId": "W3C-20150513", + "seeAlso": [ + "https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document" + ], + "isOsiApproved": false + }, + { + "reference": "./WTFPL.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/WTFPL.json", + "referenceNumber": "20", + "name": "Do What The F*ck You Want To Public License", + "licenseId": "WTFPL", + "seeAlso": [ + "http://www.wtfpl.net/about/", + "http://sam.zoy.org/wtfpl/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "./Watcom-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Watcom-1.0.json", + "referenceNumber": "146", + "name": "Sybase Open Watcom Public License 1.0", + "licenseId": "Watcom-1.0", + "seeAlso": [ + "https://opensource.org/licenses/Watcom-1.0" + ], + "isOsiApproved": true + }, + { + "reference": "./Wsuipa.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Wsuipa.json", + "referenceNumber": "264", + "name": "Wsuipa License", + "licenseId": "Wsuipa", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Wsuipa" + ], + "isOsiApproved": false + }, + { + "reference": "./X11.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/X11.json", + "referenceNumber": "103", + "name": "X11 License", + "licenseId": "X11", + "seeAlso": [ + "http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3" + ], + "isOsiApproved": false + }, + { + "reference": "./XFree86-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/XFree86-1.1.json", + "referenceNumber": "161", + "name": "XFree86 License 1.1", + "licenseId": "XFree86-1.1", + "seeAlso": [ + "http://www.xfree86.org/current/LICENSE4.html" + ], + "isOsiApproved": false + }, + { + "reference": "./XSkat.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/XSkat.json", + "referenceNumber": "85", + "name": "XSkat License", + "licenseId": "XSkat", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/XSkat_License" + ], + "isOsiApproved": false + }, + { + "reference": "./Xerox.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Xerox.json", + "referenceNumber": "232", + "name": "Xerox License", + "licenseId": "Xerox", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xerox" + ], + "isOsiApproved": false + }, + { + "reference": "./Xnet.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Xnet.json", + "referenceNumber": "324", + "name": "X.Net License", + "licenseId": "Xnet", + "seeAlso": [ + "https://opensource.org/licenses/Xnet" + ], + "isOsiApproved": true + }, + { + "reference": "./YPL-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/YPL-1.0.json", + "referenceNumber": "303", + "name": "Yahoo! Public License v1.0", + "licenseId": "YPL-1.0", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.0.html" + ], + "isOsiApproved": false + }, + { + "reference": "./YPL-1.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/YPL-1.1.json", + "referenceNumber": "40", + "name": "Yahoo! Public License v1.1", + "licenseId": "YPL-1.1", + "seeAlso": [ + "http://www.zimbra.com/license/yahoo_public_license_1.1.html" + ], + "isOsiApproved": false + }, + { + "reference": "./ZPL-1.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/ZPL-1.1.json", + "referenceNumber": "89", + "name": "Zope Public License 1.1", + "licenseId": "ZPL-1.1", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-1.1" + ], + "isOsiApproved": false + }, + { + "reference": "./ZPL-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/ZPL-2.0.json", + "referenceNumber": "116", + "name": "Zope Public License 2.0", + "licenseId": "ZPL-2.0", + "seeAlso": [ + "http://old.zope.org/Resources/License/ZPL-2.0", + "https://opensource.org/licenses/ZPL-2.0" + ], + "isOsiApproved": true + }, + { + "reference": "./ZPL-2.1.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/ZPL-2.1.json", + "referenceNumber": "380", + "name": "Zope Public License 2.1", + "licenseId": "ZPL-2.1", + "seeAlso": [ + "http://old.zope.org/Resources/ZPL/" + ], + "isOsiApproved": false + }, + { + "reference": "./Zed.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Zed.json", + "referenceNumber": "118", + "name": "Zed License", + "licenseId": "Zed", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Zed" + ], + "isOsiApproved": false + }, + { + "reference": "./Zend-2.0.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Zend-2.0.json", + "referenceNumber": "385", + "name": "Zend License v2.0", + "licenseId": "Zend-2.0", + "seeAlso": [ + "https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./Zimbra-1.3.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Zimbra-1.3.json", + "referenceNumber": "181", + "name": "Zimbra Public License v1.3", + "licenseId": "Zimbra-1.3", + "seeAlso": [ + "http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html" + ], + "isOsiApproved": false + }, + { + "reference": "./Zimbra-1.4.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/Zimbra-1.4.json", + "referenceNumber": "397", + "name": "Zimbra Public License v1.4", + "licenseId": "Zimbra-1.4", + "seeAlso": [ + "http://www.zimbra.com/legal/zimbra-public-license-1-4" + ], + "isOsiApproved": false + }, + { + "reference": "./Zlib.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/Zlib.json", + "referenceNumber": "45", + "name": "zlib License", + "licenseId": "Zlib", + "seeAlso": [ + "http://www.zlib.net/zlib_license.html", + "https://opensource.org/licenses/Zlib" + ], + "isOsiApproved": true + }, + { + "reference": "./blessing.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/blessing.json", + "referenceNumber": "312", + "name": "SQLite Blessing", + "licenseId": "blessing", + "seeAlso": [ + "https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln\u003d4-9", + "https://sqlite.org/src/artifact/df5091916dbb40e6" + ], + "isOsiApproved": false + }, + { + "reference": "./bzip2-1.0.5.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/bzip2-1.0.5.json", + "referenceNumber": "193", + "name": "bzip2 and libbzip2 License v1.0.5", + "licenseId": "bzip2-1.0.5", + "seeAlso": [ + "https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + ], + "isOsiApproved": false + }, + { + "reference": "./bzip2-1.0.6.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/bzip2-1.0.6.json", + "referenceNumber": "72", + "name": "bzip2 and libbzip2 License v1.0.6", + "licenseId": "bzip2-1.0.6", + "seeAlso": [ + "https://sourceware.org/git/?p\u003dbzip2.git;a\u003dblob;f\u003dLICENSE;hb\u003dbzip2-1.0.6", + "http://bzip.org/1.0.5/bzip2-manual-1.0.5.html" + ], + "isOsiApproved": false + }, + { + "reference": "./copyleft-next-0.3.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/copyleft-next-0.3.0.json", + "referenceNumber": "323", + "name": "copyleft-next 0.3.0", + "licenseId": "copyleft-next-0.3.0", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0" + ], + "isOsiApproved": false + }, + { + "reference": "./copyleft-next-0.3.1.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/copyleft-next-0.3.1.json", + "referenceNumber": "390", + "name": "copyleft-next 0.3.1", + "licenseId": "copyleft-next-0.3.1", + "seeAlso": [ + "https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1" + ], + "isOsiApproved": false + }, + { + "reference": "./curl.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/curl.json", + "referenceNumber": "325", + "name": "curl License", + "licenseId": "curl", + "seeAlso": [ + "https://github.com/bagder/curl/blob/master/COPYING" + ], + "isOsiApproved": false + }, + { + "reference": "./diffmark.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/diffmark.json", + "referenceNumber": "410", + "name": "diffmark license", + "licenseId": "diffmark", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/diffmark" + ], + "isOsiApproved": false + }, + { + "reference": "./dvipdfm.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/dvipdfm.json", + "referenceNumber": "19", + "name": "dvipdfm License", + "licenseId": "dvipdfm", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/dvipdfm" + ], + "isOsiApproved": false + }, + { + "reference": "./eCos-2.0.html", + "isDeprecatedLicenseId": true, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/eCos-2.0.json", + "referenceNumber": "282", + "name": "eCos license version 2.0", + "licenseId": "eCos-2.0", + "seeAlso": [ + "https://www.gnu.org/licenses/ecos-license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./eGenix.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/eGenix.json", + "referenceNumber": "221", + "name": "eGenix.com Public License 1.1.0", + "licenseId": "eGenix", + "seeAlso": [ + "http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf", + "https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0" + ], + "isOsiApproved": false + }, + { + "reference": "./etalab-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/etalab-2.0.json", + "referenceNumber": "269", + "name": "Etalab Open License 2.0", + "licenseId": "etalab-2.0", + "seeAlso": [ + "https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf", + "https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "./gSOAP-1.3b.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/gSOAP-1.3b.json", + "referenceNumber": "173", + "name": "gSOAP Public License v1.3b", + "licenseId": "gSOAP-1.3b", + "seeAlso": [ + "http://www.cs.fsu.edu/~engelen/license.html" + ], + "isOsiApproved": false + }, + { + "reference": "./gnuplot.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/gnuplot.json", + "referenceNumber": "395", + "name": "gnuplot License", + "licenseId": "gnuplot", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Gnuplot" + ], + "isOsiApproved": false + }, + { + "reference": "./iMatix.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/iMatix.json", + "referenceNumber": "183", + "name": "iMatix Standard Function Library Agreement", + "licenseId": "iMatix", + "seeAlso": [ + "http://legacy.imatix.com/html/sfl/sfl4.htm#license" + ], + "isOsiApproved": false + }, + { + "reference": "./libpng-2.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/libpng-2.0.json", + "referenceNumber": "107", + "name": "PNG Reference Library version 2", + "licenseId": "libpng-2.0", + "seeAlso": [ + "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt" + ], + "isOsiApproved": false + }, + { + "reference": "./libselinux-1.0.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/libselinux-1.0.json", + "referenceNumber": "18", + "name": "libselinux public domain notice", + "licenseId": "libselinux-1.0", + "seeAlso": [ + "https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE" + ], + "isOsiApproved": false + }, + { + "reference": "./libtiff.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/libtiff.json", + "referenceNumber": "420", + "name": "libtiff License", + "licenseId": "libtiff", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/libtiff" + ], + "isOsiApproved": false + }, + { + "reference": "./mpich2.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/mpich2.json", + "referenceNumber": "63", + "name": "mpich2 License", + "licenseId": "mpich2", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/MIT" + ], + "isOsiApproved": false + }, + { + "reference": "./psfrag.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/psfrag.json", + "referenceNumber": "421", + "name": "psfrag License", + "licenseId": "psfrag", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psfrag" + ], + "isOsiApproved": false + }, + { + "reference": "./psutils.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/psutils.json", + "referenceNumber": "287", + "name": "psutils License", + "licenseId": "psutils", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/psutils" + ], + "isOsiApproved": false + }, + { + "reference": "./wxWindows.html", + "isDeprecatedLicenseId": true, + "detailsUrl": "http://spdx.org/licenses/wxWindows.json", + "referenceNumber": "252", + "name": "wxWindows Library License", + "licenseId": "wxWindows", + "seeAlso": [ + "https://opensource.org/licenses/WXwindows" + ], + "isOsiApproved": false + }, + { + "reference": "./xinetd.html", + "isDeprecatedLicenseId": false, + "isFsfLibre": true, + "detailsUrl": "http://spdx.org/licenses/xinetd.json", + "referenceNumber": "412", + "name": "xinetd License", + "licenseId": "xinetd", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/Xinetd_License" + ], + "isOsiApproved": false + }, + { + "reference": "./xpp.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/xpp.json", + "referenceNumber": "100", + "name": "XPP License", + "licenseId": "xpp", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/xpp" + ], + "isOsiApproved": false + }, + { + "reference": "./zlib-acknowledgement.html", + "isDeprecatedLicenseId": false, + "detailsUrl": "http://spdx.org/licenses/zlib-acknowledgement.json", + "referenceNumber": "254", + "name": "zlib/libpng License with Acknowledgement", + "licenseId": "zlib-acknowledgement", + "seeAlso": [ + "https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement" + ], + "isOsiApproved": false + } + ], + "releaseDate": "2020-06-18" } \ No newline at end of file From de7edd403db516c46dc95d056061885554369cad Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 23 Jun 2020 01:39:10 +0800 Subject: [PATCH 32/98] brew update-license-data: checks if it is outdated. If so, save new ver --- .../Homebrew/dev-cmd/update-license-data.rb | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Library/Homebrew/dev-cmd/update-license-data.rb diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb new file mode 100644 index 000000000..afcca9029 --- /dev/null +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -0,0 +1,54 @@ +# frozen_string_literal: true + +require "commands" +require "cli/parser" +require "open-uri" +require "json" + +module Homebrew + module_function + SPDX_FOLDER_PATH = (HOMEBREW_LIBRARY_PATH/"data").freeze + FILE_NAME = "spdx.json".freeze + NEW_FILE_NAME = "spdx_new.json".freeze + SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json" + + def update_license_data_args + Homebrew::CLI::Parser.new do + usage_banner <<~EOS + `update_license_data` + + Update SPDX license data in the Homebrew repository. + EOS + switch "--fail-if-outdated", + description: "Return a failing status code if current license data's version is different from the upstream. This "\ + "can be used to notify CI when the SPDX license data is out of date." + end + end + + def update_license_data + update_license_data_args.parse + p args + curr_spdx_hash = File.open(SPDX_FOLDER_PATH/FILE_NAME, 'r') do |f| + JSON.parse(f.read) + end + puts "Fetching newest version of SPDX License data..." + updated_spdx_string = open(SPDX_DATA_URL) do |json| + json.read + end + + updated_spdx_hash = JSON.parse(updated_spdx_string) + if curr_spdx_hash["licenseListVersion"] != updated_spdx_hash["licenseListVersion"] + + puts "Current version is #{curr_spdx_hash["licenseListVersion"]} but newest version is #{updated_spdx_hash["licenseListVersion"]}\n"\ + "Updating existing licences data file..." + File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| + file.write(updated_spdx_string) + end + if args.fail_if_outdated + Homebrew.failed = true + end + end + else + puts "Current version of license data is updated. No change required" + end + end From 8d7a9d51d33b9bab04e499b60e83323a2e9b5e4e Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 23 Jun 2020 01:42:24 +0800 Subject: [PATCH 33/98] audit: rename spdx_id to spdx_data --- Library/Homebrew/dev-cmd/audit.rb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index de54bbdc8..d5538ac0e 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -112,20 +112,20 @@ module Homebrew style_results = Style.check_style_json(style_files, options) if style_files # load licenses full_path = File.join(File.dirname(__FILE__), "../data/spdx.json") - spdx_ids = File.open(full_path, "r") do |f| - JSON.parse(f.read) + spdx_data = File.open(full_path, "r") do |file| + JSON.parse(file.read) end new_formula_problem_lines = [] audit_formulae.sort.each do |f| only = only_cops ? ["style"] : args.only options = { - new_formula: new_formula, - strict: strict, - online: online, - git: git, - only: only, - except: args.except, - spdx_ids: spdx_ids, + new_formula: new_formula, + strict: strict, + online: online, + git: git, + only: only, + except: args.except, + spdx_data: spdx_data, } options[:style_offenses] = style_results.file_offenses(f.path) if style_results options[:display_cop_names] = args.display_cop_names? @@ -229,7 +229,7 @@ module Homebrew @new_formula_problems = [] @text = FormulaText.new(formula.path) @specs = %w[stable devel head].map { |s| formula.send(s) }.compact - @spdx_ids = options[:spdx_ids] + @spdx_data = options[:spdx_data] end def audit_style @@ -350,7 +350,7 @@ module Homebrew def audit_license if formula.license.present? - if @spdx_ids.key?(formula.license) + if @spdx_data.key?(formula.license) return unless @online user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) From e4e55c5cb38f468d1c01c0f8b938d96cd0b313b2 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 23 Jun 2020 02:25:46 +0800 Subject: [PATCH 34/98] update-license-data: wrote rspec test and added one more parseable arg --- .../Homebrew/dev-cmd/update-license-data.rb | 21 ++++++++++++------- .../test/dev-cmd/update_license_data_spec.rb | 9 ++++++++ 2 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 Library/Homebrew/test/dev-cmd/update_license_data_spec.rb diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index afcca9029..c2f9f45d2 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -22,6 +22,11 @@ module Homebrew switch "--fail-if-outdated", description: "Return a failing status code if current license data's version is different from the upstream. This "\ "can be used to notify CI when the SPDX license data is out of date." + + switch "--do-not-replace", + description: "Flags out discrepancy between local and upstream versions, but does not replace" + + max_named 0 end end @@ -39,16 +44,16 @@ module Homebrew updated_spdx_hash = JSON.parse(updated_spdx_string) if curr_spdx_hash["licenseListVersion"] != updated_spdx_hash["licenseListVersion"] - puts "Current version is #{curr_spdx_hash["licenseListVersion"]} but newest version is #{updated_spdx_hash["licenseListVersion"]}\n"\ - "Updating existing licences data file..." - File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| - file.write(updated_spdx_string) - end - if args.fail_if_outdated - Homebrew.failed = true - end + puts "Current version is #{curr_spdx_hash["licenseListVersion"]} but newest version is #{updated_spdx_hash["licenseListVersion"]}" + unless args.do_not_replace? + puts "Updating existing licences data file..." + File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| + file.write(updated_spdx_string) + end end + Homebrew.failed = !!args.fail_if_outdated else puts "Current version of license data is updated. No change required" end end + end diff --git a/Library/Homebrew/test/dev-cmd/update_license_data_spec.rb b/Library/Homebrew/test/dev-cmd/update_license_data_spec.rb new file mode 100644 index 000000000..279332f87 --- /dev/null +++ b/Library/Homebrew/test/dev-cmd/update_license_data_spec.rb @@ -0,0 +1,9 @@ +require 'rspec' + +describe 'My behaviour' do + + it 'should do something' do + + true.should == false + end +end \ No newline at end of file From 127d67e745676c7d966b944b7212717b28eafd96 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 23 Jun 2020 02:59:55 +0800 Subject: [PATCH 35/98] license: update tests and license checking logic --- Library/Homebrew/dev-cmd/audit.rb | 2 +- Library/Homebrew/test/dev-cmd/audit_spec.rb | 16 ++++++++-------- .../test/dev-cmd/update_license_data_spec.rb | 12 +++++------- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index d5538ac0e..9516d7c8f 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -350,7 +350,7 @@ module Homebrew def audit_license if formula.license.present? - if @spdx_data.key?(formula.license) + if @spdx_data["licenses"].any?{|lic| lic["licenseId"] == formula.license} return unless @online user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index eaef7af11..353aa9b78 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -96,7 +96,7 @@ module Homebrew end describe "#audit_license" do - let(:spdx_ids) { + let(:spdx_data) { full_path = File.join(File.dirname(__FILE__), "../../data/spdx.json") File.open(full_path, "r") do |f| JSON.parse(f.read) @@ -107,7 +107,7 @@ module Homebrew let(:standard_mismatch_spdx_id) { "0BSD" } it "does not check if the formula is not a new formula" do - fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids, new_formula: false + fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: false class Foo < Formula url "https://brew.sh/foo-1.0.tgz" license "" @@ -119,7 +119,7 @@ module Homebrew end it "detects no license info" do - fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids, new_formula: true + fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true class Foo < Formula url "https://brew.sh/foo-1.0.tgz" license "" @@ -132,7 +132,7 @@ module Homebrew end it "detects if license is not a standard spdx-id" do - fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids, new_formula: true + fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true class Foo < Formula url "https://brew.sh/foo-1.0.tgz" license "#{custom_spdx_id}" @@ -144,7 +144,7 @@ module Homebrew end it "verifies that a license info is a standard spdx id" do - fa = formula_auditor "foo", <<~RUBY, spdx_ids: spdx_ids, new_formula: true + fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true class Foo < Formula url "https://brew.sh/foo-1.0.tgz" license "0BSD" @@ -157,7 +157,7 @@ module Homebrew it "checks online and verifies that a standard license id is the same "\ "as what is indicated on its Github repo" do - fa = formula_auditor "cask", <<~RUBY, spdx_ids: spdx_ids, online: true, core_tap: true, new_formula: true + fa = formula_auditor "cask", <<~RUBY, spdx_data: spdx_data, online: true, core_tap: true, new_formula: true class Cask < Formula url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" head "https://github.com/cask/cask.git" @@ -166,12 +166,12 @@ module Homebrew RUBY fa.audit_license - expect(fa.problems).to be_empty + expect(fa.problems).to be_empty end it "checks online and detects that a formula-specified license is not "\ "the same as what is indicated on its Github repository" do - fa = formula_auditor "cask", <<~RUBY, online: true, spdx_ids: spdx_ids, core_tap: true, new_formula: true + fa = formula_auditor "cask", <<~RUBY, online: true, spdx_data: spdx_data, core_tap: true, new_formula: true class Cask < Formula url "https://github.com/cask/cask/archive/v0.8.4.tar.gz" head "https://github.com/cask/cask.git" diff --git a/Library/Homebrew/test/dev-cmd/update_license_data_spec.rb b/Library/Homebrew/test/dev-cmd/update_license_data_spec.rb index 279332f87..d9be45780 100644 --- a/Library/Homebrew/test/dev-cmd/update_license_data_spec.rb +++ b/Library/Homebrew/test/dev-cmd/update_license_data_spec.rb @@ -1,9 +1,7 @@ -require 'rspec' +# frozen_string_literal: true -describe 'My behaviour' do +require "cmd/shared_examples/args_parse" - it 'should do something' do - - true.should == false - end -end \ No newline at end of file +describe "Homebrew.update_license_data_args" do + it_behaves_like "parseable arguments" +end From 9845091f4d20e449dcafd420953e538137580f47 Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Wed, 24 Jun 2020 18:32:53 +0800 Subject: [PATCH 36/98] Apply suggestions from code review license: code review changes Co-authored-by: Mike McQuaid --- Library/Homebrew/Gemfile | 1 - Library/Homebrew/Gemfile.lock | 1 - Library/Homebrew/dev-cmd/audit.rb | 26 +++++++++---------- Library/Homebrew/dev-cmd/create.rb | 1 - .../Homebrew/dev-cmd/update-license-data.rb | 2 +- Library/Homebrew/formula.rb | 2 +- 6 files changed, 14 insertions(+), 19 deletions(-) diff --git a/Library/Homebrew/Gemfile b/Library/Homebrew/Gemfile index 917787658..3024597c2 100644 --- a/Library/Homebrew/Gemfile +++ b/Library/Homebrew/Gemfile @@ -13,7 +13,6 @@ gem "rspec-retry", require: false gem "rspec-wait", require: false gem "rubocop" gem "simplecov", require: false - if ENV["HOMEBREW_SORBET"] gem "sorbet" gem "sorbet-runtime" diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index 2b4bdf763..6c51d2f77 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -128,7 +128,6 @@ DEPENDENCIES byebug concurrent-ruby coveralls (~> 0.8) - json mechanize parallel_tests plist diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 9516d7c8f..4f2b40971 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -111,21 +111,19 @@ module Homebrew # Check style in a single batch run up front for performance style_results = Style.check_style_json(style_files, options) if style_files # load licenses - full_path = File.join(File.dirname(__FILE__), "../data/spdx.json") - spdx_data = File.open(full_path, "r") do |file| - JSON.parse(file.read) - end + spdx = HOMEBREW_LIBRARY_PATH/"data/spdx.json" + JSON.parse(spdx.read) new_formula_problem_lines = [] audit_formulae.sort.each do |f| only = only_cops ? ["style"] : args.only options = { - new_formula: new_formula, - strict: strict, - online: online, - git: git, - only: only, - except: args.except, - spdx_data: spdx_data, + new_formula: new_formula, + strict: strict, + online: online, + git: git, + only: only, + except: args.except, + spdx_data: spdx_data, } options[:style_offenses] = style_results.file_offenses(f.path) if style_results options[:display_cop_names] = args.display_cop_names? @@ -350,7 +348,7 @@ module Homebrew def audit_license if formula.license.present? - if @spdx_data["licenses"].any?{|lic| lic["licenseId"] == formula.license} + if @spdx_data["licenses"].any? { |lic| lic["licenseId"] == formula.license } return unless @online user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) @@ -360,9 +358,9 @@ module Homebrew return if github_license && (github_license == formula.license) problem "License mismatch - GitHub license is: #{github_license}, "\ - "but Formulae license states: #{formula.license}." + "but formula license states: #{formula.license}." else - problem "#{formula.license} is not a standard SPDX license." + problem "#{formula.license} is not a SPDX license." end elsif @new_formula problem "No license specified for package." diff --git a/Library/Homebrew/dev-cmd/create.rb b/Library/Homebrew/dev-cmd/create.rb index fd519ba0d..40f9d28da 100644 --- a/Library/Homebrew/dev-cmd/create.rb +++ b/Library/Homebrew/dev-cmd/create.rb @@ -49,7 +49,6 @@ module Homebrew description: "Explicitly set the of the new formula." flag "--tap=", description: "Generate the new formula within the given tap, specified as `/`." - switch :force switch :verbose switch :debug diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index c2f9f45d2..c93b732a4 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -19,7 +19,7 @@ module Homebrew Update SPDX license data in the Homebrew repository. EOS - switch "--fail-if-outdated", + switch "--fail-if-changed", description: "Return a failing status code if current license data's version is different from the upstream. This "\ "can be used to notify CI when the SPDX license data is out of date." diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index b401f2f1c..6af0284f9 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2207,7 +2207,7 @@ class Formula # The SPDX ID of the open-source license that the formula uses. # Shows when running `brew info`. # - #
license " BSD-2-Clause"
+ #
license "BSD-2-Clause"
attr_rw :license # @!attribute [w] homepage From ac818ec556470d29f524cc0f77debb84f10dd0ac Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 24 Jun 2020 18:50:46 +0800 Subject: [PATCH 37/98] commit older version to test git command --- Library/Homebrew/data/spdx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/data/spdx.json b/Library/Homebrew/data/spdx.json index 530b2796f..5000b7393 100644 --- a/Library/Homebrew/data/spdx.json +++ b/Library/Homebrew/data/spdx.json @@ -1,5 +1,5 @@ { - "licenseListVersion": "3.9-4-g1a3102c", + "licenseListVersion": "3.8-4-g1a3102c", "licenses": [ { "reference": "./0BSD.html", From 4832a5aa05966fcfd1979613107401b5bf55bca8 Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 24 Jun 2020 20:43:33 +0800 Subject: [PATCH 38/98] audit: modified problem statement to match --- Library/Homebrew/dev-cmd/audit.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 4f2b40971..e6ce4c6f8 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -123,7 +123,7 @@ module Homebrew git: git, only: only, except: args.except, - spdx_data: spdx_data, + spdx_data: spdx_data, } options[:style_offenses] = style_results.file_offenses(f.path) if style_results options[:display_cop_names] = args.display_cop_names? @@ -358,9 +358,9 @@ module Homebrew return if github_license && (github_license == formula.license) problem "License mismatch - GitHub license is: #{github_license}, "\ - "but formula license states: #{formula.license}." + "but Formulae license states: #{formula.license}." else - problem "#{formula.license} is not a SPDX license." + problem "#{formula.license} is not a standard SPDX license." end elsif @new_formula problem "No license specified for package." From 992a30d02a9acfcbd527532b0f7812800d15ee48 Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 24 Jun 2020 21:06:45 +0800 Subject: [PATCH 39/98] spdx: commit correct version of license data to test exit code --- Library/Homebrew/data/spdx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/data/spdx.json b/Library/Homebrew/data/spdx.json index 5000b7393..530b2796f 100644 --- a/Library/Homebrew/data/spdx.json +++ b/Library/Homebrew/data/spdx.json @@ -1,5 +1,5 @@ { - "licenseListVersion": "3.8-4-g1a3102c", + "licenseListVersion": "3.9-4-g1a3102c", "licenses": [ { "reference": "./0BSD.html", From 221fd4f7c641beba1211080a6c417b093a4a9ed6 Mon Sep 17 00:00:00 2001 From: Lionell Date: Wed, 24 Jun 2020 21:12:10 +0800 Subject: [PATCH 40/98] wrong spdx to test exit code output --- Library/Homebrew/data/spdx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/data/spdx.json b/Library/Homebrew/data/spdx.json index 530b2796f..95920c43c 100644 --- a/Library/Homebrew/data/spdx.json +++ b/Library/Homebrew/data/spdx.json @@ -1,5 +1,5 @@ { - "licenseListVersion": "3.9-4-g1a3102c", + "licenseListVersion": "3.9-4-g1a3102cd", "licenses": [ { "reference": "./0BSD.html", From 3f267a8fc9409dcffd5e016990c74a63e874c053 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 05:09:56 +0800 Subject: [PATCH 41/98] audit: fix callers to call get_repo_data only if @new_formula --- Library/Homebrew/dev-cmd/audit.rb | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index e6ce4c6f8..0742b49b1 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -112,7 +112,9 @@ module Homebrew style_results = Style.check_style_json(style_files, options) if style_files # load licenses spdx = HOMEBREW_LIBRARY_PATH/"data/spdx.json" - JSON.parse(spdx.read) + spdx_data = open(spdx, "r") do |file| + JSON.parse(file.read) + end new_formula_problem_lines = [] audit_formulae.sort.each do |f| only = only_cops ? ["style"] : args.only @@ -351,7 +353,9 @@ module Homebrew if @spdx_data["licenses"].any? { |lic| lic["licenseId"] == formula.license } return unless @online - user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) + user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula + user ||= nil + repo ||= nil return if user.nil? github_license = GitHub.get_repo_license(user, repo) @@ -542,7 +546,9 @@ module Homebrew end def audit_github_repository - user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) + user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula + user ||=nil + repo ||=nil return if user.nil? warning = SharedAudits.github(user, repo) @@ -552,7 +558,9 @@ module Homebrew end def audit_gitlab_repository - user, repo = get_repo_data(%r{https?://gitlab\.com/([^/]+)/([^/]+)/?.*}) + user, repo = get_repo_data(%r{https?://gitlab\.com/([^/]+)/([^/]+)/?.*}) if @new_formula + user ||= nil + repo ||=nil return if user.nil? warning = SharedAudits.gitlab(user, repo) @@ -562,7 +570,9 @@ module Homebrew end def audit_bitbucket_repository - user, repo = get_repo_data(%r{https?://bitbucket\.org/([^/]+)/([^/]+)/?.*}) + user, repo = get_repo_data(%r{https?://bitbucket\.org/([^/]+)/([^/]+)/?.*}) if @new_formula + user ||= nil + repo ||= nil return if user.nil? warning = SharedAudits.bitbucket(user, repo) From 37541704b8b5a1ee54dec196c94735f9f50aabef Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 05:10:29 +0800 Subject: [PATCH 42/98] update-license-data: style fixes --- .../Homebrew/dev-cmd/update-license-data.rb | 63 +++++++------------ 1 file changed, 24 insertions(+), 39 deletions(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index c93b732a4..e198a2568 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -7,53 +7,38 @@ require "json" module Homebrew module_function - SPDX_FOLDER_PATH = (HOMEBREW_LIBRARY_PATH/"data").freeze - FILE_NAME = "spdx.json".freeze - NEW_FILE_NAME = "spdx_new.json".freeze - SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json" - def update_license_data_args - Homebrew::CLI::Parser.new do - usage_banner <<~EOS - `update_license_data` + SPDX_FOLDER_PATH = (HOMEBREW_LIBRARY_PATH/"data").freeze + FILE_NAME = "spdx.json" + SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json" - Update SPDX license data in the Homebrew repository. + def update_license_data_args + Homebrew::CLI::Parser.new do + usage_banner <<~EOS + `update_license_data` + + Update SPDX license data in the Homebrew repository. EOS - switch "--fail-if-changed", - description: "Return a failing status code if current license data's version is different from the upstream. This "\ - "can be used to notify CI when the SPDX license data is out of date." + switch "--fail-if-changed", + description: "Return a failing status code if current license data's version is different from the upstream. This "\ + "can be used to notify CI when the SPDX license data is out of date." - switch "--do-not-replace", - description: "Flags out discrepancy between local and upstream versions, but does not replace" - - max_named 0 - end - end - - def update_license_data - update_license_data_args.parse - p args - curr_spdx_hash = File.open(SPDX_FOLDER_PATH/FILE_NAME, 'r') do |f| - JSON.parse(f.read) - end - puts "Fetching newest version of SPDX License data..." - updated_spdx_string = open(SPDX_DATA_URL) do |json| - json.read + max_named 0 + end end - updated_spdx_hash = JSON.parse(updated_spdx_string) - if curr_spdx_hash["licenseListVersion"] != updated_spdx_hash["licenseListVersion"] - - puts "Current version is #{curr_spdx_hash["licenseListVersion"]} but newest version is #{updated_spdx_hash["licenseListVersion"]}" - unless args.do_not_replace? - puts "Updating existing licences data file..." + def update_license_data + update_license_data_args.parse + puts "Fetching newest version of SPDX License data..." + open(SPDX_DATA_URL) do |json| File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| - file.write(updated_spdx_string) + file.write(json.read) end end - Homebrew.failed = !!args.fail_if_outdated - else - puts "Current version of license data is updated. No change required" + + if args.fail_if_changed? + Homebrew.failed = true + system("git diff --stat --exit-code #{FILE_NAME}") + end end end - end From 2970abdc73c89313b353d3a1e9c57ec34d6a73ef Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 05:10:42 +0800 Subject: [PATCH 43/98] spdx.json: new version --- Library/Homebrew/data/spdx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/data/spdx.json b/Library/Homebrew/data/spdx.json index 95920c43c..530b2796f 100644 --- a/Library/Homebrew/data/spdx.json +++ b/Library/Homebrew/data/spdx.json @@ -1,5 +1,5 @@ { - "licenseListVersion": "3.9-4-g1a3102cd", + "licenseListVersion": "3.9-4-g1a3102c", "licenses": [ { "reference": "./0BSD.html", From fbd5c32d22d64b3be24224ebccfa28a42675f653 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 05:46:18 +0800 Subject: [PATCH 44/98] bunch of style fixes --- .../Homebrew/dev-cmd/update-license-data.rb | 54 +++++++++---------- Library/Homebrew/test/dev-cmd/audit_spec.rb | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index e198a2568..615df330e 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -8,37 +8,37 @@ require "json" module Homebrew module_function - SPDX_FOLDER_PATH = (HOMEBREW_LIBRARY_PATH/"data").freeze - FILE_NAME = "spdx.json" - SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json" + SPDX_FOLDER_PATH = (HOMEBREW_LIBRARY_PATH/"data").freeze + FILE_NAME = "spdx.json" + SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json" - def update_license_data_args - Homebrew::CLI::Parser.new do - usage_banner <<~EOS - `update_license_data` + def update_license_data_args + Homebrew::CLI::Parser.new do + usage_banner <<~EOS + `update_license_data` Update SPDX license data in the Homebrew repository. EOS - switch "--fail-if-changed", - description: "Return a failing status code if current license data's version is different from the upstream. This "\ - "can be used to notify CI when the SPDX license data is out of date." + switch "--fail-if-changed", + description: "Return a failing status code if current license data's version is different from"\ + "the upstream. This can be used to notify CI when the SPDX license data is out of date." - max_named 0 - end - end - - def update_license_data - update_license_data_args.parse - puts "Fetching newest version of SPDX License data..." - open(SPDX_DATA_URL) do |json| - File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| - file.write(json.read) - end - end - - if args.fail_if_changed? - Homebrew.failed = true - system("git diff --stat --exit-code #{FILE_NAME}") - end + max_named 0 end end + + def update_license_data + update_license_data_args.parse + puts "Fetching newest version of SPDX License data..." + File.open(SPDX_DATA_URL) do |json| + File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| + file.write(json.read) + end + end + + return unless args.fail_if_changed? + + Homebrew.failed = true + system("git diff --stat --exit-code #{FILE_NAME}") + end +end diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 353aa9b78..12605668a 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -166,7 +166,7 @@ module Homebrew RUBY fa.audit_license - expect(fa.problems).to be_empty + expect(fa.problems).to be_empty end it "checks online and detects that a formula-specified license is not "\ From 0304545d0cb334c5f24be63e1c639ff8989f7226 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 05:46:33 +0800 Subject: [PATCH 45/98] use File.open instead of Kernel.open --- Library/Homebrew/dev-cmd/audit.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 0742b49b1..52aa1f00e 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -112,7 +112,7 @@ module Homebrew style_results = Style.check_style_json(style_files, options) if style_files # load licenses spdx = HOMEBREW_LIBRARY_PATH/"data/spdx.json" - spdx_data = open(spdx, "r") do |file| + spdx_data = File.open(spdx, "r") do |file| JSON.parse(file.read) end new_formula_problem_lines = [] From cc994b5c656344fa6e2773eb6e310ce7ad7b2d65 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 05:52:08 +0800 Subject: [PATCH 46/98] Commit man pages --- docs/Manpage.md | 7 +++++++ manpages/brew.1 | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/docs/Manpage.md b/docs/Manpage.md index ab6236778..d497f0633 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1018,6 +1018,13 @@ directory. * `-g`, `--git`: Initialise a Git repository in the unpacked source. This is useful for creating patches for the software. +### `update_license_data` *`cmd`* + + Update SPDX license data in the Homebrew repository. + +* `--fail-if-changed`: + Return a failing status code if current license data's version is different fromthe upstream. This can be used to notify CI when the SPDX license data is out of date. + ### `update-test` [*`options`*] Run a test of `brew update` with a new repository clone. If no options are diff --git a/manpages/brew.1 b/manpages/brew.1 index fd47c1a36..74779ac66 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -1311,6 +1311,13 @@ Patches for \fIformula\fR will be applied to the unpacked source\. \fB\-g\fR, \fB\-\-git\fR Initialise a Git repository in the unpacked source\. This is useful for creating patches for the software\. . +.SS "\fBupdate_license_data\fR \fIcmd\fR" +Update SPDX license data in the Homebrew repository\. +. +.TP +\fB\-\-fail\-if\-changed\fR +Return a failing status code if current license data\'s version is different fromthe upstream\. This can be used to notify CI when the SPDX license data is out of date\. +. .SS "\fBupdate\-test\fR [\fIoptions\fR]" Run a test of \fBbrew update\fR with a new repository clone\. If no options are passed, use \fBorigin/master\fR as the start commit\. . From 97ae608890cafe7e271976e18d6674fa4676b42d Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 13:44:26 +0800 Subject: [PATCH 47/98] update internal commands list --- completions/internal_commands_list.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/completions/internal_commands_list.txt b/completions/internal_commands_list.txt index ba9cceffd..69f6c41c2 100644 --- a/completions/internal_commands_list.txt +++ b/completions/internal_commands_list.txt @@ -86,6 +86,7 @@ unpin untap up update +update-license-data update-report update-reset update-test From 22baff39bc1433bfdd26139d2d18bd34c902c7fc Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Thu, 25 Jun 2020 15:36:55 +0800 Subject: [PATCH 48/98] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Applying style-related suggestions from code review Co-authored-by: Dario Vladović --- Library/Homebrew/dev-cmd/audit.rb | 6 +++--- docs/Manpage.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 52aa1f00e..d8fa4528a 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -547,8 +547,8 @@ module Homebrew def audit_github_repository user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula - user ||=nil - repo ||=nil + user ||= nil + repo ||= nil return if user.nil? warning = SharedAudits.github(user, repo) @@ -560,7 +560,7 @@ module Homebrew def audit_gitlab_repository user, repo = get_repo_data(%r{https?://gitlab\.com/([^/]+)/([^/]+)/?.*}) if @new_formula user ||= nil - repo ||=nil + repo ||= nil return if user.nil? warning = SharedAudits.gitlab(user, repo) diff --git a/docs/Manpage.md b/docs/Manpage.md index 4762e5d12..0be49ffe2 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1031,7 +1031,7 @@ directory. Update SPDX license data in the Homebrew repository. * `--fail-if-changed`: - Return a failing status code if current license data's version is different fromthe upstream. This can be used to notify CI when the SPDX license data is out of date. + Return a failing status code if the current license data's version is different from the upstream. This can be used to notify CI when the SPDX license data is out of date. ### `update-test` [*`options`*] From 62ffc26140f8d5b2e9bc82fa43b377045455250f Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 17:21:00 +0800 Subject: [PATCH 49/98] Update man page --- docs/Manpage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Manpage.md b/docs/Manpage.md index 0be49ffe2..4762e5d12 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1031,7 +1031,7 @@ directory. Update SPDX license data in the Homebrew repository. * `--fail-if-changed`: - Return a failing status code if the current license data's version is different from the upstream. This can be used to notify CI when the SPDX license data is out of date. + Return a failing status code if current license data's version is different fromthe upstream. This can be used to notify CI when the SPDX license data is out of date. ### `update-test` [*`options`*] From eb38890f3c262130a3d33b6ebecd15202dd9ca3d Mon Sep 17 00:00:00 2001 From: Lionell Date: Thu, 25 Jun 2020 17:46:28 +0800 Subject: [PATCH 50/98] change back to open because File.open does not work on URLs --- .github/workflows/tests.yml | 3 +++ Library/Homebrew/dev-cmd/update-license-data.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8b273bede..f2d1663fd 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -114,6 +114,9 @@ jobs: - name: Run brew man run: brew man --fail-if-changed + - name: Check for outdated license data + run: brew update-license-data --fail-if-changed + - name: Run brew tests run: | # brew tests doesn't like world writable directories diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index 615df330e..ee0917423 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -30,7 +30,7 @@ module Homebrew def update_license_data update_license_data_args.parse puts "Fetching newest version of SPDX License data..." - File.open(SPDX_DATA_URL) do |json| + open(SPDX_DATA_URL) do |json| File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| file.write(json.read) end From 5aa0eb487e72776d3f347c73a0dedcf79606fa74 Mon Sep 17 00:00:00 2001 From: Lionell Date: Thu, 25 Jun 2020 17:51:47 +0800 Subject: [PATCH 51/98] rename spec file --- .../{update_license_data_spec.rb => update-license-data_spec.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Library/Homebrew/test/dev-cmd/{update_license_data_spec.rb => update-license-data_spec.rb} (100%) diff --git a/Library/Homebrew/test/dev-cmd/update_license_data_spec.rb b/Library/Homebrew/test/dev-cmd/update-license-data_spec.rb similarity index 100% rename from Library/Homebrew/test/dev-cmd/update_license_data_spec.rb rename to Library/Homebrew/test/dev-cmd/update-license-data_spec.rb From 1b9cbf1bf1ae14cc386587504f3a6b8edbeac7c2 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 19:05:41 +0800 Subject: [PATCH 52/98] changed method of fetching license data --- Library/Homebrew/dev-cmd/update-license-data.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index ee0917423..e5985d456 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -2,8 +2,9 @@ require "commands" require "cli/parser" -require "open-uri" require "json" +require 'net/http' +require "open-uri" module Homebrew module_function @@ -30,10 +31,10 @@ module Homebrew def update_license_data update_license_data_args.parse puts "Fetching newest version of SPDX License data..." - open(SPDX_DATA_URL) do |json| - File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| - file.write(json.read) - end + resp = Net::HTTP.get_response(URI.parse(SPDX_DATA_URL)) + + File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| + file.write(resp.body) end return unless args.fail_if_changed? From 77a8ff51da20ed08c4dcc2815c1d0da75e83e922 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 19:20:26 +0800 Subject: [PATCH 53/98] single quotes -> double quotes --- Library/Homebrew/dev-cmd/update-license-data.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index e5985d456..a785db12b 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -3,7 +3,7 @@ require "commands" require "cli/parser" require "json" -require 'net/http' +require "net/http" require "open-uri" module Homebrew From 2cf0ac9ed5c429aa61c2bbf52eab5be70d2b8f14 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 20:34:06 +0800 Subject: [PATCH 54/98] update-spdx-data: use a more specific file path --- Library/Homebrew/dev-cmd/update-license-data.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index a785db12b..c118c1c5c 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -40,6 +40,6 @@ module Homebrew return unless args.fail_if_changed? Homebrew.failed = true - system("git diff --stat --exit-code #{FILE_NAME}") + system("git diff --stat --exit-code #{SPDX_FOLDER_PATH/FILE_NAME}") end end From 6a05e3663a824e4d92949541a62112003fa897b7 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Thu, 25 Jun 2020 21:06:29 +0800 Subject: [PATCH 55/98] Remove Homebrew.failed=true --- Library/Homebrew/dev-cmd/update-license-data.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index c118c1c5c..7d5c5fdeb 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -39,7 +39,6 @@ module Homebrew return unless args.fail_if_changed? - Homebrew.failed = true system("git diff --stat --exit-code #{SPDX_FOLDER_PATH/FILE_NAME}") end end From 759708fae7dd3c9e5867ae42be34631dfe535964 Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Sun, 28 Jun 2020 01:54:41 +0800 Subject: [PATCH 56/98] Apply suggestions from code review Code Review Changes Co-authored-by: Mike McQuaid --- Library/Homebrew/dev-cmd/audit.rb | 6 ++---- Library/Homebrew/dev-cmd/update-license-data.rb | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index d8fa4528a..d4727d34e 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -112,9 +112,7 @@ module Homebrew style_results = Style.check_style_json(style_files, options) if style_files # load licenses spdx = HOMEBREW_LIBRARY_PATH/"data/spdx.json" - spdx_data = File.open(spdx, "r") do |file| - JSON.parse(file.read) - end + spdx_data = JSON.parse(spdx.read) new_formula_problem_lines = [] audit_formulae.sort.each do |f| only = only_cops ? ["style"] : args.only @@ -356,7 +354,7 @@ module Homebrew user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula user ||= nil repo ||= nil - return if user.nil? + return if user.blank? github_license = GitHub.get_repo_license(user, repo) return if github_license && (github_license == formula.license) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index 7d5c5fdeb..dde7ed29d 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -11,7 +11,7 @@ module Homebrew SPDX_FOLDER_PATH = (HOMEBREW_LIBRARY_PATH/"data").freeze FILE_NAME = "spdx.json" - SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json" + SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/HEAD/json/licenses.json" def update_license_data_args Homebrew::CLI::Parser.new do From 4d4f6a8facd5eaf8668d74ddb7a575b0a792a498 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Sun, 28 Jun 2020 02:07:32 +0800 Subject: [PATCH 57/98] audit: remove unnecessary nil assignment --- Library/Homebrew/dev-cmd/audit.rb | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index d4727d34e..24f1116cd 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -352,8 +352,6 @@ module Homebrew return unless @online user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula - user ||= nil - repo ||= nil return if user.blank? github_license = GitHub.get_repo_license(user, repo) @@ -545,8 +543,7 @@ module Homebrew def audit_github_repository user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula - user ||= nil - repo ||= nil + return if user.nil? warning = SharedAudits.github(user, repo) @@ -557,8 +554,6 @@ module Homebrew def audit_gitlab_repository user, repo = get_repo_data(%r{https?://gitlab\.com/([^/]+)/([^/]+)/?.*}) if @new_formula - user ||= nil - repo ||= nil return if user.nil? warning = SharedAudits.gitlab(user, repo) @@ -569,8 +564,6 @@ module Homebrew def audit_bitbucket_repository user, repo = get_repo_data(%r{https?://bitbucket\.org/([^/]+)/([^/]+)/?.*}) if @new_formula - user ||= nil - repo ||= nil return if user.nil? warning = SharedAudits.bitbucket(user, repo) From 90309e5f42a9c60c6040d9d4ee0401fa413d1c7e Mon Sep 17 00:00:00 2001 From: Jonathan Chang Date: Sat, 27 Jun 2020 22:01:51 +1000 Subject: [PATCH 58/98] github: fetch approved reviews for a pull request --- Library/Homebrew/test/utils/github_spec.rb | 7 ++++ Library/Homebrew/utils/github.rb | 46 ++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/Library/Homebrew/test/utils/github_spec.rb b/Library/Homebrew/test/utils/github_spec.rb index 939ac6de5..354c2585c 100644 --- a/Library/Homebrew/test/utils/github_spec.rb +++ b/Library/Homebrew/test/utils/github_spec.rb @@ -42,6 +42,13 @@ describe GitHub do end end + describe "::approved_reviews", :needs_network do + it "can get reviews for a pull request" do + reviews = subject.approved_reviews("Homebrew", "homebrew-core", 1, commit: "deadbeef") + expect(reviews).to eq([]) + end + end + describe "::get_artifact_url", :needs_network do it "fails to find a nonexistant workflow" do expect { diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 556089c09..eae33a8ea 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -394,6 +394,52 @@ module GitHub open_api(uri) { |json| json.fetch("items", []) } end + def approved_reviews(user, repo, pr, commit: nil) + url = "https://api.github.com/graphql" + data = { + query: <<~EOS, + { repository(name: "#{repo}", owner: "#{user}") { + pullRequest(number: #{pr}) { + reviews(states: APPROVED, first: 100) { + nodes { + author { + ... on User { email login name databaseId } + ... on Organization { email login name databaseId } + } + authorAssociation + commit { oid } + } + } + } + } + } + EOS + } + result = open_api(url, data: data, request_method: "POST") + raise Error, result["errors"] if result["errors"].present? + + reviews = result["data"]["repository"]["pullRequest"]["reviews"]["nodes"] + + reviews.map do |r| + next if commit.present? && commit != r["commit"]["oid"] + next unless %w[MEMBER OWNER].include? r["authorAssociation"] + + email = if r["author"]["email"].empty? + "#{r["author"]["databaseId"]}+#{r["author"]["login"]}@users.noreply.github.com" + else + r["author"]["email"] + end + + name = r["author"]["name"] || r["author"]["login"] + + { + "email" => email, + "name" => name, + "login" => r["author"]["login"], + } + end.compact + end + def dispatch_event(user, repo, event, **payload) url = "#{API_URL}/repos/#{user}/#{repo}/dispatches" open_api(url, data: { event_type: event, client_payload: payload }, From bada8dd7597ddaae8c2b88d1b5debc5cf4898422 Mon Sep 17 00:00:00 2001 From: Jonathan Chang Date: Sat, 27 Jun 2020 23:00:05 +1000 Subject: [PATCH 59/98] pr-pull: add review approval trailers on signoff --- Library/Homebrew/dev-cmd/pr-pull.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/dev-cmd/pr-pull.rb b/Library/Homebrew/dev-cmd/pr-pull.rb index c5f82ec11..24d7e4e0f 100644 --- a/Library/Homebrew/dev-cmd/pr-pull.rb +++ b/Library/Homebrew/dev-cmd/pr-pull.rb @@ -73,13 +73,18 @@ module Homebrew end end - def signoff!(pr, path: ".") - message = Utils.popen_read "git", "-C", path, "log", "-1", "--pretty=%B" + def signoff!(pr, tap:) + message = Utils.popen_read "git", "-C", tap.path, "log", "-1", "--pretty=%B" subject = message.lines.first.strip # Skip the subject and separate lines that look like trailers (e.g. "Co-authored-by") # from lines that look like regular body text. trailers, body = message.lines.drop(1).partition { |s| s.match?(/^[a-z-]+-by:/i) } + + # Approving reviewers also sign-off on merge + trailers += GitHub.approved_reviews(tap.user, "homebrew-#{tap.repo}", pr).map do |r| + "Signed-off-by: #{r["name"]} <#{r["email"]}>\n" + end trailers = trailers.uniq.join.strip body = body.join.strip.gsub(/\n{3,}/, "\n\n") @@ -90,7 +95,7 @@ module Homebrew if Homebrew.args.dry_run? puts "git commit --amend --signoff -m $message" else - safe_system "git", "-C", path, "commit", "--amend", "--signoff", "--allow-empty", "-q", "-m", new_message + safe_system "git", "-C", tap.path, "commit", "--amend", "--signoff", "--allow-empty", "-q", "-m", new_message end end @@ -232,7 +237,7 @@ module Homebrew cd dir do original_commit = Utils.popen_read("git", "-C", tap.path, "rev-parse", "HEAD").chomp cherry_pick_pr! pr, path: tap.path - signoff! pr, path: tap.path unless args.clean? + signoff! pr, tap: tap unless args.clean? unless args.no_upload? mirror_formulae(tap, original_commit, org: bintray_org, repo: mirror_repo, publish: !args.no_publish?) From 688a9ade0dd47bc83568253cab349c3bad2abe63 Mon Sep 17 00:00:00 2001 From: Lionell Date: Mon, 29 Jun 2020 16:12:05 +0800 Subject: [PATCH 60/98] change .nil? to .blank? --- Library/Homebrew/dev-cmd/audit.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 095d0bcef..c6469d1f9 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -530,7 +530,7 @@ module Homebrew def audit_github_repository user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula - return if user.nil? + return if user.blank? warning = SharedAudits.github(user, repo) return if warning.nil? @@ -540,7 +540,7 @@ module Homebrew def audit_gitlab_repository user, repo = get_repo_data(%r{https?://gitlab\.com/([^/]+)/([^/]+)/?.*}) if @new_formula - return if user.nil? + return if user.blank? warning = SharedAudits.gitlab(user, repo) return if warning.nil? @@ -550,7 +550,7 @@ module Homebrew def audit_bitbucket_repository user, repo = get_repo_data(%r{https?://bitbucket\.org/([^/]+)/([^/]+)/?.*}) if @new_formula - return if user.nil? + return if user.blank? warning = SharedAudits.bitbucket(user, repo) return if warning.nil? From da007134c4f6ee37643752c662165d8da475c067 Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Mon, 29 Jun 2020 16:20:07 +0800 Subject: [PATCH 61/98] Apply suggestions from code review Code review changes Co-authored-by: Mike McQuaid --- Library/Homebrew/dev-cmd/update-license-data.rb | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index dde7ed29d..f7579cafe 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -18,11 +18,11 @@ module Homebrew usage_banner <<~EOS `update_license_data` - Update SPDX license data in the Homebrew repository. + Update SPDX license data in the Homebrew repository. EOS switch "--fail-if-changed", - description: "Return a failing status code if current license data's version is different from"\ - "the upstream. This can be used to notify CI when the SPDX license data is out of date." + description: "Return a failing status code if current license data's version is different from " \ + "the upstream. This can be used to notify CI when the SPDX license data is out of date." max_named 0 end @@ -30,15 +30,12 @@ module Homebrew def update_license_data update_license_data_args.parse - puts "Fetching newest version of SPDX License data..." - resp = Net::HTTP.get_response(URI.parse(SPDX_DATA_URL)) - - File.open(SPDX_FOLDER_PATH/FILE_NAME, "wb") do |file| - file.write(resp.body) - end + ohai "Updating SPDX license data..." + spdx_data = curl(SPDX_DATA_URL) + SPDX_PATH.write(spdx_data) return unless args.fail_if_changed? - system("git diff --stat --exit-code #{SPDX_FOLDER_PATH/FILE_NAME}") + system("git diff --stat --exit-code #{SPDX_PATH}") end end From 9cab9b7f39cb2c9d306c0dfcf33d7e1aa50c2ce3 Mon Sep 17 00:00:00 2001 From: Jonathan Chang Date: Mon, 29 Jun 2020 18:55:47 +1000 Subject: [PATCH 62/98] pr-pull: handle empty string cases Co-authored-by: Mike McQuaid --- Library/Homebrew/utils/github.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index eae33a8ea..217332c73 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -424,13 +424,13 @@ module GitHub next if commit.present? && commit != r["commit"]["oid"] next unless %w[MEMBER OWNER].include? r["authorAssociation"] - email = if r["author"]["email"].empty? + email = if r["author"]["email"].blank? "#{r["author"]["databaseId"]}+#{r["author"]["login"]}@users.noreply.github.com" else r["author"]["email"] end - name = r["author"]["name"] || r["author"]["login"] + name = r["author"]["name"].presence || r["author"]["login"] { "email" => email, From 7d4fadc2bbd50f7ea5e2eeef8f846b6f32fc6cf1 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 01:06:59 +0800 Subject: [PATCH 63/98] Update man pages --- docs/Manpage.md | 4 ++-- manpages/brew.1 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Manpage.md b/docs/Manpage.md index e75a8540b..60b165e94 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1030,10 +1030,10 @@ directory. ### `update_license_data` *`cmd`* - Update SPDX license data in the Homebrew repository. + Update SPDX license data in the Homebrew repository. * `--fail-if-changed`: - Return a failing status code if current license data's version is different fromthe upstream. This can be used to notify CI when the SPDX license data is out of date. + Return a failing status code if current license data's version is different from the upstream. This can be used to notify CI when the SPDX license data is out of date. ### `update-test` [*`options`*] diff --git a/manpages/brew.1 b/manpages/brew.1 index b0c5112e7..4ce59d62e 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -1336,7 +1336,7 @@ Update SPDX license data in the Homebrew repository\. . .TP \fB\-\-fail\-if\-changed\fR -Return a failing status code if current license data\'s version is different fromthe upstream\. This can be used to notify CI when the SPDX license data is out of date\. +Return a failing status code if current license data\'s version is different from the upstream\. This can be used to notify CI when the SPDX license data is out of date\. . .SS "\fBupdate\-test\fR [\fIoptions\fR]" Run a test of \fBbrew update\fR with a new repository clone\. If no options are passed, use \fBorigin/master\fR as the start commit\. From 93d46c6d6c69d5279404bce211cb2f48120076f9 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 01:08:09 +0800 Subject: [PATCH 64/98] Pathname::write: allow optional override --- Library/Homebrew/extend/pathname.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index 33a937b5d..e97302084 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -150,8 +150,8 @@ class Pathname alias old_write write # We assume this pathname object is a file, obviously - def write(content, *open_args) - raise "Will not overwrite #{self}" if exist? + def write(content, overwrite = false, *open_args) + raise "Will not overwrite #{self}" if exist? && !overwrite dirname.mkpath open("w", *open_args) { |f| f.write(content) } From 074f66f91287fa40a4df8921f4f8a9b0d68ca776 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 01:08:29 +0800 Subject: [PATCH 65/98] write .stdout instead of SystemCommand::Result --- Library/Homebrew/dev-cmd/update-license-data.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index f7579cafe..9e35cf33b 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -9,8 +9,7 @@ require "open-uri" module Homebrew module_function - SPDX_FOLDER_PATH = (HOMEBREW_LIBRARY_PATH/"data").freeze - FILE_NAME = "spdx.json" + SPDX_PATH = (HOMEBREW_LIBRARY_PATH/"data/spdx.json").freeze SPDX_DATA_URL = "https://raw.githubusercontent.com/spdx/license-list-data/HEAD/json/licenses.json" def update_license_data_args @@ -31,9 +30,8 @@ module Homebrew def update_license_data update_license_data_args.parse ohai "Updating SPDX license data..." - spdx_data = curl(SPDX_DATA_URL) - SPDX_PATH.write(spdx_data) - + spdx_download_result = curl(SPDX_DATA_URL) + SPDX_PATH.write(spdx_download_result.stdout, true) return unless args.fail_if_changed? system("git diff --stat --exit-code #{SPDX_PATH}") From 02bc870e915f88145761b11d2065d8f2964c50ba Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 01:13:02 +0800 Subject: [PATCH 66/98] curl: modified curl to allow optional print_stdout --- Library/Homebrew/utils/curl.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/utils/curl.rb b/Library/Homebrew/utils/curl.rb index 7503e1682..09948e6a4 100644 --- a/Library/Homebrew/utils/curl.rb +++ b/Library/Homebrew/utils/curl.rb @@ -44,12 +44,12 @@ def curl_args(*extra_args, show_output: false, user_agent: :default) args + extra_args end -def curl(*args, secrets: [], **options) +def curl(*args, print_stdout: true, secrets: [], **options) # SSL_CERT_FILE can be incorrectly set by users or portable-ruby and screw # with SSL downloads so unset it here. system_command! curl_executable, args: curl_args(*args, **options), - print_stdout: true, + print_stdout: print_stdout, env: { "SSL_CERT_FILE" => nil }, secrets: secrets end From 5b3ac1fcb2d4fdfecaa37184fb1c76f10b2eabe5 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 01:14:05 +0800 Subject: [PATCH 67/98] update-license-data: modify arguments when calling methods --- Library/Homebrew/dev-cmd/update-license-data.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index 9e35cf33b..713694619 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -30,8 +30,8 @@ module Homebrew def update_license_data update_license_data_args.parse ohai "Updating SPDX license data..." - spdx_download_result = curl(SPDX_DATA_URL) - SPDX_PATH.write(spdx_download_result.stdout, true) + spdx_download_result = curl(SPDX_DATA_URL, print_stdout: false) + SPDX_PATH.write(spdx_download_result.stdout, overwrite: true) return unless args.fail_if_changed? system("git diff --stat --exit-code #{SPDX_PATH}") From 0ea6245094673beb6022c3f1482a461a3b59bb30 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 01:08:09 +0800 Subject: [PATCH 68/98] Revert "Pathname::write: allow optional override" This reverts commit 93d46c6d6c69d5279404bce211cb2f48120076f9. --- Library/Homebrew/extend/pathname.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index e97302084..33a937b5d 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -150,8 +150,8 @@ class Pathname alias old_write write # We assume this pathname object is a file, obviously - def write(content, overwrite = false, *open_args) - raise "Will not overwrite #{self}" if exist? && !overwrite + def write(content, *open_args) + raise "Will not overwrite #{self}" if exist? dirname.mkpath open("w", *open_args) { |f| f.write(content) } From 4dcbe8790fa5ab63d9a45222134793bc5b3c22f2 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 01:29:45 +0800 Subject: [PATCH 69/98] update-license-data: use of unlink to remove existing file --- Library/Homebrew/dev-cmd/update-license-data.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index 713694619..76c139705 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -31,7 +31,8 @@ module Homebrew update_license_data_args.parse ohai "Updating SPDX license data..." spdx_download_result = curl(SPDX_DATA_URL, print_stdout: false) - SPDX_PATH.write(spdx_download_result.stdout, overwrite: true) + SPDX_PATH.unlink if SPDX_PATH.exist? + SPDX_PATH.write(spdx_download_result.stdout) return unless args.fail_if_changed? system("git diff --stat --exit-code #{SPDX_PATH}") From da2a426ec83bbe637040b9981bff68852ece8dc0 Mon Sep 17 00:00:00 2001 From: Lionell Date: Tue, 30 Jun 2020 15:18:10 +0800 Subject: [PATCH 70/98] update-license-data: use curl_download instead of curl --- Library/Homebrew/dev-cmd/update-license-data.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb index 76c139705..22e73db9a 100644 --- a/Library/Homebrew/dev-cmd/update-license-data.rb +++ b/Library/Homebrew/dev-cmd/update-license-data.rb @@ -30,9 +30,8 @@ module Homebrew def update_license_data update_license_data_args.parse ohai "Updating SPDX license data..." - spdx_download_result = curl(SPDX_DATA_URL, print_stdout: false) - SPDX_PATH.unlink if SPDX_PATH.exist? - SPDX_PATH.write(spdx_download_result.stdout) + curl_download(SPDX_DATA_URL, to: SPDX_PATH) + return unless args.fail_if_changed? system("git diff --stat --exit-code #{SPDX_PATH}") From c50f7b8951343d41e5fc8c0f6c4422566f43e40d Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 01:13:02 +0800 Subject: [PATCH 71/98] Revert "curl: modified curl to allow optional print_stdout" This reverts commit 02bc870e915f88145761b11d2065d8f2964c50ba. --- Library/Homebrew/utils/curl.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/utils/curl.rb b/Library/Homebrew/utils/curl.rb index 09948e6a4..7503e1682 100644 --- a/Library/Homebrew/utils/curl.rb +++ b/Library/Homebrew/utils/curl.rb @@ -44,12 +44,12 @@ def curl_args(*extra_args, show_output: false, user_agent: :default) args + extra_args end -def curl(*args, print_stdout: true, secrets: [], **options) +def curl(*args, secrets: [], **options) # SSL_CERT_FILE can be incorrectly set by users or portable-ruby and screw # with SSL downloads so unset it here. system_command! curl_executable, args: curl_args(*args, **options), - print_stdout: print_stdout, + print_stdout: true, env: { "SSL_CERT_FILE" => nil }, secrets: secrets end From ff95f085912b1ba60931286788acfadf8b7aa0b7 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 22:08:36 +0800 Subject: [PATCH 72/98] audit test: modified code for reading json file --- Library/Homebrew/test/dev-cmd/audit_spec.rb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 54ead437d..0cce4cbf9 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -81,12 +81,9 @@ module Homebrew describe "#audit_license" do let(:spdx_data) { - full_path = File.join(File.dirname(__FILE__), "../../data/spdx.json") - File.open(full_path, "r") do |f| - JSON.parse(f.read) - end + JSON.parse Pathname(File.join(File.dirname(__FILE__), "../../data/spdx.json")).read } - + let(:custom_spdx_id) { "zzz" } let(:standard_mismatch_spdx_id) { "0BSD" } From 5b3530b23de9beff1eb8bf68ab77832b9a219aaa Mon Sep 17 00:00:00 2001 From: Lionell Loh Jian An Date: Tue, 30 Jun 2020 22:11:36 +0800 Subject: [PATCH 73/98] Apply suggestions from code review Code review changes Co-authored-by: Mike McQuaid --- Library/Homebrew/test/dev-cmd/audit_spec.rb | 1 - Library/Homebrew/utils/github.rb | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 54ead437d..64f87cdac 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -111,7 +111,6 @@ module Homebrew RUBY fa.audit_license - p fa.problems expect(fa.problems.first).to match "No license specified for package." end diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 2a6a67e91..6c963fe66 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -477,8 +477,8 @@ module GitHub end def get_repo_license(user, repo) - res = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") - return unless res.key?("license") + response = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") + return unless response.key?("license") res["license"]["spdx_id"] rescue GitHub::HTTPNotFoundError From 1422542a07a6f47f87be7b2a0826f4237f75d737 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 23:18:04 +0800 Subject: [PATCH 74/98] components_order and test --- Library/Homebrew/rubocops/components_order.rb | 1 + .../Homebrew/test/rubocops/components_order_spec.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Library/Homebrew/rubocops/components_order.rb b/Library/Homebrew/rubocops/components_order.rb index 45153d7c9..f4fd15f7d 100644 --- a/Library/Homebrew/rubocops/components_order.rb +++ b/Library/Homebrew/rubocops/components_order.rb @@ -24,6 +24,7 @@ module RuboCop [{ name: :mirror, type: :method_call }], [{ name: :version, type: :method_call }], [{ name: :sha256, type: :method_call }], + [{ name: :license, type: :method_call }], [{ name: :revision, type: :method_call }], [{ name: :version_scheme, type: :method_call }], [{ name: :head, type: :method_call }], diff --git a/Library/Homebrew/test/rubocops/components_order_spec.rb b/Library/Homebrew/test/rubocops/components_order_spec.rb index 31f6cd593..2f70f5ce2 100644 --- a/Library/Homebrew/test/rubocops/components_order_spec.rb +++ b/Library/Homebrew/test/rubocops/components_order_spec.rb @@ -19,6 +19,19 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do RUBY end + it "When license precedes sha256" do + expect_offense(<<~RUBY) + class Foo < Formula + homepage "https://brew.sh" + url "https://brew.sh/foo-1.0.tgz" + license "0BSD" + sha256 "samplesha256" + ^^^^^^^^^^^^^^^^^^^^^ `sha256` (line 5) should be put before `license` (line 4) + end + RUBY + end + + it "When `bottle` precedes `livecheck`" do expect_offense(<<~RUBY) class Foo < Formula From 57e7e7d60e69463c23865f3db499da2f9714c227 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 23:23:19 +0800 Subject: [PATCH 75/98] small fix: res -> response --- Library/Homebrew/utils/github.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 74afca74b..296059cca 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -478,7 +478,7 @@ module GitHub response = GitHub.open_api("#{GitHub::API_URL}/repos/#{user}/#{repo}/license") return unless response.key?("license") - res["license"]["spdx_id"] + response["license"]["spdx_id"] rescue GitHub::HTTPNotFoundError nil end From 7358dd7bba062992fd0a1dc5d33f809580ebc537 Mon Sep 17 00:00:00 2001 From: lionellloh Date: Tue, 30 Jun 2020 23:25:51 +0800 Subject: [PATCH 76/98] style fixes --- Library/Homebrew/rubocops/components_order.rb | 4 ++-- Library/Homebrew/test/dev-cmd/audit_spec.rb | 2 +- Library/Homebrew/test/rubocops/components_order_spec.rb | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/rubocops/components_order.rb b/Library/Homebrew/rubocops/components_order.rb index f4fd15f7d..c688368f2 100644 --- a/Library/Homebrew/rubocops/components_order.rb +++ b/Library/Homebrew/rubocops/components_order.rb @@ -24,8 +24,8 @@ module RuboCop [{ name: :mirror, type: :method_call }], [{ name: :version, type: :method_call }], [{ name: :sha256, type: :method_call }], - [{ name: :license, type: :method_call }], - [{ name: :revision, type: :method_call }], + [{ name: :license, type: :method_call }], + [{ name: :revision, type: :method_call }], [{ name: :version_scheme, type: :method_call }], [{ name: :head, type: :method_call }], [{ name: :stable, type: :block_call }], diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb index 76225bce5..c1418223c 100644 --- a/Library/Homebrew/test/dev-cmd/audit_spec.rb +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -83,7 +83,7 @@ module Homebrew let(:spdx_data) { JSON.parse Pathname(File.join(File.dirname(__FILE__), "../../data/spdx.json")).read } - + let(:custom_spdx_id) { "zzz" } let(:standard_mismatch_spdx_id) { "0BSD" } diff --git a/Library/Homebrew/test/rubocops/components_order_spec.rb b/Library/Homebrew/test/rubocops/components_order_spec.rb index 2f70f5ce2..0afde2310 100644 --- a/Library/Homebrew/test/rubocops/components_order_spec.rb +++ b/Library/Homebrew/test/rubocops/components_order_spec.rb @@ -31,7 +31,6 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do RUBY end - it "When `bottle` precedes `livecheck`" do expect_offense(<<~RUBY) class Foo < Formula From a721d7bc8f3012deff33ec1fb1e59e5574b52540 Mon Sep 17 00:00:00 2001 From: Sean Molenaar Date: Tue, 30 Jun 2020 16:41:20 +0200 Subject: [PATCH 77/98] Remove outdated suggestions from Formula#test doc --- Library/Homebrew/formula.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 1e319b53e..5ed047c98 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -2648,9 +2648,13 @@ class Formula # # The block will create, run in and delete a temporary directory. # - # We are fine if the executable does not error out, so we know linking - # and building the software was OK. - #
system bin/"foobar", "--version"
+ # We want tests that don't require any user input + # and test the basic functionality of the application. + # For example foo build-foo input.foo is a good test + # and foo --version and foo --help are bad tests. + # However, a bad test is better than no test at all. + # + # See: https://docs.brew.sh/Formula-Cookbook#add-a-test-to-the-formula # #
(testpath/"test.file").write <<~EOS
     #   writing some test file, if you need to

From 7d53104c4680dc24a0f1398e79ce296052ea85e1 Mon Sep 17 00:00:00 2001
From: Mike McQuaid 
Date: Wed, 1 Jul 2020 11:55:25 +0100
Subject: [PATCH 78/98] cmd/search_spec: split Linux/macOS tests.

---
 Library/Homebrew/test/cmd/search_spec.rb | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/Library/Homebrew/test/cmd/search_spec.rb b/Library/Homebrew/test/cmd/search_spec.rb
index 40932a5c4..43b1cf9a3 100644
--- a/Library/Homebrew/test/cmd/search_spec.rb
+++ b/Library/Homebrew/test/cmd/search_spec.rb
@@ -8,7 +8,7 @@ describe "Homebrew.search_args" do
 end
 
 describe "brew search", :integration_test do
-  it "falls back to a GitHub tap search when no formula is found", :needs_network do
+  it "falls back to a GitHub tap search when no formula is found", :needs_macos, :needs_network do
     setup_test_formula "testball"
     setup_remote_tap "homebrew/cask"
 
@@ -16,4 +16,13 @@ describe "brew search", :integration_test do
       .to output(/firefox/).to_stdout
       .and be_a_success
   end
+
+  # doesn't actually need Linux but only want one integration test per-OS.
+  it "finds formula in search", :need_linux do
+    setup_test_formula "testball"
+
+    expect { brew "search", "testball" }
+      .to output(/testball/).to_stdout
+      .and be_a_success
+  end
 end

From 0166211ffdbea6c333d73f4fc71bb1df29373976 Mon Sep 17 00:00:00 2001
From: Mike McQuaid 
Date: Wed, 1 Jul 2020 11:55:42 +0100
Subject: [PATCH 79/98] integration_test: don't error on missing bin.

---
 .../test/support/helper/spec/shared_context/integration_test.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb b/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb
index cbc933817..7ecb936ec 100644
--- a/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb
+++ b/Library/Homebrew/test/support/helper/spec/shared_context/integration_test.rb
@@ -46,7 +46,7 @@ RSpec.shared_context "integration test" do
 
     example.run
   ensure
-    FileUtils.rm_r HOMEBREW_PREFIX/"bin"
+    FileUtils.rm_rf HOMEBREW_PREFIX/"bin"
   end
 
   # Generate unique ID to be able to

From d16e699ed7a2d6f6cbd53b2a75c2dd1b15c6bfde Mon Sep 17 00:00:00 2001
From: Jonathan Chang 
Date: Wed, 1 Jul 2020 22:25:53 +1000
Subject: [PATCH 80/98] github: need read-only email scope to see emails

---
 Library/Homebrew/utils/github.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb
index dd89ac4cc..cc7fa75cd 100644
--- a/Library/Homebrew/utils/github.rb
+++ b/Library/Homebrew/utils/github.rb
@@ -413,7 +413,7 @@ module GitHub
         }
       EOS
     }
-    result = open_api(url, data: data, request_method: "POST")
+    result = open_api(url, scopes: ["user:email"], data: data, request_method: "POST")
     raise Error, result["errors"] if result["errors"].present?
 
     reviews = result["data"]["repository"]["pullRequest"]["reviews"]["nodes"]

From 21c903c133bffca1204766d108d808f34358bb78 Mon Sep 17 00:00:00 2001
From: Jonathan Chang 
Date: Wed, 1 Jul 2020 23:59:07 +1000
Subject: [PATCH 81/98] pr-pull, pr-upload: use safe_system to call brew

---
 Library/Homebrew/dev-cmd/pr-pull.rb   | 2 +-
 Library/Homebrew/dev-cmd/pr-upload.rb | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Library/Homebrew/dev-cmd/pr-pull.rb b/Library/Homebrew/dev-cmd/pr-pull.rb
index 24d7e4e0f..db24c2c1f 100644
--- a/Library/Homebrew/dev-cmd/pr-pull.rb
+++ b/Library/Homebrew/dev-cmd/pr-pull.rb
@@ -260,7 +260,7 @@ module Homebrew
           upload_args << "--dry-run" if args.dry_run?
           upload_args << "--root_url=#{args.root_url}" if args.root_url
           upload_args << "--bintray-org=#{bintray_org}"
-          system HOMEBREW_BREW_FILE, *upload_args
+          safe_system HOMEBREW_BREW_FILE, *upload_args
         end
       end
     end
diff --git a/Library/Homebrew/dev-cmd/pr-upload.rb b/Library/Homebrew/dev-cmd/pr-upload.rb
index f591bf77d..276f6071b 100644
--- a/Library/Homebrew/dev-cmd/pr-upload.rb
+++ b/Library/Homebrew/dev-cmd/pr-upload.rb
@@ -42,7 +42,7 @@ module Homebrew
     if args.dry_run?
       puts "brew #{bottle_args.join " "}"
     else
-      system HOMEBREW_BREW_FILE, *bottle_args
+      safe_system HOMEBREW_BREW_FILE, *bottle_args
     end
 
     if args.dry_run?

From bd59b66c25b03049714155961d9f147ea978616b Mon Sep 17 00:00:00 2001
From: Jonathan Chang 
Date: Thu, 2 Jul 2020 00:11:12 +1000
Subject: [PATCH 82/98] bintray: fail on upload and publish curl problems

---
 Library/Homebrew/bintray.rb | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Library/Homebrew/bintray.rb b/Library/Homebrew/bintray.rb
index 09b7a60e7..1800316c4 100644
--- a/Library/Homebrew/bintray.rb
+++ b/Library/Homebrew/bintray.rb
@@ -41,7 +41,7 @@ class Bintray
 
   def upload(local_file, repo:, package:, version:, remote_file:, sha256: nil)
     url = "#{API_URL}/content/#{@bintray_org}/#{repo}/#{package}/#{version}/#{remote_file}"
-    args = ["--upload-file", local_file]
+    args = ["--fail", "--upload-file", local_file]
     args += ["--header", "X-Checksum-Sha2: #{sha256}"] unless sha256.blank?
     result = open_api url, *args
     json = JSON.parse(result.stdout)
@@ -52,7 +52,7 @@ class Bintray
 
   def publish(repo:, package:, version:, file_count:)
     url = "#{API_URL}/content/#{@bintray_org}/#{repo}/#{package}/#{version}/publish"
-    result = open_api url, "--request", "POST"
+    result = open_api url, "--request", "POST", "--fail"
     json = JSON.parse(result.stdout)
     if file_count.present? && json["files"] != file_count
       raise "Bottle publish failed: expected #{file_count} bottles, but published #{json["files"]} instead."

From 204e56d01ec309be343f8d1185fb3ade77496ec8 Mon Sep 17 00:00:00 2001
From: Jonathan Chang 
Date: Thu, 2 Jul 2020 00:11:55 +1000
Subject: [PATCH 83/98] pr-pull, pr-upload: add --warn-on-upload-failure

---
 Library/Homebrew/bintray.rb           | 24 ++++++++++++++++++------
 Library/Homebrew/dev-cmd/pr-pull.rb   |  4 ++++
 Library/Homebrew/dev-cmd/pr-upload.rb |  7 ++++++-
 docs/Manpage.md                       |  4 ++++
 manpages/brew-cask.1                  |  2 +-
 manpages/brew.1                       | 10 +++++++++-
 6 files changed, 42 insertions(+), 9 deletions(-)

diff --git a/Library/Homebrew/bintray.rb b/Library/Homebrew/bintray.rb
index 1800316c4..cb2966ca0 100644
--- a/Library/Homebrew/bintray.rb
+++ b/Library/Homebrew/bintray.rb
@@ -50,12 +50,15 @@ class Bintray
     result
   end
 
-  def publish(repo:, package:, version:, file_count:)
+  def publish(repo:, package:, version:, file_count:, warn_on_error: false)
     url = "#{API_URL}/content/#{@bintray_org}/#{repo}/#{package}/#{version}/publish"
     result = open_api url, "--request", "POST", "--fail"
     json = JSON.parse(result.stdout)
     if file_count.present? && json["files"] != file_count
-      raise "Bottle publish failed: expected #{file_count} bottles, but published #{json["files"]} instead."
+      message = "Bottle publish failed: expected #{file_count} bottles, but published #{json["files"]} instead."
+      raise message unless warn_on_error
+
+      opoo message
     end
 
     odebug "Published #{json["files"]} bottles"
@@ -143,7 +146,7 @@ class Bintray
     end
   end
 
-  def upload_bottle_json(json_files, publish_package: false)
+  def upload_bottle_json(json_files, publish_package: false, warn_on_error: false)
     bottles_hash = json_files.reduce({}) do |hash, json_file|
       hash.deep_merge(JSON.parse(IO.read(json_file)))
     end
@@ -161,14 +164,19 @@ class Bintray
 
         odebug "Checking remote file #{@bintray_org}/#{bintray_repo}/#{filename}"
         if file_published? repo: bintray_repo, remote_file: filename
-          raise Error, <<~EOS
-            #{filename} is already published.
+          already_published = "#{filename} is already published."
+          failed_message = <<~EOS
+            #{already_published}
             Please remove it manually from:
               https://bintray.com/#{@bintray_org}/#{bintray_repo}/#{bintray_package}/view#files
             Or run:
               curl -X DELETE -u $HOMEBREW_BINTRAY_USER:$HOMEBREW_BINTRAY_KEY \\
               https://api.bintray.com/content/#{@bintray_org}/#{bintray_repo}/#{filename}
           EOS
+          raise Error, failed_message unless warn_on_error
+
+          opoo already_published
+          next
         end
 
         if !formula_packaged[formula_name] && !package_exists?(repo: bintray_repo, package: bintray_package)
@@ -189,7 +197,11 @@ class Bintray
 
       bottle_count = bottle_hash["bottle"]["tags"].length
       odebug "Publishing #{@bintray_org}/#{bintray_repo}/#{bintray_package}/#{version}"
-      publish repo: bintray_repo, package: bintray_package, version: version, file_count: bottle_count
+      publish(repo:          bintray_repo,
+              package:       bintray_package,
+              version:       version,
+              file_count:    bottle_count,
+              warn_on_error: warn_on_error)
     end
   end
 end
diff --git a/Library/Homebrew/dev-cmd/pr-pull.rb b/Library/Homebrew/dev-cmd/pr-pull.rb
index db24c2c1f..8d7c783e3 100644
--- a/Library/Homebrew/dev-cmd/pr-pull.rb
+++ b/Library/Homebrew/dev-cmd/pr-pull.rb
@@ -33,6 +33,9 @@ module Homebrew
       switch "--resolve",
              description: "When a patch fails to apply, leave in progress and allow user to resolve, "\
                           "instead of aborting."
+      switch "--warn-on-upload-failure",
+             description: "Warn instead of raising an error if the bottle upload fails. "\
+                          "Useful for repairing bottle uploads that previously failed."
       flag   "--workflow=",
              description: "Retrieve artifacts from the specified workflow (default: `tests.yml`)."
       flag   "--artifact=",
@@ -258,6 +261,7 @@ module Homebrew
           upload_args << "--verbose" if Homebrew.args.verbose?
           upload_args << "--no-publish" if args.no_publish?
           upload_args << "--dry-run" if args.dry_run?
+          upload_args << "--warn-on-upload-failure" if args.warn_on_upload_failure?
           upload_args << "--root_url=#{args.root_url}" if args.root_url
           upload_args << "--bintray-org=#{bintray_org}"
           safe_system HOMEBREW_BREW_FILE, *upload_args
diff --git a/Library/Homebrew/dev-cmd/pr-upload.rb b/Library/Homebrew/dev-cmd/pr-upload.rb
index 276f6071b..39dfd145b 100644
--- a/Library/Homebrew/dev-cmd/pr-upload.rb
+++ b/Library/Homebrew/dev-cmd/pr-upload.rb
@@ -17,6 +17,9 @@ module Homebrew
              description: "Apply the bottle commit and upload the bottles, but don't publish them."
       switch "-n", "--dry-run",
              description: "Print what would be done rather than doing it."
+      switch "--warn-on-upload-failure",
+             description: "Warn instead of raising an error if the bottle upload fails. "\
+                          "Useful for repairing bottle uploads that previously failed."
       flag   "--bintray-org=",
              description: "Upload to the specified Bintray organisation (default: `homebrew`)."
       flag   "--root-url=",
@@ -48,7 +51,9 @@ module Homebrew
     if args.dry_run?
       puts "Upload bottles described by these JSON files to Bintray:\n  #{Dir["*.json"].join("\n  ")}"
     else
-      bintray.upload_bottle_json Dir["*.json"], publish_package: !args.no_publish?
+      bintray.upload_bottle_json(Dir["*.json"],
+                                 publish_package: !args.no_publish?,
+                                 warn_on_error:   args.warn_on_upload_failure?)
     end
   end
 end
diff --git a/docs/Manpage.md b/docs/Manpage.md
index a95886ff5..2709a1783 100644
--- a/docs/Manpage.md
+++ b/docs/Manpage.md
@@ -903,6 +903,8 @@ repository.
   Do not warn if pulling to a branch besides master (useful for testing).
 * `--resolve`:
   When a patch fails to apply, leave in progress and allow user to resolve, instead of aborting.
+* `--warn-on-upload-failure`:
+  Warn instead of raising an error if the bottle upload fails. Useful for repairing bottle uploads that previously failed.
 * `--workflow`:
   Retrieve artifacts from the specified workflow (default: `tests.yml`).
 * `--artifact`:
@@ -924,6 +926,8 @@ Apply the bottle commit and publish bottles to Bintray.
   Apply the bottle commit and upload the bottles, but don't publish them.
 * `-n`, `--dry-run`:
   Print what would be done rather than doing it.
+* `--warn-on-upload-failure`:
+  Warn instead of raising an error if the bottle upload fails. Useful for repairing bottle uploads that previously failed.
 * `--bintray-org`:
   Upload to the specified Bintray organisation (default: `homebrew`).
 * `--root-url`:
diff --git a/manpages/brew-cask.1 b/manpages/brew-cask.1
index f250696a6..f00c80f3e 100644
--- a/manpages/brew-cask.1
+++ b/manpages/brew-cask.1
@@ -1,7 +1,7 @@
 .\" generated with Ronn/v0.7.3
 .\" http://github.com/rtomayko/ronn/tree/0.7.3
 .
-.TH "BREW\-CASK" "1" "June 2020" "Homebrew" "brew-cask"
+.TH "BREW\-CASK" "1" "July 2020" "Homebrew" "brew-cask"
 .
 .SH "NAME"
 \fBbrew\-cask\fR \- a friendly binary installer for macOS
diff --git a/manpages/brew.1 b/manpages/brew.1
index c65e7cf4e..a653c4df1 100644
--- a/manpages/brew.1
+++ b/manpages/brew.1
@@ -1,7 +1,7 @@
 .\" generated with Ronn/v0.7.3
 .\" http://github.com/rtomayko/ronn/tree/0.7.3
 .
-.TH "BREW" "1" "June 2020" "Homebrew" "brew"
+.TH "BREW" "1" "July 2020" "Homebrew" "brew"
 .
 .SH "NAME"
 \fBbrew\fR \- The Missing Package Manager for macOS
@@ -1176,6 +1176,10 @@ Do not warn if pulling to a branch besides master (useful for testing)\.
 When a patch fails to apply, leave in progress and allow user to resolve, instead of aborting\.
 .
 .TP
+\fB\-\-warn\-on\-upload\-failure\fR
+Warn instead of raising an error if the bottle upload fails\. Useful for repairing bottle uploads that previously failed\.
+.
+.TP
 \fB\-\-workflow\fR
 Retrieve artifacts from the specified workflow (default: \fBtests\.yml\fR)\.
 .
@@ -1211,6 +1215,10 @@ Apply the bottle commit and upload the bottles, but don\'t publish them\.
 Print what would be done rather than doing it\.
 .
 .TP
+\fB\-\-warn\-on\-upload\-failure\fR
+Warn instead of raising an error if the bottle upload fails\. Useful for repairing bottle uploads that previously failed\.
+.
+.TP
 \fB\-\-bintray\-org\fR
 Upload to the specified Bintray organisation (default: \fBhomebrew\fR)\.
 .

From 9297b18aa61f3794972a49c541f9a8ad4707c1c9 Mon Sep 17 00:00:00 2001
From: Bo Anderson 
Date: Wed, 1 Jul 2020 16:02:29 +0100
Subject: [PATCH 84/98] Add SDK availability diagnostic

---
 Library/Homebrew/extend/os/mac/diagnostic.rb | 29 ++++++++++++++++++++
 Library/Homebrew/os/mac.rb                   | 12 ++++----
 Library/Homebrew/os/mac/sdk.rb               | 22 +++++----------
 Library/Homebrew/os/mac/xcode.rb             | 16 +++++++----
 4 files changed, 53 insertions(+), 26 deletions(-)

diff --git a/Library/Homebrew/extend/os/mac/diagnostic.rb b/Library/Homebrew/extend/os/mac/diagnostic.rb
index fe0bf0d5b..843196de9 100644
--- a/Library/Homebrew/extend/os/mac/diagnostic.rb
+++ b/Library/Homebrew/extend/os/mac/diagnostic.rb
@@ -12,6 +12,7 @@ module Homebrew
           check_xcode_minimum_version
           check_clt_minimum_version
           check_if_xcode_needs_clt_installed
+          check_if_supported_sdk_available
         ].freeze
       end
 
@@ -357,6 +358,34 @@ module Homebrew
           Untap them with `brew untap`.
         EOS
       end
+
+      def check_if_supported_sdk_available
+        return unless MacOS.sdk_root_needed?
+        return if MacOS.sdk
+
+        locator = MacOS.sdk_locator
+
+        source = if locator.source == :clt
+          "CLT"
+        else
+          "Xcode"
+        end
+
+        all_sdks = locator.all_sdks
+        sdks_found_msg = unless all_sdks.empty?
+          <<~EOS
+            Homebrew found the following SDKs in the #{source} install:
+              #{locator.all_sdks.map(&:version).join("\n  ")}
+          EOS
+        end
+
+        <<~EOS
+          Could not find an SDK that supports macOS #{MacOS.version}.
+          You may have have an outdated or incompatible #{source}.
+          #{sdks_found_msg}
+          Please update #{source} or uninstall it if no updates are available.
+        EOS
+      end
     end
   end
 end
diff --git a/Library/Homebrew/os/mac.rb b/Library/Homebrew/os/mac.rb
index 27749cf0c..fe658e924 100644
--- a/Library/Homebrew/os/mac.rb
+++ b/Library/Homebrew/os/mac.rb
@@ -97,14 +97,16 @@ module OS
     # If no specific SDK is requested, the SDK matching the OS version is returned,
     # if available. Otherwise, the latest SDK is returned.
 
-    def sdk(v = nil)
-      @locator ||= if CLT.installed? && CLT.provides_sdk?
-        CLTSDKLocator.new
+    def sdk_locator
+      if CLT.installed? && CLT.provides_sdk?
+        CLT.sdk_locator
       else
-        XcodeSDKLocator.new
+        Xcode.sdk_locator
       end
+    end
 
-      @locator.sdk_if_applicable(v)
+    def sdk(v = nil)
+      sdk_locator.sdk_if_applicable(v)
     end
 
     def sdk_for_formula(f, v = nil)
diff --git a/Library/Homebrew/os/mac/sdk.rb b/Library/Homebrew/os/mac/sdk.rb
index 156c41812..f6061c371 100644
--- a/Library/Homebrew/os/mac/sdk.rb
+++ b/Library/Homebrew/os/mac/sdk.rb
@@ -31,6 +31,10 @@ module OS
         SDK.new v, path, source
       end
 
+      def all_sdks
+        sdk_paths.map { |v, p| SDK.new v, p, source }
+      end
+
       def sdk_if_applicable(v = nil)
         sdk = begin
           if v.nil?
@@ -47,15 +51,11 @@ module OS
         sdk
       end
 
-      private
-
       def source
         nil
       end
 
-      def source_version
-        OS::Mac::Version::NULL
-      end
+      private
 
       def sdk_prefix
         ""
@@ -81,15 +81,11 @@ module OS
     end
 
     class XcodeSDKLocator < BaseSDKLocator
-      private
-
       def source
         :xcode
       end
 
-      def source_version
-        OS::Mac::Xcode.version
-      end
+      private
 
       def sdk_prefix
         @sdk_prefix ||= begin
@@ -105,15 +101,11 @@ module OS
     end
 
     class CLTSDKLocator < BaseSDKLocator
-      private
-
       def source
         :clt
       end
 
-      def source_version
-        OS::Mac::CLT.version
-      end
+      private
 
       # While CLT SDKs existed prior to Xcode 10, those packages also
       # installed a traditional Unix-style header layout and we prefer
diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb
index 1e852b412..6190e267f 100644
--- a/Library/Homebrew/os/mac/xcode.rb
+++ b/Library/Homebrew/os/mac/xcode.rb
@@ -107,10 +107,12 @@ module OS
         !prefix.nil?
       end
 
-      def sdk(v = nil)
-        @locator ||= XcodeSDKLocator.new
+      def sdk_locator
+        @sdk_locator ||= XcodeSDKLocator.new
+      end
 
-        @locator.sdk_if_applicable(v)
+      def sdk(v = nil)
+        sdk_locator.sdk_if_applicable(v)
       end
 
       def sdk_path(v = nil)
@@ -219,10 +221,12 @@ module OS
         version >= "8"
       end
 
-      def sdk(v = nil)
-        @locator ||= CLTSDKLocator.new
+      def sdk_locator
+        @sdk_locator ||= CLTSDKLocator.new
+      end
 
-        @locator.sdk_if_applicable(v)
+      def sdk(v = nil)
+        sdk_locator.sdk_if_applicable(v)
       end
 
       def sdk_path(v = nil)

From 433d3a327b60408c1eb1363168a3748deeec9045 Mon Sep 17 00:00:00 2001
From: Thierry Moisan 
Date: Wed, 1 Jul 2020 10:31:56 -0400
Subject: [PATCH 85/98] docs/Common-Issues-for-Core-Contributors: add steps to
 fix failed bottle publish

---
 docs/Common-Issues-for-Core-Contributors.md | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/docs/Common-Issues-for-Core-Contributors.md b/docs/Common-Issues-for-Core-Contributors.md
index a06052fab..bf88e8126 100644
--- a/docs/Common-Issues-for-Core-Contributors.md
+++ b/docs/Common-Issues-for-Core-Contributors.md
@@ -6,6 +6,13 @@ This is a page for maintainers to diagnose certain build errors.
 
 ## Issues
 
+### Bottle publishes failed but the commits are correct in the git history
+
+Follow these steps to fix this issue:
+* `git reset --hard ` in homebrew/core to reset to the commit before before all the commits created by `brew pr-pull`.
+* `brew pr-pull ` to upload the right bottles. Add the `--warn-on-upload-failure` flag if the bottles have been partially uploaded and you're certain that the bottle checksums will match the checksums already present in the `bottle do` block of the formula.
+* `git reset --hard origin/master` to return to the latest commit and discard the commits made by `brew pr-pull`.
+
 ### `ld: internal error: atom not found in symbolIndex(__ZN10SQInstance3GetERK11SQObjectPtrRS0_) for architecture x86_64`
 
 The exact atom may be different.

From e84b3614580bf25d2b9799f682eecf94cec437ac Mon Sep 17 00:00:00 2001
From: "dependabot-preview[bot]"
 <27856297+dependabot-preview[bot]@users.noreply.github.com>
Date: Wed, 1 Jul 2020 18:31:53 +0000
Subject: [PATCH 86/98] build(deps): bump diff-lcs from 1.4.3 to 1.4.4 in
 /Library/Homebrew

Bumps [diff-lcs](https://github.com/halostatue/diff-lcs) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/halostatue/diff-lcs/releases)
- [Changelog](https://github.com/halostatue/diff-lcs/blob/master/History.md)
- [Commits](https://github.com/halostatue/diff-lcs/compare/v1.4.3...v1.4.4)

Signed-off-by: dependabot-preview[bot] 
---
 Library/Homebrew/Gemfile.lock | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock
index 6867d78d9..c8f1632b0 100644
--- a/Library/Homebrew/Gemfile.lock
+++ b/Library/Homebrew/Gemfile.lock
@@ -17,7 +17,7 @@ GEM
       term-ansicolor (~> 1.3)
       thor (>= 0.19.4, < 2.0)
       tins (~> 1.6)
-    diff-lcs (1.4.3)
+    diff-lcs (1.4.4)
     docile (1.3.2)
     domain_name (0.5.20190701)
       unf (>= 0.0.5, < 1.0.0)

From 8ff1ca644da58a7fef4463646a13695102f840ff Mon Sep 17 00:00:00 2001
From: Rui Chen 
Date: Wed, 1 Jul 2020 16:48:45 -0400
Subject: [PATCH 87/98] disable license check for new formulae

return when license is blank

Co-authored-by: Bo Anderson 
---
 Library/Homebrew/dev-cmd/audit.rb           | 26 ++++++++++-----------
 Library/Homebrew/test/dev-cmd/audit_spec.rb | 12 ----------
 2 files changed, 12 insertions(+), 26 deletions(-)

diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb
index 8c2beedfc..ec7a3a6e3 100644
--- a/Library/Homebrew/dev-cmd/audit.rb
+++ b/Library/Homebrew/dev-cmd/audit.rb
@@ -333,23 +333,21 @@ module Homebrew
     ].freeze
 
     def audit_license
-      if formula.license.present?
-        if @spdx_data["licenses"].any? { |lic| lic["licenseId"] == formula.license }
-          return unless @online
+      return if formula.license.blank?
 
-          user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula
-          return if user.blank?
+      if @spdx_data["licenses"].any? { |lic| lic["licenseId"] == formula.license }
+        return unless @online
 
-          github_license = GitHub.get_repo_license(user, repo)
-          return if github_license && (github_license == formula.license)
+        user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula
+        return if user.blank?
 
-          problem "License mismatch - GitHub license is: #{github_license}, "\
-                  "but Formulae license states: #{formula.license}."
-        else
-          problem "#{formula.license} is not a standard SPDX license."
-        end
-      elsif @new_formula
-        problem "No license specified for package."
+        github_license = GitHub.get_repo_license(user, repo)
+        return if github_license && (github_license == formula.license)
+
+        problem "License mismatch - GitHub license is: #{github_license}, "\
+                "but Formulae license states: #{formula.license}."
+      else
+        problem "#{formula.license} is not a standard SPDX license."
       end
     end
 
diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb
index c1418223c..26978b506 100644
--- a/Library/Homebrew/test/dev-cmd/audit_spec.rb
+++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb
@@ -99,18 +99,6 @@ module Homebrew
         expect(fa.problems).to be_empty
       end
 
-      it "detects no license info" do
-        fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true
-          class Foo < Formula
-            url "https://brew.sh/foo-1.0.tgz"
-            license ""
-          end
-        RUBY
-
-        fa.audit_license
-        expect(fa.problems.first).to match "No license specified for package."
-      end
-
       it "detects if license is not a standard spdx-id" do
         fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true
           class Foo < Formula

From 0e3f22e1df8d32e2ac4f2bb07dfef8efc22f3cbf Mon Sep 17 00:00:00 2001
From: Bo Anderson 
Date: Wed, 1 Jul 2020 22:08:12 +0100
Subject: [PATCH 88/98] dev-cmd/bottle: fix positioning of bottle block in some
 cases

---
 Library/Homebrew/dev-cmd/bottle.rb | 34 +++++++++++++-----------------
 1 file changed, 15 insertions(+), 19 deletions(-)

diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb
index 20fc41ed2..b2f510583 100644
--- a/Library/Homebrew/dev-cmd/bottle.rb
+++ b/Library/Homebrew/dev-cmd/bottle.rb
@@ -531,25 +531,21 @@ module Homebrew
             odie "--keep-old was passed but there was no existing bottle block!" if args.keep_old?
             puts output
             update_or_add = "add"
-            if s.include? "stable do"
-              indent = s.slice(/^( +)stable do/, 1).length
-              string = s.sub!(/^ {#{indent}}stable do(.|\n)+?^ {#{indent}}end\n/m, '\0' + output + "\n")
-            else
-              pattern = /(
-                  (\ {2}\#[^\n]*\n)*                                             # comments
-                  \ {2}(                                                         # two spaces at the beginning
-                    (url|head)\ ['"][\S\ ]+['"]                                  # url or head with a string
-                    (
-                      ,[\S\ ]*$                                                  # url may have options
-                      (\n^\ {3}[\S\ ]+$)*                                        # options can be in multiple lines
-                    )?|
-                    (homepage|desc|sha1|sha256|version|mirror)\ ['"][\S\ ]+['"]| # specs with a string
-                    (revision|version_scheme)\ \d+                               # revision with a number
-                  )\n+                                                           # multiple empty lines
-                 )+
-               /mx
-              string = s.sub!(pattern, '\0' + output + "\n")
-            end
+            pattern = /(
+                (\ {2}\#[^\n]*\n)*                                                # comments
+                \ {2}(                                                            # two spaces at the beginning
+                  (url|head)\ ['"][\S\ ]+['"]                                     # url or head with a string
+                  (
+                    ,[\S\ ]*$                                                     # url may have options
+                    (\n^\ {3}[\S\ ]+$)*                                           # options can be in multiple lines
+                  )?|
+                  (homepage|desc|sha256|version|mirror|license)\ ['"][\S\ ]+['"]| # specs with a string
+                  (revision|version_scheme)\ \d+|                                 # revision with a number
+                  (stable|livecheck)\ do(\n+^\ {4}[\S\ ]+$)*\n+^\ {2}end          # components with blocks
+                )\n+                                                              # multiple empty lines
+               )+
+             /mx
+            string = s.sub!(pattern, '\0' + output + "\n")
             odie "Bottle block addition failed!" unless string
           end
         end

From 97f68e6a3a5fb13f34f87c364687f0145d8ff3d1 Mon Sep 17 00:00:00 2001
From: Mike McQuaid 
Date: Thu, 2 Jul 2020 09:04:58 +0100
Subject: [PATCH 89/98] Revert "disable license check for new formulae"

---
 Library/Homebrew/dev-cmd/audit.rb           | 26 +++++++++++----------
 Library/Homebrew/test/dev-cmd/audit_spec.rb | 12 ++++++++++
 2 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb
index ec7a3a6e3..8c2beedfc 100644
--- a/Library/Homebrew/dev-cmd/audit.rb
+++ b/Library/Homebrew/dev-cmd/audit.rb
@@ -333,21 +333,23 @@ module Homebrew
     ].freeze
 
     def audit_license
-      return if formula.license.blank?
+      if formula.license.present?
+        if @spdx_data["licenses"].any? { |lic| lic["licenseId"] == formula.license }
+          return unless @online
 
-      if @spdx_data["licenses"].any? { |lic| lic["licenseId"] == formula.license }
-        return unless @online
+          user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula
+          return if user.blank?
 
-        user, repo = get_repo_data(%r{https?://github\.com/([^/]+)/([^/]+)/?.*}) if @new_formula
-        return if user.blank?
+          github_license = GitHub.get_repo_license(user, repo)
+          return if github_license && (github_license == formula.license)
 
-        github_license = GitHub.get_repo_license(user, repo)
-        return if github_license && (github_license == formula.license)
-
-        problem "License mismatch - GitHub license is: #{github_license}, "\
-                "but Formulae license states: #{formula.license}."
-      else
-        problem "#{formula.license} is not a standard SPDX license."
+          problem "License mismatch - GitHub license is: #{github_license}, "\
+                  "but Formulae license states: #{formula.license}."
+        else
+          problem "#{formula.license} is not a standard SPDX license."
+        end
+      elsif @new_formula
+        problem "No license specified for package."
       end
     end
 
diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb
index 26978b506..c1418223c 100644
--- a/Library/Homebrew/test/dev-cmd/audit_spec.rb
+++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb
@@ -99,6 +99,18 @@ module Homebrew
         expect(fa.problems).to be_empty
       end
 
+      it "detects no license info" do
+        fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true
+          class Foo < Formula
+            url "https://brew.sh/foo-1.0.tgz"
+            license ""
+          end
+        RUBY
+
+        fa.audit_license
+        expect(fa.problems.first).to match "No license specified for package."
+      end
+
       it "detects if license is not a standard spdx-id" do
         fa = formula_auditor "foo", <<~RUBY, spdx_data: spdx_data, new_formula: true
           class Foo < Formula

From 170b38892a4e15cf2fadfd173814954a53c97fb4 Mon Sep 17 00:00:00 2001
From: Mike McQuaid 
Date: Thu, 2 Jul 2020 10:22:54 +0100
Subject: [PATCH 90/98] Use CodeCov for coverage reporting.

---
 .github/workflows/tests.yml          |  3 +--
 .gitignore                           |  7 ++-----
 Library/Homebrew/.simplecov          |  8 +++++---
 Library/Homebrew/Gemfile             |  2 +-
 Library/Homebrew/Gemfile.lock        | 28 ++++++++++------------------
 Library/Homebrew/test/spec_helper.rb | 19 ++++---------------
 6 files changed, 23 insertions(+), 44 deletions(-)

diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index f2d1663fd..67fc51c36 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -139,8 +139,7 @@ jobs:
         HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 
         # set variables for coverage reporting
-        HOMEBREW_CI_NAME: github-actions
-        HOMEBREW_COVERALLS_REPO_TOKEN: 3F6U6ZqctoNJwKyREremsqMgpU3qYgxFk
+        HOMEBREW_CODECOV_TOKEN: 3ea0364c-80ce-47a3-9fba-93a940d4b5d7
 
         # These cannot be queried at the macOS level on GitHub Actions.
         HOMEBREW_LANGUAGES: en-GB
diff --git a/.gitignore b/.gitignore
index 962dfd140..d666489d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -86,7 +86,7 @@
 **/vendor/bundle/ruby/*/gems/byebug-*/
 **/vendor/bundle/ruby/*/gems/coderay-*/
 **/vendor/bundle/ruby/*/gems/connection_pool-*/
-**/vendor/bundle/ruby/*/gems/coveralls-*/
+**/vendor/bundle/ruby/*/gems/codecov-*/
 **/vendor/bundle/ruby/*/gems/diff-lcs-*/
 **/vendor/bundle/ruby/*/gems/docile-*/
 **/vendor/bundle/ruby/*/gems/domain_name-*/
@@ -127,11 +127,8 @@
 **/vendor/bundle/ruby/*/gems/ruby-prof-*/
 **/vendor/bundle/ruby/*/gems/ruby-progressbar-*/
 **/vendor/bundle/ruby/*/gems/simplecov-*/
-**/vendor/bundle/ruby/*/gems/simplecov-cobertura-*/
 **/vendor/bundle/ruby/*/gems/simplecov-html-*/
-**/vendor/bundle/ruby/*/gems/term-ansicolor-*/
-**/vendor/bundle/ruby/*/gems/thor-*/
-**/vendor/bundle/ruby/*/gems/tins-*/
+**/vendor/bundle/ruby/*/gems/url-*/
 **/vendor/bundle/ruby/*/gems/unf_ext-*/
 **/vendor/bundle/ruby/*/gems/unf-*/
 **/vendor/bundle/ruby/*/gems/unicode-display_width-*/
diff --git a/Library/Homebrew/.simplecov b/Library/Homebrew/.simplecov
index 38c7d530e..2ed96ecf4 100755
--- a/Library/Homebrew/.simplecov
+++ b/Library/Homebrew/.simplecov
@@ -1,4 +1,5 @@
 #!/usr/bin/env ruby
+# frozen_string_literal: true
 
 require "English"
 
@@ -20,7 +21,8 @@ SimpleCov.start do
 
       # Just save result, but don't write formatted output.
       coverage_result = Coverage.result
-      SimpleCov.add_not_loaded_files(coverage_result)
+      # TODO: this method is private, find a better way.
+      SimpleCov.send(:add_not_loaded_files, coverage_result)
       simplecov_result = SimpleCov::Result.new(coverage_result)
       SimpleCov::ResultMerger.store_result(simplecov_result)
 
@@ -50,8 +52,8 @@ SimpleCov.start do
 
   require "rbconfig"
   host_os = RbConfig::CONFIG["host_os"]
-  add_filter %r{/os/mac} if host_os !~ /darwin/
-  add_filter %r{/os/linux} if host_os !~ /linux/
+  add_filter %r{/os/mac} unless /darwin/.match?(host_os)
+  add_filter %r{/os/linux} unless /linux/.match?(host_os)
 
   # Add groups and the proper project name to the output.
   project_name "Homebrew"
diff --git a/Library/Homebrew/Gemfile b/Library/Homebrew/Gemfile
index 657bf5bd5..e6a4fdb19 100644
--- a/Library/Homebrew/Gemfile
+++ b/Library/Homebrew/Gemfile
@@ -4,7 +4,7 @@ source "https://rubygems.org"
 
 # installed gems
 gem "byebug"
-gem "coveralls", "~> 0.8", require: false
+gem "codecov", require: false
 gem "parallel_tests"
 gem "ronn", require: false
 gem "rspec"
diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock
index c8f1632b0..e5aecfc14 100644
--- a/Library/Homebrew/Gemfile.lock
+++ b/Library/Homebrew/Gemfile.lock
@@ -9,14 +9,12 @@ GEM
       zeitwerk (~> 2.2, >= 2.2.2)
     ast (2.4.1)
     byebug (11.1.3)
+    codecov (0.1.17)
+      json
+      simplecov
+      url
     concurrent-ruby (1.1.6)
     connection_pool (2.2.3)
-    coveralls (0.8.23)
-      json (>= 1.8, < 3)
-      simplecov (~> 0.16.1)
-      term-ansicolor (~> 1.3)
-      thor (>= 0.19.4, < 2.0)
-      tins (~> 1.6)
     diff-lcs (1.4.4)
     docile (1.3.2)
     domain_name (0.5.20190701)
@@ -99,24 +97,18 @@ GEM
       rubocop (>= 0.68.1)
     ruby-macho (2.2.0)
     ruby-progressbar (1.10.1)
-    simplecov (0.16.1)
+    simplecov (0.18.5)
       docile (~> 1.1)
-      json (>= 1.8, < 3)
-      simplecov-html (~> 0.10.0)
-    simplecov-html (0.10.2)
-    sync (0.5.0)
-    term-ansicolor (1.7.1)
-      tins (~> 1.0)
-    thor (1.0.1)
+      simplecov-html (~> 0.11)
+    simplecov-html (0.12.2)
     thread_safe (0.3.6)
-    tins (1.25.0)
-      sync
     tzinfo (1.2.7)
       thread_safe (~> 0.1)
     unf (0.1.4)
       unf_ext
     unf_ext (0.0.7.7)
     unicode-display_width (1.7.0)
+    url (0.3.2)
     webrobots (0.1.2)
     zeitwerk (2.3.1)
 
@@ -126,8 +118,8 @@ PLATFORMS
 DEPENDENCIES
   activesupport
   byebug
+  codecov
   concurrent-ruby
-  coveralls (~> 0.8)
   mechanize
   parallel_tests
   plist
@@ -143,4 +135,4 @@ DEPENDENCIES
   simplecov
 
 BUNDLED WITH
-   1.17.2
+   1.17.3
diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb
index 7ac1062bd..355c22325 100644
--- a/Library/Homebrew/test/spec_helper.rb
+++ b/Library/Homebrew/test/spec_helper.rb
@@ -4,12 +4,10 @@ if ENV["HOMEBREW_TESTS_COVERAGE"]
   require "simplecov"
 
   formatters = [SimpleCov::Formatter::HTMLFormatter]
-  if ENV["HOMEBREW_COVERALLS_REPO_TOKEN"] && RUBY_PLATFORM[/darwin/]
-    require "coveralls"
+  if ENV["HOMEBREW_CODECOV_TOKEN"] && RUBY_PLATFORM[/darwin/]
+    require "codecov"
 
-    Coveralls::Output.no_color if !ENV["HOMEBREW_COLOR"] && (ENV["HOMEBREW_NO_COLOR"] || !$stdout.tty?)
-
-    formatters << Coveralls::SimpleCov::Formatter
+    formatters << SimpleCov::Formatter::Codecov
 
     if ENV["TEST_ENV_NUMBER"]
       SimpleCov.at_exit do
@@ -18,16 +16,7 @@ if ENV["HOMEBREW_TESTS_COVERAGE"]
       end
     end
 
-    ENV["CI_NAME"] = ENV["HOMEBREW_CI_NAME"]
-    ENV["COVERALLS_REPO_TOKEN"] = ENV["HOMEBREW_COVERALLS_REPO_TOKEN"]
-
-    ENV["CI_BUILD_NUMBER"] = ENV["HOMEBREW_CI_BUILD_NUMBER"]
-    ENV["CI_BRANCH"] = ENV["HOMEBREW_CI_BRANCH"]
-    %r{refs/pull/(?\d+)/merge} =~ ENV["HOMEBREW_CI_BUILD_NUMBER"]
-    ENV["CI_PULL_REQUEST"] = pr
-    ENV["CI_BUILD_URL"] = "https://github.com/#{ENV["HOMEBREW_GITHUB_REPOSITORY"]}/pull/#{pr}/checks"
-
-    ENV["CI_JOB_ID"] = ENV["TEST_ENV_NUMBER"] || "1"
+    ENV["CODECOV_TOKEN"] = ENV["HOMEBREW_CODECOV_TOKEN"]
   end
 
   SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new(formatters)

From 89605d2c6f5a52e533d09ce5c618505bd005cb05 Mon Sep 17 00:00:00 2001
From: vidusheeamoli 
Date: Thu, 2 Jul 2020 16:05:54 +0530
Subject: [PATCH 91/98] sorbet/files.yaml: set utils/tty.rb to true

---
 Library/Homebrew/sorbet/files.yaml        |  2 +-
 Library/Homebrew/sorbet/rbi/utils/tty.rbi | 36 +++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 Library/Homebrew/sorbet/rbi/utils/tty.rbi

diff --git a/Library/Homebrew/sorbet/files.yaml b/Library/Homebrew/sorbet/files.yaml
index 66a79e6c3..50900c400 100644
--- a/Library/Homebrew/sorbet/files.yaml
+++ b/Library/Homebrew/sorbet/files.yaml
@@ -453,7 +453,6 @@ false:
   - ./utils/github.rb
   - ./utils/notability.rb
   - ./utils/popen.rb
-  - ./utils/tty.rb
   - ./utils/user.rb
 
 false:
@@ -889,6 +888,7 @@ true:
   - ./tap_constants.rb
   - ./test/support/helper/fixtures.rb
   - ./test/support/lib/config.rb
+  - ./utils/tty.rb
   - ./version/null.rb
 
 strict:
diff --git a/Library/Homebrew/sorbet/rbi/utils/tty.rbi b/Library/Homebrew/sorbet/rbi/utils/tty.rbi
new file mode 100644
index 000000000..67b8a68ee
--- /dev/null
+++ b/Library/Homebrew/sorbet/rbi/utils/tty.rbi
@@ -0,0 +1,36 @@
+# typed: strict
+
+module Tty
+  include Kernel
+
+  sig{ params(string: String).returns(String) }
+  def strip_ansi(string)
+  end
+
+  sig{ returns(Integer) }
+  def width()
+  end
+
+  sig{ params(string: String).returns(T.nilable(String)) }
+  def truncate(string)
+  end
+
+  def append_to_escape_sequence(code)
+  end
+
+  sig{ returns(String) }
+  def current_escape_sequence()
+  end
+
+  sig{ void }
+  def reset_escape_sequence!()
+  end
+
+  sig{ returns(String) }
+  def to_s
+  end
+
+  sig { returns(T::Boolean) }
+  def color?
+  end
+end

From 7596108bd249ce3878cc8f6fb35138640be701cd Mon Sep 17 00:00:00 2001
From: Mike McQuaid 
Date: Thu, 2 Jul 2020 11:57:11 +0100
Subject: [PATCH 92/98] Bottle extract and fetch fixes

- Make `brew extract` strip out bottle blocks
- Make `brew extract` output the path in a readable fashion
- Warn about building from source before fetching (not installing)
- If fetching a bottle fails, refetch and build from source.
---
 Library/Homebrew/dev-cmd/extract.rb   |  8 ++++++--
 Library/Homebrew/formula_installer.rb | 23 ++++++++++++++++++-----
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/Library/Homebrew/dev-cmd/extract.rb b/Library/Homebrew/dev-cmd/extract.rb
index 0d4b20b9e..d7d11b023 100644
--- a/Library/Homebrew/dev-cmd/extract.rb
+++ b/Library/Homebrew/dev-cmd/extract.rb
@@ -191,7 +191,10 @@ module Homebrew
     # Remove any existing version suffixes, as a new one will be added later
     name.sub!(/\b@(.*)\z\b/i, "")
     versioned_name = Formulary.class_s("#{name}@#{version}")
-    result.gsub!("class #{class_name} < Formula", "class #{versioned_name} < Formula")
+    result.sub!("class #{class_name} < Formula", "class #{versioned_name} < Formula")
+
+    # Remove bottle blocks, they won't work.
+    result.sub!(/  bottle do.+?end\n\n/m, "") if destination_tap != source_tap
 
     path = destination_tap.path/"Formula/#{name}@#{version}.rb"
     if path.exist?
@@ -205,7 +208,8 @@ module Homebrew
       odebug "Overwriting existing formula at #{path}"
       path.delete
     end
-    ohai "Writing formula for #{name} from revision #{rev} to #{path}"
+    ohai "Writing formula for #{name} from revision #{rev} to:"
+    puts path
     path.write result
   end
 
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index 41298db9e..de5174130 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -292,7 +292,7 @@ class FormulaInstaller
 
     self.class.attempted << formula
 
-    if pour_bottle?(warn: true)
+    if pour_bottle?
       begin
         pour
       rescue Exception => e # rubocop:disable Lint/RescueException
@@ -983,11 +983,24 @@ class FormulaInstaller
 
     return if only_deps?
 
-    unless pour_bottle?
-      formula.fetch_patches
-      formula.resources.each(&:fetch)
-    end
+    if pour_bottle?(warn: true)
+      begin
+        downloader.fetch
+      rescue Exception => e # rubocop:disable Lint/RescueException
+        raise if Homebrew::EnvConfig.developer? ||
+                 Homebrew::EnvConfig.no_bottle_source_fallback? ||
+                 e.is_a?(Interrupt)
 
+        @pour_failed = true
+        onoe e.message
+        opoo "Bottle installation failed: building from source."
+        fetch_dependencies
+      end
+    end
+    return if pour_bottle?
+
+    formula.fetch_patches
+    formula.resources.each(&:fetch)
     downloader.fetch
   end
 

From 14ed1adb6c071568ba5ada21e1a9719951f46bb1 Mon Sep 17 00:00:00 2001
From: Mike McQuaid 
Date: Thu, 2 Jul 2020 12:50:56 +0100
Subject: [PATCH 93/98] Add CodeCov YAML file.

This should make the output and statuses a bit more friendly.
---
 Library/Homebrew/test/.codecov.yml | 9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100644 Library/Homebrew/test/.codecov.yml

diff --git a/Library/Homebrew/test/.codecov.yml b/Library/Homebrew/test/.codecov.yml
new file mode 100644
index 000000000..27b6f0843
--- /dev/null
+++ b/Library/Homebrew/test/.codecov.yml
@@ -0,0 +1,9 @@
+codecov:
+  fixes:
+   - "::Library/Homebrew/"
+  coverage:
+    round: nearest
+    status:
+      project:
+        default:
+          threshold: 0.05%

From 2c133a3d45366a503c99a02e7e255e4387e8bff7 Mon Sep 17 00:00:00 2001
From: Mike McQuaid 
Date: Thu, 2 Jul 2020 12:53:52 +0100
Subject: [PATCH 94/98] Check installed dependents on install and reinstall

It's not sufficient to do this merely on `brew upgrade` because
`brew install` and `brew reinstall` can also result in formulae being
upgraded.

This requires moving logic from `cmd/upgrade.rb` to `upgrade.rb`. To
save you searching the diff the changes that resulted from doing that:

- Query the installed formulae from class state in `FormulaInstaller`
  rather than the (incomplete) list that we passed into it.
- Don't output the "Checking dependents" message. It was there for
  systems and configurations where this is slow but for most users
  and most installations this will be a (annoying, noisy) no-op.

Fixes https://github.com/Homebrew/brew/issues/7860
---
 Library/Homebrew/cmd/install.rb       |   4 +
 Library/Homebrew/cmd/reinstall.rb     |   4 +
 Library/Homebrew/cmd/upgrade.rb       | 244 +-------------------------
 Library/Homebrew/formula_installer.rb |  10 ++
 Library/Homebrew/test/spec_helper.rb  |   1 +
 Library/Homebrew/upgrade.rb           | 242 +++++++++++++++++++++++++
 6 files changed, 265 insertions(+), 240 deletions(-)
 create mode 100644 Library/Homebrew/upgrade.rb

diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb
index d6ad01fee..a608b72ea 100644
--- a/Library/Homebrew/cmd/install.rb
+++ b/Library/Homebrew/cmd/install.rb
@@ -7,6 +7,7 @@ require "install"
 require "search"
 require "cleanup"
 require "cli/parser"
+require "upgrade"
 
 module Homebrew
   module_function
@@ -261,6 +262,9 @@ module Homebrew
       install_formula(f)
       Cleanup.install_formula_clean!(f)
     end
+
+    check_installed_dependents
+
     Homebrew.messages.display_messages
   rescue FormulaUnreadableError, FormulaClassUnavailableError,
          TapFormulaUnreadableError, TapFormulaClassUnavailableError => e
diff --git a/Library/Homebrew/cmd/reinstall.rb b/Library/Homebrew/cmd/reinstall.rb
index c6abc8fa3..bc85d52f1 100644
--- a/Library/Homebrew/cmd/reinstall.rb
+++ b/Library/Homebrew/cmd/reinstall.rb
@@ -6,6 +6,7 @@ require "messages"
 require "reinstall"
 require "cli/parser"
 require "cleanup"
+require "upgrade"
 
 module Homebrew
   module_function
@@ -65,6 +66,9 @@ module Homebrew
       reinstall_formula(f)
       Cleanup.install_formula_clean!(f)
     end
+
+    check_installed_dependents
+
     Homebrew.messages.display_messages
   end
 end
diff --git a/Library/Homebrew/cmd/upgrade.rb b/Library/Homebrew/cmd/upgrade.rb
index 11efd5be0..66a804916 100644
--- a/Library/Homebrew/cmd/upgrade.rb
+++ b/Library/Homebrew/cmd/upgrade.rb
@@ -1,12 +1,9 @@
 # frozen_string_literal: true
 
-require "install"
-require "reinstall"
-require "formula_installer"
-require "development_tools"
-require "messages"
-require "cleanup"
 require "cli/parser"
+require "formula_installer"
+require "install"
+require "upgrade"
 
 module Homebrew
   module_function
@@ -114,241 +111,8 @@ module Homebrew
 
     upgrade_formulae(formulae_to_install)
 
-    check_dependents(formulae_to_install)
+    check_installed_dependents
 
     Homebrew.messages.display_messages
   end
-
-  def upgrade_formulae(formulae_to_install)
-    return if formulae_to_install.empty?
-    return if args.dry_run?
-
-    # Sort keg-only before non-keg-only formulae to avoid any needless conflicts
-    # with outdated, non-keg-only versions of formulae being upgraded.
-    formulae_to_install.sort! do |a, b|
-      if !a.keg_only? && b.keg_only?
-        1
-      elsif a.keg_only? && !b.keg_only?
-        -1
-      else
-        0
-      end
-    end
-
-    formulae_to_install.each do |f|
-      Migrator.migrate_if_needed(f)
-      begin
-        upgrade_formula(f)
-        Cleanup.install_formula_clean!(f)
-      rescue UnsatisfiedRequirements => e
-        Homebrew.failed = true
-        onoe "#{f}: #{e}"
-      end
-    end
-  end
-
-  def upgrade_formula(f)
-    return if args.dry_run?
-
-    if f.opt_prefix.directory?
-      keg = Keg.new(f.opt_prefix.resolved_path)
-      keg_had_linked_opt = true
-      keg_was_linked = keg.linked?
-    end
-
-    formulae_maybe_with_kegs = [f] + f.old_installed_formulae
-    outdated_kegs = formulae_maybe_with_kegs
-                    .map(&:linked_keg)
-                    .select(&:directory?)
-                    .map { |k| Keg.new(k.resolved_path) }
-    linked_kegs = outdated_kegs.select(&:linked?)
-
-    if f.opt_prefix.directory?
-      keg = Keg.new(f.opt_prefix.resolved_path)
-      tab = Tab.for_keg(keg)
-    end
-
-    build_options = BuildOptions.new(Options.create(args.flags_only), f.options)
-    options = build_options.used_options
-    options |= f.build.used_options
-    options &= f.options
-
-    fi = FormulaInstaller.new(f)
-    fi.options = options
-    fi.build_bottle = args.build_bottle?
-    fi.installed_on_request = args.named.present?
-    fi.link_keg           ||= keg_was_linked if keg_had_linked_opt
-    if tab
-      fi.build_bottle          ||= tab.built_bottle?
-      fi.installed_as_dependency = tab.installed_as_dependency
-      fi.installed_on_request  ||= tab.installed_on_request
-    end
-
-    upgrade_version = if f.optlinked?
-      "#{Keg.new(f.opt_prefix).version} -> #{f.pkg_version}"
-    else
-      "-> #{f.pkg_version}"
-    end
-    oh1 "Upgrading #{Formatter.identifier(f.full_specified_name)} #{upgrade_version} #{fi.options.to_a.join(" ")}"
-
-    fi.prelude
-    fi.fetch
-
-    # first we unlink the currently active keg for this formula otherwise it is
-    # possible for the existing build to interfere with the build we are about to
-    # do! Seriously, it happens!
-    outdated_kegs.each(&:unlink)
-
-    fi.install
-    fi.finish
-  rescue FormulaInstallationAlreadyAttemptedError
-    # We already attempted to upgrade f as part of the dependency tree of
-    # another formula. In that case, don't generate an error, just move on.
-    nil
-  rescue CannotInstallFormulaError => e
-    ofail e
-  rescue BuildError => e
-    e.dump
-    puts
-    Homebrew.failed = true
-  rescue DownloadError => e
-    ofail e
-  ensure
-    # restore previous installation state if build failed
-    begin
-      linked_kegs.each(&:link) unless f.latest_version_installed?
-    rescue
-      nil
-    end
-  end
-
-  # @private
-  def depends_on(a, b)
-    if a.opt_or_installed_prefix_keg
-       &.runtime_dependencies
-       &.any? { |d| d["full_name"] == b.full_name }
-      1
-    else
-      a <=> b
-    end
-  end
-
-  def check_dependents(formulae_to_install)
-    return if formulae_to_install.empty?
-
-    oh1 "Checking for dependents of upgraded formulae..." unless args.dry_run?
-    outdated_dependents =
-      formulae_to_install.flat_map(&:runtime_installed_formula_dependents)
-                         .select(&:outdated?)
-    if outdated_dependents.blank?
-      ohai "No dependents found!" unless args.dry_run?
-      return
-    end
-    outdated_dependents -= formulae_to_install if args.dry_run?
-
-    upgradeable_dependents =
-      outdated_dependents.reject(&:pinned?)
-                         .sort { |a, b| depends_on(a, b) }
-    pinned_dependents =
-      outdated_dependents.select(&:pinned?)
-                         .sort { |a, b| depends_on(a, b) }
-
-    if pinned_dependents.present?
-      plural = "dependent".pluralize(pinned_dependents.count)
-      ohai "Not upgrading #{pinned_dependents.count} pinned #{plural}:"
-      puts(pinned_dependents.map do |f|
-        "#{f.full_specified_name} #{f.pkg_version}"
-      end.join(", "))
-    end
-
-    # Print the upgradable dependents.
-    if upgradeable_dependents.blank?
-      ohai "No outdated dependents to upgrade!" unless args.dry_run?
-    else
-      plural = "dependent".pluralize(upgradeable_dependents.count)
-      verb = args.dry_run? ? "Would upgrade" : "Upgrading"
-      ohai "#{verb} #{upgradeable_dependents.count} #{plural}:"
-      formulae_upgrades = upgradeable_dependents.map do |f|
-        name = f.full_specified_name
-        if f.optlinked?
-          "#{name} #{Keg.new(f.opt_prefix).version} -> #{f.pkg_version}"
-        else
-          "#{name} #{f.pkg_version}"
-        end
-      end
-      puts formulae_upgrades.join(", ")
-    end
-
-    upgrade_formulae(upgradeable_dependents)
-
-    # Assess the dependents tree again now we've upgraded.
-    oh1 "Checking for dependents of upgraded formulae..." unless args.dry_run?
-    broken_dependents = CacheStoreDatabase.use(:linkage) do |db|
-      formulae_to_install.flat_map(&:runtime_installed_formula_dependents)
-                         .select do |f|
-        keg = f.opt_or_installed_prefix_keg
-        next unless keg
-
-        LinkageChecker.new(keg, cache_db: db)
-                      .broken_library_linkage?
-      end.compact
-    end
-    if broken_dependents.blank?
-      if args.dry_run?
-        ohai "No currently broken dependents found!"
-        opoo "If they are broken by the upgrade they will also be upgraded or reinstalled."
-      else
-        ohai "No broken dependents found!"
-      end
-      return
-    end
-
-    reinstallable_broken_dependents =
-      broken_dependents.reject(&:outdated?)
-                       .reject(&:pinned?)
-                       .sort { |a, b| depends_on(a, b) }
-    outdated_pinned_broken_dependents =
-      broken_dependents.select(&:outdated?)
-                       .select(&:pinned?)
-                       .sort { |a, b| depends_on(a, b) }
-
-    # Print the pinned dependents.
-    if outdated_pinned_broken_dependents.present?
-      count = outdated_pinned_broken_dependents.count
-      plural = "dependent".pluralize(outdated_pinned_broken_dependents.count)
-      onoe "Not reinstalling #{count} broken and outdated, but pinned #{plural}:"
-      $stderr.puts(outdated_pinned_broken_dependents.map do |f|
-        "#{f.full_specified_name} #{f.pkg_version}"
-      end.join(", "))
-    end
-
-    # Print the broken dependents.
-    if reinstallable_broken_dependents.blank?
-      ohai "No broken dependents to reinstall!"
-    else
-      count = reinstallable_broken_dependents.count
-      plural = "dependent".pluralize(reinstallable_broken_dependents.count)
-      ohai "Reinstalling #{count} broken #{plural} from source:"
-      puts reinstallable_broken_dependents.map(&:full_specified_name)
-                                          .join(", ")
-    end
-
-    return if args.dry_run?
-
-    reinstallable_broken_dependents.each do |f|
-      reinstall_formula(f, build_from_source: true)
-    rescue FormulaInstallationAlreadyAttemptedError
-      # We already attempted to reinstall f as part of the dependency tree of
-      # another formula. In that case, don't generate an error, just move on.
-      nil
-    rescue CannotInstallFormulaError => e
-      ofail e
-    rescue BuildError => e
-      e.dump
-      puts
-      Homebrew.failed = true
-    rescue DownloadError => e
-      ofail e
-    end
-  end
 end
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index 41298db9e..30876d2fa 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -77,6 +77,14 @@ class FormulaInstaller
     @attempted = Set.new
   end
 
+  def self.installed
+    @installed ||= Set.new
+  end
+
+  def self.clear_installed
+    @installed = Set.new
+  end
+
   # When no build tools are available and build flags are passed through ARGV,
   # it's necessary to interrupt the user before any sort of installation
   # can proceed. Only invoked when the user has no developer tools.
@@ -700,6 +708,8 @@ class FormulaInstaller
 
     ohai "Summary" if verbose? || show_summary_heading?
     puts summary
+
+    self.class.installed << formula
   ensure
     unlock
   end
diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb
index 355c22325..337569b43 100644
--- a/Library/Homebrew/test/spec_helper.rb
+++ b/Library/Homebrew/test/spec_helper.rb
@@ -163,6 +163,7 @@ RSpec.configure do |config|
       Keg.clear_cache
       Tab.clear_cache
       FormulaInstaller.clear_attempted
+      FormulaInstaller.clear_installed
 
       TEST_DIRECTORIES.each(&:mkpath)
 
diff --git a/Library/Homebrew/upgrade.rb b/Library/Homebrew/upgrade.rb
new file mode 100644
index 000000000..a875bfef8
--- /dev/null
+++ b/Library/Homebrew/upgrade.rb
@@ -0,0 +1,242 @@
+# frozen_string_literal: true
+
+require "reinstall"
+require "formula_installer"
+require "development_tools"
+require "messages"
+require "cleanup"
+
+module Homebrew
+  module_function
+
+  def upgrade_formulae(formulae_to_install)
+    return if formulae_to_install.empty?
+    return if args.dry_run?
+
+    # Sort keg-only before non-keg-only formulae to avoid any needless conflicts
+    # with outdated, non-keg-only versions of formulae being upgraded.
+    formulae_to_install.sort! do |a, b|
+      if !a.keg_only? && b.keg_only?
+        1
+      elsif a.keg_only? && !b.keg_only?
+        -1
+      else
+        0
+      end
+    end
+
+    formulae_to_install.each do |f|
+      Migrator.migrate_if_needed(f)
+      begin
+        upgrade_formula(f)
+        Cleanup.install_formula_clean!(f)
+      rescue UnsatisfiedRequirements => e
+        Homebrew.failed = true
+        onoe "#{f}: #{e}"
+      end
+    end
+  end
+
+  def upgrade_formula(f)
+    return if args.dry_run?
+
+    if f.opt_prefix.directory?
+      keg = Keg.new(f.opt_prefix.resolved_path)
+      keg_had_linked_opt = true
+      keg_was_linked = keg.linked?
+    end
+
+    formulae_maybe_with_kegs = [f] + f.old_installed_formulae
+    outdated_kegs = formulae_maybe_with_kegs
+                    .map(&:linked_keg)
+                    .select(&:directory?)
+                    .map { |k| Keg.new(k.resolved_path) }
+    linked_kegs = outdated_kegs.select(&:linked?)
+
+    if f.opt_prefix.directory?
+      keg = Keg.new(f.opt_prefix.resolved_path)
+      tab = Tab.for_keg(keg)
+    end
+
+    build_options = BuildOptions.new(Options.create(args.flags_only), f.options)
+    options = build_options.used_options
+    options |= f.build.used_options
+    options &= f.options
+
+    fi = FormulaInstaller.new(f)
+    fi.options = options
+    fi.build_bottle = args.build_bottle?
+    fi.installed_on_request = args.named.present?
+    fi.link_keg           ||= keg_was_linked if keg_had_linked_opt
+    if tab
+      fi.build_bottle          ||= tab.built_bottle?
+      fi.installed_as_dependency = tab.installed_as_dependency
+      fi.installed_on_request  ||= tab.installed_on_request
+    end
+
+    upgrade_version = if f.optlinked?
+      "#{Keg.new(f.opt_prefix).version} -> #{f.pkg_version}"
+    else
+      "-> #{f.pkg_version}"
+    end
+    oh1 "Upgrading #{Formatter.identifier(f.full_specified_name)} #{upgrade_version} #{fi.options.to_a.join(" ")}"
+
+    fi.prelude
+    fi.fetch
+
+    # first we unlink the currently active keg for this formula otherwise it is
+    # possible for the existing build to interfere with the build we are about to
+    # do! Seriously, it happens!
+    outdated_kegs.each(&:unlink)
+
+    fi.install
+    fi.finish
+  rescue FormulaInstallationAlreadyAttemptedError
+    # We already attempted to upgrade f as part of the dependency tree of
+    # another formula. In that case, don't generate an error, just move on.
+    nil
+  rescue CannotInstallFormulaError => e
+    ofail e
+  rescue BuildError => e
+    e.dump
+    puts
+    Homebrew.failed = true
+  rescue DownloadError => e
+    ofail e
+  ensure
+    # restore previous installation state if build failed
+    begin
+      linked_kegs.each(&:link) unless f.latest_version_installed?
+    rescue
+      nil
+    end
+  end
+
+  def check_installed_dependents
+    installed_formulae = FormulaInstaller.installed.to_a
+    return if installed_formulae.empty?
+
+    outdated_dependents =
+      installed_formulae.flat_map(&:runtime_installed_formula_dependents)
+                        .select(&:outdated?)
+    return if outdated_dependents.blank?
+
+    outdated_dependents -= installed_formulae if args.dry_run?
+
+    upgradeable_dependents =
+      outdated_dependents.reject(&:pinned?)
+                         .sort { |a, b| depends_on(a, b) }
+    pinned_dependents =
+      outdated_dependents.select(&:pinned?)
+                         .sort { |a, b| depends_on(a, b) }
+
+    if pinned_dependents.present?
+      plural = "dependent".pluralize(pinned_dependents.count)
+      ohai "Not upgrading #{pinned_dependents.count} pinned #{plural}:"
+      puts(pinned_dependents.map do |f|
+        "#{f.full_specified_name} #{f.pkg_version}"
+      end.join(", "))
+    end
+
+    # Print the upgradable dependents.
+    if upgradeable_dependents.blank?
+      ohai "No outdated dependents to upgrade!" unless args.dry_run?
+    else
+      plural = "dependent".pluralize(upgradeable_dependents.count)
+      verb = args.dry_run? ? "Would upgrade" : "Upgrading"
+      ohai "#{verb} #{upgradeable_dependents.count} #{plural}:"
+      formulae_upgrades = upgradeable_dependents.map do |f|
+        name = f.full_specified_name
+        if f.optlinked?
+          "#{name} #{Keg.new(f.opt_prefix).version} -> #{f.pkg_version}"
+        else
+          "#{name} #{f.pkg_version}"
+        end
+      end
+      puts formulae_upgrades.join(", ")
+    end
+
+    upgrade_formulae(upgradeable_dependents)
+
+    # Assess the dependents tree again now we've upgraded.
+    oh1 "Checking for dependents of upgraded formulae..." unless args.dry_run?
+    broken_dependents = CacheStoreDatabase.use(:linkage) do |db|
+      formulae_to_install.flat_map(&:runtime_installed_formula_dependents)
+                         .select do |f|
+        keg = f.opt_or_installed_prefix_keg
+        next unless keg
+
+        LinkageChecker.new(keg, cache_db: db)
+                      .broken_library_linkage?
+      end.compact
+    end
+    if broken_dependents.blank?
+      if args.dry_run?
+        ohai "No currently broken dependents found!"
+        opoo "If they are broken by the upgrade they will also be upgraded or reinstalled."
+      else
+        ohai "No broken dependents found!"
+      end
+      return
+    end
+
+    reinstallable_broken_dependents =
+      broken_dependents.reject(&:outdated?)
+                       .reject(&:pinned?)
+                       .sort { |a, b| depends_on(a, b) }
+    outdated_pinned_broken_dependents =
+      broken_dependents.select(&:outdated?)
+                       .select(&:pinned?)
+                       .sort { |a, b| depends_on(a, b) }
+
+    # Print the pinned dependents.
+    if outdated_pinned_broken_dependents.present?
+      count = outdated_pinned_broken_dependents.count
+      plural = "dependent".pluralize(outdated_pinned_broken_dependents.count)
+      onoe "Not reinstalling #{count} broken and outdated, but pinned #{plural}:"
+      $stderr.puts(outdated_pinned_broken_dependents.map do |f|
+        "#{f.full_specified_name} #{f.pkg_version}"
+      end.join(", "))
+    end
+
+    # Print the broken dependents.
+    if reinstallable_broken_dependents.blank?
+      ohai "No broken dependents to reinstall!"
+    else
+      count = reinstallable_broken_dependents.count
+      plural = "dependent".pluralize(reinstallable_broken_dependents.count)
+      ohai "Reinstalling #{count} broken #{plural} from source:"
+      puts reinstallable_broken_dependents.map(&:full_specified_name)
+                                          .join(", ")
+    end
+
+    return if args.dry_run?
+
+    reinstallable_broken_dependents.each do |f|
+      reinstall_formula(f, build_from_source: true)
+    rescue FormulaInstallationAlreadyAttemptedError
+      # We already attempted to reinstall f as part of the dependency tree of
+      # another formula. In that case, don't generate an error, just move on.
+      nil
+    rescue CannotInstallFormulaError => e
+      ofail e
+    rescue BuildError => e
+      e.dump
+      puts
+      Homebrew.failed = true
+    rescue DownloadError => e
+      ofail e
+    end
+  end
+
+  # @private
+  def depends_on(a, b)
+    if a.opt_or_installed_prefix_keg
+       &.runtime_dependencies
+       &.any? { |d| d["full_name"] == b.full_name }
+      1
+    else
+      a <=> b
+    end
+  end
+end

From 2970d2e4f9dafad8ef90ebf439a6f0b31b317be7 Mon Sep 17 00:00:00 2001
From: Bo Anderson 
Date: Thu, 2 Jul 2020 18:58:00 +0100
Subject: [PATCH 95/98] dev-cmd/update-license-data: fix --fail-if-changed

---
 Library/Homebrew/dev-cmd/update-license-data.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb
index 22e73db9a..1e1710649 100644
--- a/Library/Homebrew/dev-cmd/update-license-data.rb
+++ b/Library/Homebrew/dev-cmd/update-license-data.rb
@@ -34,6 +34,6 @@ module Homebrew
 
     return unless args.fail_if_changed?
 
-    system("git diff --stat --exit-code #{SPDX_PATH}")
+    safe_system "git", "diff", "--stat", "--exit-code", SPDX_PATH
   end
 end

From 997ba42a4b67363adc9c32e13beb4130177aee1a Mon Sep 17 00:00:00 2001
From: Bo Anderson 
Date: Thu, 2 Jul 2020 18:58:32 +0100
Subject: [PATCH 96/98] utils/curl: support disabling partial downloads in
 curl_download

---
 Library/Homebrew/utils/curl.rb | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/Library/Homebrew/utils/curl.rb b/Library/Homebrew/utils/curl.rb
index 7503e1682..f767fdb0e 100644
--- a/Library/Homebrew/utils/curl.rb
+++ b/Library/Homebrew/utils/curl.rb
@@ -54,21 +54,25 @@ def curl(*args, secrets: [], **options)
                   secrets:      secrets
 end
 
-def curl_download(*args, to: nil, **options)
+def curl_download(*args, to: nil, partial: true, **options)
   destination = Pathname(to)
   destination.dirname.mkpath
 
-  range_stdout = curl_output("--location", "--range", "0-1",
-                             "--dump-header", "-",
-                             "--write-out", "%\{http_code}",
-                             "--output", "/dev/null", *args, **options).stdout
-  headers, _, http_status = range_stdout.partition("\r\n\r\n")
+  if partial
+    range_stdout = curl_output("--location", "--range", "0-1",
+                               "--dump-header", "-",
+                               "--write-out", "%\{http_code}",
+                               "--output", "/dev/null", *args, **options).stdout
+    headers, _, http_status = range_stdout.partition("\r\n\r\n")
 
-  supports_partial_download = http_status.to_i == 206 # Partial Content
-  if supports_partial_download &&
-     destination.exist? &&
-     destination.size == %r{^.*Content-Range: bytes \d+-\d+/(\d+)\r\n.*$}m.match(headers)&.[](1)&.to_i
-    return # We've already downloaded all the bytes
+    supports_partial_download = http_status.to_i == 206 # Partial Content
+    if supports_partial_download &&
+       destination.exist? &&
+       destination.size == %r{^.*Content-Range: bytes \d+-\d+/(\d+)\r\n.*$}m.match(headers)&.[](1)&.to_i
+      return # We've already downloaded all the bytes
+    end
+  else
+    supports_partial_download = false
   end
 
   continue_at = if destination.exist? && supports_partial_download

From 4411764aa10ef4eaf0dafb845d6fcae34d54b809 Mon Sep 17 00:00:00 2001
From: Bo Anderson 
Date: Thu, 2 Jul 2020 18:59:10 +0100
Subject: [PATCH 97/98] dev-cmd/update-license-data: don't use partial
 downloading

---
 Library/Homebrew/dev-cmd/update-license-data.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Library/Homebrew/dev-cmd/update-license-data.rb b/Library/Homebrew/dev-cmd/update-license-data.rb
index 1e1710649..aa0570218 100644
--- a/Library/Homebrew/dev-cmd/update-license-data.rb
+++ b/Library/Homebrew/dev-cmd/update-license-data.rb
@@ -30,7 +30,7 @@ module Homebrew
   def update_license_data
     update_license_data_args.parse
     ohai "Updating SPDX license data..."
-    curl_download(SPDX_DATA_URL, to: SPDX_PATH)
+    curl_download(SPDX_DATA_URL, to: SPDX_PATH, partial: false)
 
     return unless args.fail_if_changed?
 

From 76e328f21a270a8338e9ca47110f3626767c7bff Mon Sep 17 00:00:00 2001
From: Bo Anderson 
Date: Thu, 2 Jul 2020 18:59:22 +0100
Subject: [PATCH 98/98] data/spdx.json: update

---
 Library/Homebrew/data/spdx.json | 992 ++++++++++++++++++--------------
 1 file changed, 574 insertions(+), 418 deletions(-)

diff --git a/Library/Homebrew/data/spdx.json b/Library/Homebrew/data/spdx.json
index 530b2796f..2cf9e3f86 100644
--- a/Library/Homebrew/data/spdx.json
+++ b/Library/Homebrew/data/spdx.json
@@ -1,11 +1,11 @@
 {
-  "licenseListVersion": "3.9-4-g1a3102c",
+  "licenseListVersion": "3.9-10-gb19922e",
   "licenses": [
     {
       "reference": "./0BSD.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/0BSD.json",
-      "referenceNumber": "239",
+      "referenceNumber": "247",
       "name": "BSD Zero Clause License",
       "licenseId": "0BSD",
       "seeAlso": [
@@ -17,7 +17,7 @@
       "reference": "./AAL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/AAL.json",
-      "referenceNumber": "60",
+      "referenceNumber": "61",
       "name": "Attribution Assurance License",
       "licenseId": "AAL",
       "seeAlso": [
@@ -29,7 +29,7 @@
       "reference": "./ADSL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/ADSL.json",
-      "referenceNumber": "217",
+      "referenceNumber": "225",
       "name": "Amazon Digital Services License",
       "licenseId": "ADSL",
       "seeAlso": [
@@ -42,7 +42,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AFL-1.1.json",
-      "referenceNumber": "28",
+      "referenceNumber": "29",
       "name": "Academic Free License v1.1",
       "licenseId": "AFL-1.1",
       "seeAlso": [
@@ -56,7 +56,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AFL-1.2.json",
-      "referenceNumber": "222",
+      "referenceNumber": "230",
       "name": "Academic Free License v1.2",
       "licenseId": "AFL-1.2",
       "seeAlso": [
@@ -70,7 +70,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AFL-2.0.json",
-      "referenceNumber": "341",
+      "referenceNumber": "352",
       "name": "Academic Free License v2.0",
       "licenseId": "AFL-2.0",
       "seeAlso": [
@@ -83,7 +83,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AFL-2.1.json",
-      "referenceNumber": "249",
+      "referenceNumber": "258",
       "name": "Academic Free License v2.1",
       "licenseId": "AFL-2.1",
       "seeAlso": [
@@ -96,7 +96,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AFL-3.0.json",
-      "referenceNumber": "361",
+      "referenceNumber": "373",
       "name": "Academic Free License v3.0",
       "licenseId": "AFL-3.0",
       "seeAlso": [
@@ -110,7 +110,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AGPL-1.0.json",
-      "referenceNumber": "175",
+      "referenceNumber": "178",
       "name": "Affero General Public License v1.0",
       "licenseId": "AGPL-1.0",
       "seeAlso": [
@@ -122,7 +122,7 @@
       "reference": "./AGPL-1.0-only.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/AGPL-1.0-only.json",
-      "referenceNumber": "71",
+      "referenceNumber": "72",
       "name": "Affero General Public License v1.0 only",
       "licenseId": "AGPL-1.0-only",
       "seeAlso": [
@@ -134,7 +134,7 @@
       "reference": "./AGPL-1.0-or-later.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/AGPL-1.0-or-later.json",
-      "referenceNumber": "168",
+      "referenceNumber": "171",
       "name": "Affero General Public License v1.0 or later",
       "licenseId": "AGPL-1.0-or-later",
       "seeAlso": [
@@ -147,7 +147,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AGPL-3.0.json",
-      "referenceNumber": "148",
+      "referenceNumber": "150",
       "name": "GNU Affero General Public License v3.0",
       "licenseId": "AGPL-3.0",
       "seeAlso": [
@@ -161,7 +161,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AGPL-3.0-only.json",
-      "referenceNumber": "298",
+      "referenceNumber": "307",
       "name": "GNU Affero General Public License v3.0 only",
       "licenseId": "AGPL-3.0-only",
       "seeAlso": [
@@ -175,7 +175,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/AGPL-3.0-or-later.json",
-      "referenceNumber": "160",
+      "referenceNumber": "162",
       "name": "GNU Affero General Public License v3.0 or later",
       "licenseId": "AGPL-3.0-or-later",
       "seeAlso": [
@@ -188,7 +188,7 @@
       "reference": "./AMDPLPA.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/AMDPLPA.json",
-      "referenceNumber": "133",
+      "referenceNumber": "135",
       "name": "AMD\u0027s plpa_map.c License",
       "licenseId": "AMDPLPA",
       "seeAlso": [
@@ -200,7 +200,7 @@
       "reference": "./AML.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/AML.json",
-      "referenceNumber": "157",
+      "referenceNumber": "159",
       "name": "Apple MIT License",
       "licenseId": "AML",
       "seeAlso": [
@@ -212,7 +212,7 @@
       "reference": "./AMPAS.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/AMPAS.json",
-      "referenceNumber": "136",
+      "referenceNumber": "138",
       "name": "Academy of Motion Picture Arts and Sciences BSD",
       "licenseId": "AMPAS",
       "seeAlso": [
@@ -224,7 +224,7 @@
       "reference": "./ANTLR-PD.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/ANTLR-PD.json",
-      "referenceNumber": "44",
+      "referenceNumber": "45",
       "name": "ANTLR Software Rights Notice",
       "licenseId": "ANTLR-PD",
       "seeAlso": [
@@ -236,7 +236,7 @@
       "reference": "./APAFML.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/APAFML.json",
-      "referenceNumber": "248",
+      "referenceNumber": "257",
       "name": "Adobe Postscript AFM License",
       "licenseId": "APAFML",
       "seeAlso": [
@@ -248,7 +248,7 @@
       "reference": "./APL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/APL-1.0.json",
-      "referenceNumber": "278",
+      "referenceNumber": "287",
       "name": "Adaptive Public License 1.0",
       "licenseId": "APL-1.0",
       "seeAlso": [
@@ -260,7 +260,7 @@
       "reference": "./APSL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/APSL-1.0.json",
-      "referenceNumber": "387",
+      "referenceNumber": "399",
       "name": "Apple Public Source License 1.0",
       "licenseId": "APSL-1.0",
       "seeAlso": [
@@ -272,7 +272,7 @@
       "reference": "./APSL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/APSL-1.1.json",
-      "referenceNumber": "338",
+      "referenceNumber": "349",
       "name": "Apple Public Source License 1.1",
       "licenseId": "APSL-1.1",
       "seeAlso": [
@@ -284,7 +284,7 @@
       "reference": "./APSL-1.2.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/APSL-1.2.json",
-      "referenceNumber": "201",
+      "referenceNumber": "209",
       "name": "Apple Public Source License 1.2",
       "licenseId": "APSL-1.2",
       "seeAlso": [
@@ -297,7 +297,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/APSL-2.0.json",
-      "referenceNumber": "141",
+      "referenceNumber": "143",
       "name": "Apple Public Source License 2.0",
       "licenseId": "APSL-2.0",
       "seeAlso": [
@@ -309,7 +309,7 @@
       "reference": "./Abstyles.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Abstyles.json",
-      "referenceNumber": "75",
+      "referenceNumber": "76",
       "name": "Abstyles License",
       "licenseId": "Abstyles",
       "seeAlso": [
@@ -321,7 +321,7 @@
       "reference": "./Adobe-2006.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Adobe-2006.json",
-      "referenceNumber": "310",
+      "referenceNumber": "321",
       "name": "Adobe Systems Incorporated Source Code License Agreement",
       "licenseId": "Adobe-2006",
       "seeAlso": [
@@ -333,7 +333,7 @@
       "reference": "./Adobe-Glyph.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Adobe-Glyph.json",
-      "referenceNumber": "343",
+      "referenceNumber": "354",
       "name": "Adobe Glyph List License",
       "licenseId": "Adobe-Glyph",
       "seeAlso": [
@@ -345,7 +345,7 @@
       "reference": "./Afmparse.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Afmparse.json",
-      "referenceNumber": "332",
+      "referenceNumber": "343",
       "name": "Afmparse License",
       "licenseId": "Afmparse",
       "seeAlso": [
@@ -357,7 +357,7 @@
       "reference": "./Aladdin.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Aladdin.json",
-      "referenceNumber": "315",
+      "referenceNumber": "326",
       "name": "Aladdin Free Public License",
       "licenseId": "Aladdin",
       "seeAlso": [
@@ -370,7 +370,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Apache-1.0.json",
-      "referenceNumber": "32",
+      "referenceNumber": "33",
       "name": "Apache License 1.0",
       "licenseId": "Apache-1.0",
       "seeAlso": [
@@ -383,7 +383,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Apache-1.1.json",
-      "referenceNumber": "274",
+      "referenceNumber": "283",
       "name": "Apache License 1.1",
       "licenseId": "Apache-1.1",
       "seeAlso": [
@@ -397,7 +397,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Apache-2.0.json",
-      "referenceNumber": "366",
+      "referenceNumber": "378",
       "name": "Apache License 2.0",
       "licenseId": "Apache-2.0",
       "seeAlso": [
@@ -410,7 +410,7 @@
       "reference": "./Artistic-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Artistic-1.0.json",
-      "referenceNumber": "273",
+      "referenceNumber": "282",
       "name": "Artistic License 1.0",
       "licenseId": "Artistic-1.0",
       "seeAlso": [
@@ -422,7 +422,7 @@
       "reference": "./Artistic-1.0-Perl.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Artistic-1.0-Perl.json",
-      "referenceNumber": "306",
+      "referenceNumber": "316",
       "name": "Artistic License 1.0 (Perl)",
       "licenseId": "Artistic-1.0-Perl",
       "seeAlso": [
@@ -434,7 +434,7 @@
       "reference": "./Artistic-1.0-cl8.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Artistic-1.0-cl8.json",
-      "referenceNumber": "229",
+      "referenceNumber": "237",
       "name": "Artistic License 1.0 w/clause 8",
       "licenseId": "Artistic-1.0-cl8",
       "seeAlso": [
@@ -447,7 +447,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Artistic-2.0.json",
-      "referenceNumber": "78",
+      "referenceNumber": "79",
       "name": "Artistic License 2.0",
       "licenseId": "Artistic-2.0",
       "seeAlso": [
@@ -460,7 +460,7 @@
       "reference": "./BSD-1-Clause.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-1-Clause.json",
-      "referenceNumber": "389",
+      "referenceNumber": "401",
       "name": "BSD 1-Clause License",
       "licenseId": "BSD-1-Clause",
       "seeAlso": [
@@ -472,7 +472,7 @@
       "reference": "./BSD-2-Clause.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-2-Clause.json",
-      "referenceNumber": "307",
+      "referenceNumber": "317",
       "name": "BSD 2-Clause \"Simplified\" License",
       "licenseId": "BSD-2-Clause",
       "seeAlso": [
@@ -485,7 +485,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/BSD-2-Clause-FreeBSD.json",
-      "referenceNumber": "281",
+      "referenceNumber": "290",
       "name": "BSD 2-Clause FreeBSD License",
       "licenseId": "BSD-2-Clause-FreeBSD",
       "seeAlso": [
@@ -497,7 +497,7 @@
       "reference": "./BSD-2-Clause-NetBSD.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/BSD-2-Clause-NetBSD.json",
-      "referenceNumber": "186",
+      "referenceNumber": "191",
       "name": "BSD 2-Clause NetBSD License",
       "licenseId": "BSD-2-Clause-NetBSD",
       "seeAlso": [
@@ -509,7 +509,7 @@
       "reference": "./BSD-2-Clause-Patent.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-2-Clause-Patent.json",
-      "referenceNumber": "362",
+      "referenceNumber": "374",
       "name": "BSD-2-Clause Plus Patent License",
       "licenseId": "BSD-2-Clause-Patent",
       "seeAlso": [
@@ -522,7 +522,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause.json",
-      "referenceNumber": "202",
+      "referenceNumber": "210",
       "name": "BSD 3-Clause \"New\" or \"Revised\" License",
       "licenseId": "BSD-3-Clause",
       "seeAlso": [
@@ -534,7 +534,7 @@
       "reference": "./BSD-3-Clause-Attribution.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-Attribution.json",
-      "referenceNumber": "39",
+      "referenceNumber": "40",
       "name": "BSD with attribution",
       "licenseId": "BSD-3-Clause-Attribution",
       "seeAlso": [
@@ -547,7 +547,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-Clear.json",
-      "referenceNumber": "88",
+      "referenceNumber": "90",
       "name": "BSD 3-Clause Clear License",
       "licenseId": "BSD-3-Clause-Clear",
       "seeAlso": [
@@ -559,7 +559,7 @@
       "reference": "./BSD-3-Clause-LBNL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-LBNL.json",
-      "referenceNumber": "147",
+      "referenceNumber": "149",
       "name": "Lawrence Berkeley National Labs BSD variant license",
       "licenseId": "BSD-3-Clause-LBNL",
       "seeAlso": [
@@ -571,7 +571,7 @@
       "reference": "./BSD-3-Clause-No-Nuclear-License.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json",
-      "referenceNumber": "62",
+      "referenceNumber": "63",
       "name": "BSD 3-Clause No Nuclear License",
       "licenseId": "BSD-3-Clause-No-Nuclear-License",
       "seeAlso": [
@@ -583,7 +583,7 @@
       "reference": "./BSD-3-Clause-No-Nuclear-License-2014.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json",
-      "referenceNumber": "342",
+      "referenceNumber": "353",
       "name": "BSD 3-Clause No Nuclear License 2014",
       "licenseId": "BSD-3-Clause-No-Nuclear-License-2014",
       "seeAlso": [
@@ -595,7 +595,7 @@
       "reference": "./BSD-3-Clause-No-Nuclear-Warranty.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json",
-      "referenceNumber": "117",
+      "referenceNumber": "119",
       "name": "BSD 3-Clause No Nuclear Warranty",
       "licenseId": "BSD-3-Clause-No-Nuclear-Warranty",
       "seeAlso": [
@@ -607,7 +607,7 @@
       "reference": "./BSD-3-Clause-Open-MPI.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-3-Clause-Open-MPI.json",
-      "referenceNumber": "214",
+      "referenceNumber": "222",
       "name": "BSD 3-Clause Open MPI variant",
       "licenseId": "BSD-3-Clause-Open-MPI",
       "seeAlso": [
@@ -621,7 +621,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/BSD-4-Clause.json",
-      "referenceNumber": "69",
+      "referenceNumber": "70",
       "name": "BSD 4-Clause \"Original\" or \"Old\" License",
       "licenseId": "BSD-4-Clause",
       "seeAlso": [
@@ -633,7 +633,7 @@
       "reference": "./BSD-4-Clause-UC.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-4-Clause-UC.json",
-      "referenceNumber": "372",
+      "referenceNumber": "384",
       "name": "BSD-4-Clause (University of California-Specific)",
       "licenseId": "BSD-4-Clause-UC",
       "seeAlso": [
@@ -645,7 +645,7 @@
       "reference": "./BSD-Protection.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-Protection.json",
-      "referenceNumber": "400",
+      "referenceNumber": "412",
       "name": "BSD Protection License",
       "licenseId": "BSD-Protection",
       "seeAlso": [
@@ -657,7 +657,7 @@
       "reference": "./BSD-Source-Code.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BSD-Source-Code.json",
-      "referenceNumber": "169",
+      "referenceNumber": "172",
       "name": "BSD Source Code Attribution",
       "licenseId": "BSD-Source-Code",
       "seeAlso": [
@@ -670,7 +670,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/BSL-1.0.json",
-      "referenceNumber": "295",
+      "referenceNumber": "304",
       "name": "Boost Software License 1.0",
       "licenseId": "BSL-1.0",
       "seeAlso": [
@@ -683,7 +683,7 @@
       "reference": "./Bahyph.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Bahyph.json",
-      "referenceNumber": "151",
+      "referenceNumber": "153",
       "name": "Bahyph License",
       "licenseId": "Bahyph",
       "seeAlso": [
@@ -695,7 +695,7 @@
       "reference": "./Barr.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Barr.json",
-      "referenceNumber": "128",
+      "referenceNumber": "130",
       "name": "Barr License",
       "licenseId": "Barr",
       "seeAlso": [
@@ -707,7 +707,7 @@
       "reference": "./Beerware.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Beerware.json",
-      "referenceNumber": "251",
+      "referenceNumber": "260",
       "name": "Beerware License",
       "licenseId": "Beerware",
       "seeAlso": [
@@ -720,7 +720,7 @@
       "reference": "./BitTorrent-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BitTorrent-1.0.json",
-      "referenceNumber": "207",
+      "referenceNumber": "215",
       "name": "BitTorrent Open Source License v1.0",
       "licenseId": "BitTorrent-1.0",
       "seeAlso": [
@@ -733,7 +733,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/BitTorrent-1.1.json",
-      "referenceNumber": "188",
+      "referenceNumber": "194",
       "name": "BitTorrent Open Source License v1.1",
       "licenseId": "BitTorrent-1.1",
       "seeAlso": [
@@ -745,7 +745,7 @@
       "reference": "./BlueOak-1.0.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/BlueOak-1.0.0.json",
-      "referenceNumber": "211",
+      "referenceNumber": "219",
       "name": "Blue Oak Model License 1.0.0",
       "licenseId": "BlueOak-1.0.0",
       "seeAlso": [
@@ -757,7 +757,7 @@
       "reference": "./Borceux.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Borceux.json",
-      "referenceNumber": "305",
+      "referenceNumber": "315",
       "name": "Borceux license",
       "licenseId": "Borceux",
       "seeAlso": [
@@ -769,7 +769,7 @@
       "reference": "./CAL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CAL-1.0.json",
-      "referenceNumber": "59",
+      "referenceNumber": "60",
       "name": "Cryptographic Autonomy License 1.0",
       "licenseId": "CAL-1.0",
       "seeAlso": [
@@ -782,7 +782,7 @@
       "reference": "./CAL-1.0-Combined-Work-Exception.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json",
-      "referenceNumber": "80",
+      "referenceNumber": "81",
       "name": "Cryptographic Autonomy License 1.0 (Combined Work Exception)",
       "licenseId": "CAL-1.0-Combined-Work-Exception",
       "seeAlso": [
@@ -795,7 +795,7 @@
       "reference": "./CATOSL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CATOSL-1.1.json",
-      "referenceNumber": "234",
+      "referenceNumber": "242",
       "name": "Computer Associates Trusted Open Source License 1.1",
       "licenseId": "CATOSL-1.1",
       "seeAlso": [
@@ -807,7 +807,7 @@
       "reference": "./CC-BY-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-1.0.json",
-      "referenceNumber": "23",
+      "referenceNumber": "24",
       "name": "Creative Commons Attribution 1.0 Generic",
       "licenseId": "CC-BY-1.0",
       "seeAlso": [
@@ -819,7 +819,7 @@
       "reference": "./CC-BY-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-2.0.json",
-      "referenceNumber": "61",
+      "referenceNumber": "62",
       "name": "Creative Commons Attribution 2.0 Generic",
       "licenseId": "CC-BY-2.0",
       "seeAlso": [
@@ -831,7 +831,7 @@
       "reference": "./CC-BY-2.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-2.5.json",
-      "referenceNumber": "187",
+      "referenceNumber": "192",
       "name": "Creative Commons Attribution 2.5 Generic",
       "licenseId": "CC-BY-2.5",
       "seeAlso": [
@@ -843,7 +843,7 @@
       "reference": "./CC-BY-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-3.0.json",
-      "referenceNumber": "344",
+      "referenceNumber": "355",
       "name": "Creative Commons Attribution 3.0 Unported",
       "licenseId": "CC-BY-3.0",
       "seeAlso": [
@@ -856,7 +856,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-4.0.json",
-      "referenceNumber": "218",
+      "referenceNumber": "226",
       "name": "Creative Commons Attribution 4.0 International",
       "licenseId": "CC-BY-4.0",
       "seeAlso": [
@@ -868,7 +868,7 @@
       "reference": "./CC-BY-NC-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-1.0.json",
-      "referenceNumber": "231",
+      "referenceNumber": "239",
       "name": "Creative Commons Attribution Non Commercial 1.0 Generic",
       "licenseId": "CC-BY-NC-1.0",
       "seeAlso": [
@@ -880,7 +880,7 @@
       "reference": "./CC-BY-NC-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-2.0.json",
-      "referenceNumber": "326",
+      "referenceNumber": "337",
       "name": "Creative Commons Attribution Non Commercial 2.0 Generic",
       "licenseId": "CC-BY-NC-2.0",
       "seeAlso": [
@@ -892,7 +892,7 @@
       "reference": "./CC-BY-NC-2.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-2.5.json",
-      "referenceNumber": "398",
+      "referenceNumber": "410",
       "name": "Creative Commons Attribution Non Commercial 2.5 Generic",
       "licenseId": "CC-BY-NC-2.5",
       "seeAlso": [
@@ -904,7 +904,7 @@
       "reference": "./CC-BY-NC-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-3.0.json",
-      "referenceNumber": "336",
+      "referenceNumber": "347",
       "name": "Creative Commons Attribution Non Commercial 3.0 Unported",
       "licenseId": "CC-BY-NC-3.0",
       "seeAlso": [
@@ -916,7 +916,7 @@
       "reference": "./CC-BY-NC-4.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-4.0.json",
-      "referenceNumber": "272",
+      "referenceNumber": "281",
       "name": "Creative Commons Attribution Non Commercial 4.0 International",
       "licenseId": "CC-BY-NC-4.0",
       "seeAlso": [
@@ -928,7 +928,7 @@
       "reference": "./CC-BY-NC-ND-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-1.0.json",
-      "referenceNumber": "102",
+      "referenceNumber": "104",
       "name": "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic",
       "licenseId": "CC-BY-NC-ND-1.0",
       "seeAlso": [
@@ -940,7 +940,7 @@
       "reference": "./CC-BY-NC-ND-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-2.0.json",
-      "referenceNumber": "138",
+      "referenceNumber": "140",
       "name": "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic",
       "licenseId": "CC-BY-NC-ND-2.0",
       "seeAlso": [
@@ -952,7 +952,7 @@
       "reference": "./CC-BY-NC-ND-2.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-2.5.json",
-      "referenceNumber": "30",
+      "referenceNumber": "31",
       "name": "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic",
       "licenseId": "CC-BY-NC-ND-2.5",
       "seeAlso": [
@@ -964,7 +964,7 @@
       "reference": "./CC-BY-NC-ND-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-3.0.json",
-      "referenceNumber": "41",
+      "referenceNumber": "42",
       "name": "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported",
       "licenseId": "CC-BY-NC-ND-3.0",
       "seeAlso": [
@@ -976,7 +976,7 @@
       "reference": "./CC-BY-NC-ND-4.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-ND-4.0.json",
-      "referenceNumber": "172",
+      "referenceNumber": "175",
       "name": "Creative Commons Attribution Non Commercial No Derivatives 4.0 International",
       "licenseId": "CC-BY-NC-ND-4.0",
       "seeAlso": [
@@ -988,7 +988,7 @@
       "reference": "./CC-BY-NC-SA-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-1.0.json",
-      "referenceNumber": "120",
+      "referenceNumber": "122",
       "name": "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic",
       "licenseId": "CC-BY-NC-SA-1.0",
       "seeAlso": [
@@ -1000,7 +1000,7 @@
       "reference": "./CC-BY-NC-SA-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-2.0.json",
-      "referenceNumber": "411",
+      "referenceNumber": "424",
       "name": "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic",
       "licenseId": "CC-BY-NC-SA-2.0",
       "seeAlso": [
@@ -1012,7 +1012,7 @@
       "reference": "./CC-BY-NC-SA-2.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-2.5.json",
-      "referenceNumber": "215",
+      "referenceNumber": "223",
       "name": "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic",
       "licenseId": "CC-BY-NC-SA-2.5",
       "seeAlso": [
@@ -1024,7 +1024,7 @@
       "reference": "./CC-BY-NC-SA-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-3.0.json",
-      "referenceNumber": "360",
+      "referenceNumber": "372",
       "name": "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported",
       "licenseId": "CC-BY-NC-SA-3.0",
       "seeAlso": [
@@ -1036,7 +1036,7 @@
       "reference": "./CC-BY-NC-SA-4.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-NC-SA-4.0.json",
-      "referenceNumber": "331",
+      "referenceNumber": "342",
       "name": "Creative Commons Attribution Non Commercial Share Alike 4.0 International",
       "licenseId": "CC-BY-NC-SA-4.0",
       "seeAlso": [
@@ -1048,7 +1048,7 @@
       "reference": "./CC-BY-ND-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-1.0.json",
-      "referenceNumber": "94",
+      "referenceNumber": "96",
       "name": "Creative Commons Attribution No Derivatives 1.0 Generic",
       "licenseId": "CC-BY-ND-1.0",
       "seeAlso": [
@@ -1060,7 +1060,7 @@
       "reference": "./CC-BY-ND-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-2.0.json",
-      "referenceNumber": "46",
+      "referenceNumber": "47",
       "name": "Creative Commons Attribution No Derivatives 2.0 Generic",
       "licenseId": "CC-BY-ND-2.0",
       "seeAlso": [
@@ -1072,7 +1072,7 @@
       "reference": "./CC-BY-ND-2.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-2.5.json",
-      "referenceNumber": "27",
+      "referenceNumber": "28",
       "name": "Creative Commons Attribution No Derivatives 2.5 Generic",
       "licenseId": "CC-BY-ND-2.5",
       "seeAlso": [
@@ -1084,7 +1084,7 @@
       "reference": "./CC-BY-ND-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-3.0.json",
-      "referenceNumber": "284",
+      "referenceNumber": "293",
       "name": "Creative Commons Attribution No Derivatives 3.0 Unported",
       "licenseId": "CC-BY-ND-3.0",
       "seeAlso": [
@@ -1096,7 +1096,7 @@
       "reference": "./CC-BY-ND-4.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-ND-4.0.json",
-      "referenceNumber": "318",
+      "referenceNumber": "329",
       "name": "Creative Commons Attribution No Derivatives 4.0 International",
       "licenseId": "CC-BY-ND-4.0",
       "seeAlso": [
@@ -1108,7 +1108,7 @@
       "reference": "./CC-BY-SA-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-1.0.json",
-      "referenceNumber": "403",
+      "referenceNumber": "415",
       "name": "Creative Commons Attribution Share Alike 1.0 Generic",
       "licenseId": "CC-BY-SA-1.0",
       "seeAlso": [
@@ -1120,7 +1120,7 @@
       "reference": "./CC-BY-SA-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-2.0.json",
-      "referenceNumber": "367",
+      "referenceNumber": "379",
       "name": "Creative Commons Attribution Share Alike 2.0 Generic",
       "licenseId": "CC-BY-SA-2.0",
       "seeAlso": [
@@ -1132,7 +1132,7 @@
       "reference": "./CC-BY-SA-2.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-2.5.json",
-      "referenceNumber": "203",
+      "referenceNumber": "211",
       "name": "Creative Commons Attribution Share Alike 2.5 Generic",
       "licenseId": "CC-BY-SA-2.5",
       "seeAlso": [
@@ -1144,7 +1144,7 @@
       "reference": "./CC-BY-SA-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-3.0.json",
-      "referenceNumber": "233",
+      "referenceNumber": "241",
       "name": "Creative Commons Attribution Share Alike 3.0 Unported",
       "licenseId": "CC-BY-SA-3.0",
       "seeAlso": [
@@ -1157,7 +1157,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/CC-BY-SA-4.0.json",
-      "referenceNumber": "297",
+      "referenceNumber": "306",
       "name": "Creative Commons Attribution Share Alike 4.0 International",
       "licenseId": "CC-BY-SA-4.0",
       "seeAlso": [
@@ -1169,7 +1169,7 @@
       "reference": "./CC-PDDC.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CC-PDDC.json",
-      "referenceNumber": "92",
+      "referenceNumber": "94",
       "name": "Creative Commons Public Domain Dedication and Certification",
       "licenseId": "CC-PDDC",
       "seeAlso": [
@@ -1182,7 +1182,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/CC0-1.0.json",
-      "referenceNumber": "66",
+      "referenceNumber": "67",
       "name": "Creative Commons Zero v1.0 Universal",
       "licenseId": "CC0-1.0",
       "seeAlso": [
@@ -1195,7 +1195,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/CDDL-1.0.json",
-      "referenceNumber": "335",
+      "referenceNumber": "346",
       "name": "Common Development and Distribution License 1.0",
       "licenseId": "CDDL-1.0",
       "seeAlso": [
@@ -1207,7 +1207,7 @@
       "reference": "./CDDL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CDDL-1.1.json",
-      "referenceNumber": "283",
+      "referenceNumber": "292",
       "name": "Common Development and Distribution License 1.1",
       "licenseId": "CDDL-1.1",
       "seeAlso": [
@@ -1220,7 +1220,7 @@
       "reference": "./CDLA-Permissive-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CDLA-Permissive-1.0.json",
-      "referenceNumber": "108",
+      "referenceNumber": "110",
       "name": "Community Data License Agreement Permissive 1.0",
       "licenseId": "CDLA-Permissive-1.0",
       "seeAlso": [
@@ -1232,7 +1232,7 @@
       "reference": "./CDLA-Sharing-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CDLA-Sharing-1.0.json",
-      "referenceNumber": "178",
+      "referenceNumber": "182",
       "name": "Community Data License Agreement Sharing 1.0",
       "licenseId": "CDLA-Sharing-1.0",
       "seeAlso": [
@@ -1244,7 +1244,7 @@
       "reference": "./CECILL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CECILL-1.0.json",
-      "referenceNumber": "10",
+      "referenceNumber": "11",
       "name": "CeCILL Free Software License Agreement v1.0",
       "licenseId": "CECILL-1.0",
       "seeAlso": [
@@ -1256,7 +1256,7 @@
       "reference": "./CECILL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CECILL-1.1.json",
-      "referenceNumber": "135",
+      "referenceNumber": "137",
       "name": "CeCILL Free Software License Agreement v1.1",
       "licenseId": "CECILL-1.1",
       "seeAlso": [
@@ -1281,7 +1281,7 @@
       "reference": "./CECILL-2.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CECILL-2.1.json",
-      "referenceNumber": "145",
+      "referenceNumber": "147",
       "name": "CeCILL Free Software License Agreement v2.1",
       "licenseId": "CECILL-2.1",
       "seeAlso": [
@@ -1294,7 +1294,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/CECILL-B.json",
-      "referenceNumber": "93",
+      "referenceNumber": "95",
       "name": "CeCILL-B Free Software License Agreement",
       "licenseId": "CECILL-B",
       "seeAlso": [
@@ -1307,7 +1307,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/CECILL-C.json",
-      "referenceNumber": "240",
+      "referenceNumber": "248",
       "name": "CeCILL-C Free Software License Agreement",
       "licenseId": "CECILL-C",
       "seeAlso": [
@@ -1319,7 +1319,7 @@
       "reference": "./CERN-OHL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CERN-OHL-1.1.json",
-      "referenceNumber": "123",
+      "referenceNumber": "125",
       "name": "CERN Open Hardware Licence v1.1",
       "licenseId": "CERN-OHL-1.1",
       "seeAlso": [
@@ -1331,7 +1331,7 @@
       "reference": "./CERN-OHL-1.2.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CERN-OHL-1.2.json",
-      "referenceNumber": "167",
+      "referenceNumber": "170",
       "name": "CERN Open Hardware Licence v1.2",
       "licenseId": "CERN-OHL-1.2",
       "seeAlso": [
@@ -1343,7 +1343,7 @@
       "reference": "./CERN-OHL-P-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CERN-OHL-P-2.0.json",
-      "referenceNumber": "255",
+      "referenceNumber": "264",
       "name": "CERN Open Hardware Licence Version 2 - Permissive",
       "licenseId": "CERN-OHL-P-2.0",
       "seeAlso": [
@@ -1355,7 +1355,7 @@
       "reference": "./CERN-OHL-S-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CERN-OHL-S-2.0.json",
-      "referenceNumber": "47",
+      "referenceNumber": "48",
       "name": "CERN Open Hardware Licence Version 2 - Strongly Reciprocal",
       "licenseId": "CERN-OHL-S-2.0",
       "seeAlso": [
@@ -1367,7 +1367,7 @@
       "reference": "./CERN-OHL-W-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CERN-OHL-W-2.0.json",
-      "referenceNumber": "267",
+      "referenceNumber": "276",
       "name": "CERN Open Hardware Licence Version 2 - Weakly Reciprocal",
       "licenseId": "CERN-OHL-W-2.0",
       "seeAlso": [
@@ -1379,7 +1379,7 @@
       "reference": "./CNRI-Jython.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CNRI-Jython.json",
-      "referenceNumber": "77",
+      "referenceNumber": "78",
       "name": "CNRI Jython License",
       "licenseId": "CNRI-Jython",
       "seeAlso": [
@@ -1391,7 +1391,7 @@
       "reference": "./CNRI-Python.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CNRI-Python.json",
-      "referenceNumber": "96",
+      "referenceNumber": "98",
       "name": "CNRI Python License",
       "licenseId": "CNRI-Python",
       "seeAlso": [
@@ -1403,7 +1403,7 @@
       "reference": "./CNRI-Python-GPL-Compatible.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CNRI-Python-GPL-Compatible.json",
-      "referenceNumber": "348",
+      "referenceNumber": "359",
       "name": "CNRI Python Open Source GPL Compatible License Agreement",
       "licenseId": "CNRI-Python-GPL-Compatible",
       "seeAlso": [
@@ -1416,7 +1416,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/CPAL-1.0.json",
-      "referenceNumber": "285",
+      "referenceNumber": "294",
       "name": "Common Public Attribution License 1.0",
       "licenseId": "CPAL-1.0",
       "seeAlso": [
@@ -1429,7 +1429,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/CPL-1.0.json",
-      "referenceNumber": "236",
+      "referenceNumber": "244",
       "name": "Common Public License 1.0",
       "licenseId": "CPL-1.0",
       "seeAlso": [
@@ -1441,7 +1441,7 @@
       "reference": "./CPOL-1.02.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CPOL-1.02.json",
-      "referenceNumber": "230",
+      "referenceNumber": "238",
       "name": "Code Project Open License 1.02",
       "licenseId": "CPOL-1.02",
       "seeAlso": [
@@ -1453,7 +1453,7 @@
       "reference": "./CUA-OPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CUA-OPL-1.0.json",
-      "referenceNumber": "165",
+      "referenceNumber": "168",
       "name": "CUA Office Public License v1.0",
       "licenseId": "CUA-OPL-1.0",
       "seeAlso": [
@@ -1465,7 +1465,7 @@
       "reference": "./Caldera.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Caldera.json",
-      "referenceNumber": "250",
+      "referenceNumber": "259",
       "name": "Caldera License",
       "licenseId": "Caldera",
       "seeAlso": [
@@ -1478,7 +1478,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/ClArtistic.json",
-      "referenceNumber": "245",
+      "referenceNumber": "254",
       "name": "Clarified Artistic License",
       "licenseId": "ClArtistic",
       "seeAlso": [
@@ -1492,7 +1492,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Condor-1.1.json",
-      "referenceNumber": "150",
+      "referenceNumber": "152",
       "name": "Condor Public License v1.1",
       "licenseId": "Condor-1.1",
       "seeAlso": [
@@ -1505,7 +1505,7 @@
       "reference": "./Crossword.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Crossword.json",
-      "referenceNumber": "101",
+      "referenceNumber": "103",
       "name": "Crossword License",
       "licenseId": "Crossword",
       "seeAlso": [
@@ -1517,7 +1517,7 @@
       "reference": "./CrystalStacker.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/CrystalStacker.json",
-      "referenceNumber": "38",
+      "referenceNumber": "39",
       "name": "CrystalStacker License",
       "licenseId": "CrystalStacker",
       "seeAlso": [
@@ -1529,7 +1529,7 @@
       "reference": "./Cube.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Cube.json",
-      "referenceNumber": "391",
+      "referenceNumber": "403",
       "name": "Cube License",
       "licenseId": "Cube",
       "seeAlso": [
@@ -1541,7 +1541,7 @@
       "reference": "./D-FSL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/D-FSL-1.0.json",
-      "referenceNumber": "358",
+      "referenceNumber": "369",
       "name": "Deutsche Freie Software Lizenz",
       "licenseId": "D-FSL-1.0",
       "seeAlso": [
@@ -1560,7 +1560,7 @@
       "reference": "./DOC.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/DOC.json",
-      "referenceNumber": "275",
+      "referenceNumber": "284",
       "name": "DOC License",
       "licenseId": "DOC",
       "seeAlso": [
@@ -1572,7 +1572,7 @@
       "reference": "./DSDP.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/DSDP.json",
-      "referenceNumber": "266",
+      "referenceNumber": "275",
       "name": "DSDP License",
       "licenseId": "DSDP",
       "seeAlso": [
@@ -1584,7 +1584,7 @@
       "reference": "./Dotseqn.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Dotseqn.json",
-      "referenceNumber": "33",
+      "referenceNumber": "34",
       "name": "Dotseqn License",
       "licenseId": "Dotseqn",
       "seeAlso": [
@@ -1596,7 +1596,7 @@
       "reference": "./ECL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/ECL-1.0.json",
-      "referenceNumber": "418",
+      "referenceNumber": "431",
       "name": "Educational Community License v1.0",
       "licenseId": "ECL-1.0",
       "seeAlso": [
@@ -1621,7 +1621,7 @@
       "reference": "./EFL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/EFL-1.0.json",
-      "referenceNumber": "76",
+      "referenceNumber": "77",
       "name": "Eiffel Forum License v1.0",
       "licenseId": "EFL-1.0",
       "seeAlso": [
@@ -1635,7 +1635,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/EFL-2.0.json",
-      "referenceNumber": "7",
+      "referenceNumber": "8",
       "name": "Eiffel Forum License v2.0",
       "licenseId": "EFL-2.0",
       "seeAlso": [
@@ -1644,12 +1644,24 @@
       ],
       "isOsiApproved": true
     },
+    {
+      "reference": "./EPICS.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/EPICS.json",
+      "referenceNumber": "370",
+      "name": "EPICS Open License",
+      "licenseId": "EPICS",
+      "seeAlso": [
+        "https://epics.anl.gov/license/open.php"
+      ],
+      "isOsiApproved": false
+    },
     {
       "reference": "./EPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/EPL-1.0.json",
-      "referenceNumber": "277",
+      "referenceNumber": "286",
       "name": "Eclipse Public License 1.0",
       "licenseId": "EPL-1.0",
       "seeAlso": [
@@ -1663,7 +1675,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/EPL-2.0.json",
-      "referenceNumber": "416",
+      "referenceNumber": "429",
       "name": "Eclipse Public License 2.0",
       "licenseId": "EPL-2.0",
       "seeAlso": [
@@ -1677,7 +1689,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/EUDatagrid.json",
-      "referenceNumber": "263",
+      "referenceNumber": "272",
       "name": "EU DataGrid Software License",
       "licenseId": "EUDatagrid",
       "seeAlso": [
@@ -1690,7 +1702,7 @@
       "reference": "./EUPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/EUPL-1.0.json",
-      "referenceNumber": "98",
+      "referenceNumber": "100",
       "name": "European Union Public License 1.0",
       "licenseId": "EUPL-1.0",
       "seeAlso": [
@@ -1704,7 +1716,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/EUPL-1.1.json",
-      "referenceNumber": "409",
+      "referenceNumber": "422",
       "name": "European Union Public License 1.1",
       "licenseId": "EUPL-1.1",
       "seeAlso": [
@@ -1719,7 +1731,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/EUPL-1.2.json",
-      "referenceNumber": "271",
+      "referenceNumber": "280",
       "name": "European Union Public License 1.2",
       "licenseId": "EUPL-1.2",
       "seeAlso": [
@@ -1735,7 +1747,7 @@
       "reference": "./Entessa.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Entessa.json",
-      "referenceNumber": "386",
+      "referenceNumber": "398",
       "name": "Entessa Public License v1.0",
       "licenseId": "Entessa",
       "seeAlso": [
@@ -1747,7 +1759,7 @@
       "reference": "./ErlPL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/ErlPL-1.1.json",
-      "referenceNumber": "408",
+      "referenceNumber": "420",
       "name": "Erlang Public License v1.1",
       "licenseId": "ErlPL-1.1",
       "seeAlso": [
@@ -1759,7 +1771,7 @@
       "reference": "./Eurosym.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Eurosym.json",
-      "referenceNumber": "171",
+      "referenceNumber": "174",
       "name": "Eurosym License",
       "licenseId": "Eurosym",
       "seeAlso": [
@@ -1772,7 +1784,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/FSFAP.json",
-      "referenceNumber": "394",
+      "referenceNumber": "406",
       "name": "FSF All Permissive License",
       "licenseId": "FSFAP",
       "seeAlso": [
@@ -1796,7 +1808,7 @@
       "reference": "./FSFULLR.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/FSFULLR.json",
-      "referenceNumber": "308",
+      "referenceNumber": "319",
       "name": "FSF Unlimited License (with License Retention)",
       "licenseId": "FSFULLR",
       "seeAlso": [
@@ -1809,7 +1821,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/FTL.json",
-      "referenceNumber": "374",
+      "referenceNumber": "386",
       "name": "Freetype Project License",
       "licenseId": "FTL",
       "seeAlso": [
@@ -1822,7 +1834,7 @@
       "reference": "./Fair.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Fair.json",
-      "referenceNumber": "262",
+      "referenceNumber": "271",
       "name": "Fair License",
       "licenseId": "Fair",
       "seeAlso": [
@@ -1835,7 +1847,7 @@
       "reference": "./Frameworx-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Frameworx-1.0.json",
-      "referenceNumber": "373",
+      "referenceNumber": "385",
       "name": "Frameworx Open License 1.0",
       "licenseId": "Frameworx-1.0",
       "seeAlso": [
@@ -1847,7 +1859,7 @@
       "reference": "./FreeImage.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/FreeImage.json",
-      "referenceNumber": "370",
+      "referenceNumber": "382",
       "name": "FreeImage Public License v1.0",
       "licenseId": "FreeImage",
       "seeAlso": [
@@ -1860,7 +1872,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.1.json",
-      "referenceNumber": "257",
+      "referenceNumber": "266",
       "name": "GNU Free Documentation License v1.1",
       "licenseId": "GFDL-1.1",
       "seeAlso": [
@@ -1868,12 +1880,60 @@
       ],
       "isOsiApproved": false
     },
+    {
+      "reference": "./GFDL-1.1-invariants-only.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.1-invariants-only.json",
+      "referenceNumber": "203",
+      "name": "GNU Free Documentation License v1.1 only - invariants",
+      "licenseId": "GFDL-1.1-invariants-only",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.1-invariants-or-later.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.1-invariants-or-later.json",
+      "referenceNumber": "83",
+      "name": "GNU Free Documentation License v1.1 or later - invariants",
+      "licenseId": "GFDL-1.1-invariants-or-later",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.1-no-invariants-only.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.1-no-invariants-only.json",
+      "referenceNumber": "7",
+      "name": "GNU Free Documentation License v1.1 only - no invariants",
+      "licenseId": "GFDL-1.1-no-invariants-only",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.1-no-invariants-or-later.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json",
+      "referenceNumber": "251",
+      "name": "GNU Free Documentation License v1.1 or later - no invariants",
+      "licenseId": "GFDL-1.1-no-invariants-or-later",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt"
+      ],
+      "isOsiApproved": false
+    },
     {
       "reference": "./GFDL-1.1-only.html",
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.1-only.json",
-      "referenceNumber": "104",
+      "referenceNumber": "106",
       "name": "GNU Free Documentation License v1.1 only",
       "licenseId": "GFDL-1.1-only",
       "seeAlso": [
@@ -1886,7 +1946,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.1-or-later.json",
-      "referenceNumber": "124",
+      "referenceNumber": "126",
       "name": "GNU Free Documentation License v1.1 or later",
       "licenseId": "GFDL-1.1-or-later",
       "seeAlso": [
@@ -1899,7 +1959,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.2.json",
-      "referenceNumber": "197",
+      "referenceNumber": "204",
       "name": "GNU Free Documentation License v1.2",
       "licenseId": "GFDL-1.2",
       "seeAlso": [
@@ -1907,12 +1967,60 @@
       ],
       "isOsiApproved": false
     },
+    {
+      "reference": "./GFDL-1.2-invariants-only.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.2-invariants-only.json",
+      "referenceNumber": "206",
+      "name": "GNU Free Documentation License v1.2 only - invariants",
+      "licenseId": "GFDL-1.2-invariants-only",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.2-invariants-or-later.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.2-invariants-or-later.json",
+      "referenceNumber": "421",
+      "name": "GNU Free Documentation License v1.2 or later - invariants",
+      "licenseId": "GFDL-1.2-invariants-or-later",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.2-no-invariants-only.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.2-no-invariants-only.json",
+      "referenceNumber": "318",
+      "name": "GNU Free Documentation License v1.2 only - no invariants",
+      "licenseId": "GFDL-1.2-no-invariants-only",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.2-no-invariants-or-later.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json",
+      "referenceNumber": "193",
+      "name": "GNU Free Documentation License v1.2 or later - no invariants",
+      "licenseId": "GFDL-1.2-no-invariants-or-later",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt"
+      ],
+      "isOsiApproved": false
+    },
     {
       "reference": "./GFDL-1.2-only.html",
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.2-only.json",
-      "referenceNumber": "90",
+      "referenceNumber": "92",
       "name": "GNU Free Documentation License v1.2 only",
       "licenseId": "GFDL-1.2-only",
       "seeAlso": [
@@ -1925,7 +2033,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.2-or-later.json",
-      "referenceNumber": "132",
+      "referenceNumber": "134",
       "name": "GNU Free Documentation License v1.2 or later",
       "licenseId": "GFDL-1.2-or-later",
       "seeAlso": [
@@ -1938,7 +2046,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.3.json",
-      "referenceNumber": "365",
+      "referenceNumber": "377",
       "name": "GNU Free Documentation License v1.3",
       "licenseId": "GFDL-1.3",
       "seeAlso": [
@@ -1946,12 +2054,60 @@
       ],
       "isOsiApproved": false
     },
+    {
+      "reference": "./GFDL-1.3-invariants-only.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.3-invariants-only.json",
+      "referenceNumber": "185",
+      "name": "GNU Free Documentation License v1.3 only - invariants",
+      "licenseId": "GFDL-1.3-invariants-only",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/fdl-1.3.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.3-invariants-or-later.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.3-invariants-or-later.json",
+      "referenceNumber": "314",
+      "name": "GNU Free Documentation License v1.3 or later - invariants",
+      "licenseId": "GFDL-1.3-invariants-or-later",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/fdl-1.3.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.3-no-invariants-only.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.3-no-invariants-only.json",
+      "referenceNumber": "181",
+      "name": "GNU Free Documentation License v1.3 only - no invariants",
+      "licenseId": "GFDL-1.3-no-invariants-only",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/fdl-1.3.txt"
+      ],
+      "isOsiApproved": false
+    },
+    {
+      "reference": "./GFDL-1.3-no-invariants-or-later.html",
+      "isDeprecatedLicenseId": false,
+      "detailsUrl": "http://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json",
+      "referenceNumber": "165",
+      "name": "GNU Free Documentation License v1.3 or later - no invariants",
+      "licenseId": "GFDL-1.3-no-invariants-or-later",
+      "seeAlso": [
+        "https://www.gnu.org/licenses/fdl-1.3.txt"
+      ],
+      "isOsiApproved": false
+    },
     {
       "reference": "./GFDL-1.3-only.html",
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.3-only.json",
-      "referenceNumber": "200",
+      "referenceNumber": "208",
       "name": "GNU Free Documentation License v1.3 only",
       "licenseId": "GFDL-1.3-only",
       "seeAlso": [
@@ -1964,7 +2120,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GFDL-1.3-or-later.json",
-      "referenceNumber": "53",
+      "referenceNumber": "54",
       "name": "GNU Free Documentation License v1.3 or later",
       "licenseId": "GFDL-1.3-or-later",
       "seeAlso": [
@@ -1976,7 +2132,7 @@
       "reference": "./GL2PS.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/GL2PS.json",
-      "referenceNumber": "314",
+      "referenceNumber": "325",
       "name": "GL2PS License",
       "licenseId": "GL2PS",
       "seeAlso": [
@@ -1988,7 +2144,7 @@
       "reference": "./GPL-1.0.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-1.0.json",
-      "referenceNumber": "330",
+      "referenceNumber": "341",
       "name": "GNU General Public License v1.0 only",
       "licenseId": "GPL-1.0",
       "seeAlso": [
@@ -2000,7 +2156,7 @@
       "reference": "./GPL-1.0+.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-1.0+.json",
-      "referenceNumber": "205",
+      "referenceNumber": "213",
       "name": "GNU General Public License v1.0 or later",
       "licenseId": "GPL-1.0+",
       "seeAlso": [
@@ -2012,7 +2168,7 @@
       "reference": "./GPL-1.0-only.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/GPL-1.0-only.json",
-      "referenceNumber": "15",
+      "referenceNumber": "16",
       "name": "GNU General Public License v1.0 only",
       "licenseId": "GPL-1.0-only",
       "seeAlso": [
@@ -2024,7 +2180,7 @@
       "reference": "./GPL-1.0-or-later.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/GPL-1.0-or-later.json",
-      "referenceNumber": "134",
+      "referenceNumber": "136",
       "name": "GNU General Public License v1.0 or later",
       "licenseId": "GPL-1.0-or-later",
       "seeAlso": [
@@ -2037,7 +2193,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0.json",
-      "referenceNumber": "356",
+      "referenceNumber": "367",
       "name": "GNU General Public License v2.0 only",
       "licenseId": "GPL-2.0",
       "seeAlso": [
@@ -2051,7 +2207,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0+.json",
-      "referenceNumber": "401",
+      "referenceNumber": "413",
       "name": "GNU General Public License v2.0 or later",
       "licenseId": "GPL-2.0+",
       "seeAlso": [
@@ -2065,7 +2221,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0-only.json",
-      "referenceNumber": "235",
+      "referenceNumber": "243",
       "name": "GNU General Public License v2.0 only",
       "licenseId": "GPL-2.0-only",
       "seeAlso": [
@@ -2079,7 +2235,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0-or-later.json",
-      "referenceNumber": "258",
+      "referenceNumber": "267",
       "name": "GNU General Public License v2.0 or later",
       "licenseId": "GPL-2.0-or-later",
       "seeAlso": [
@@ -2092,7 +2248,7 @@
       "reference": "./GPL-2.0-with-GCC-exception.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-GCC-exception.json",
-      "referenceNumber": "340",
+      "referenceNumber": "351",
       "name": "GNU General Public License v2.0 w/GCC Runtime Library exception",
       "licenseId": "GPL-2.0-with-GCC-exception",
       "seeAlso": [
@@ -2104,7 +2260,7 @@
       "reference": "./GPL-2.0-with-autoconf-exception.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json",
-      "referenceNumber": "36",
+      "referenceNumber": "37",
       "name": "GNU General Public License v2.0 w/Autoconf exception",
       "licenseId": "GPL-2.0-with-autoconf-exception",
       "seeAlso": [
@@ -2116,7 +2272,7 @@
       "reference": "./GPL-2.0-with-bison-exception.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-bison-exception.json",
-      "referenceNumber": "371",
+      "referenceNumber": "383",
       "name": "GNU General Public License v2.0 w/Bison exception",
       "licenseId": "GPL-2.0-with-bison-exception",
       "seeAlso": [
@@ -2128,7 +2284,7 @@
       "reference": "./GPL-2.0-with-classpath-exception.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-classpath-exception.json",
-      "referenceNumber": "227",
+      "referenceNumber": "235",
       "name": "GNU General Public License v2.0 w/Classpath exception",
       "licenseId": "GPL-2.0-with-classpath-exception",
       "seeAlso": [
@@ -2140,7 +2296,7 @@
       "reference": "./GPL-2.0-with-font-exception.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-2.0-with-font-exception.json",
-      "referenceNumber": "24",
+      "referenceNumber": "25",
       "name": "GNU General Public License v2.0 w/Font exception",
       "licenseId": "GPL-2.0-with-font-exception",
       "seeAlso": [
@@ -2153,7 +2309,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-3.0.json",
-      "referenceNumber": "414",
+      "referenceNumber": "427",
       "name": "GNU General Public License v3.0 only",
       "licenseId": "GPL-3.0",
       "seeAlso": [
@@ -2167,7 +2323,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-3.0+.json",
-      "referenceNumber": "152",
+      "referenceNumber": "154",
       "name": "GNU General Public License v3.0 or later",
       "licenseId": "GPL-3.0+",
       "seeAlso": [
@@ -2181,7 +2337,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-3.0-only.json",
-      "referenceNumber": "127",
+      "referenceNumber": "129",
       "name": "GNU General Public License v3.0 only",
       "licenseId": "GPL-3.0-only",
       "seeAlso": [
@@ -2195,7 +2351,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-3.0-or-later.json",
-      "referenceNumber": "399",
+      "referenceNumber": "411",
       "name": "GNU General Public License v3.0 or later",
       "licenseId": "GPL-3.0-or-later",
       "seeAlso": [
@@ -2220,7 +2376,7 @@
       "reference": "./GPL-3.0-with-autoconf-exception.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json",
-      "referenceNumber": "8",
+      "referenceNumber": "9",
       "name": "GNU General Public License v3.0 w/Autoconf exception",
       "licenseId": "GPL-3.0-with-autoconf-exception",
       "seeAlso": [
@@ -2232,7 +2388,7 @@
       "reference": "./Giftware.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Giftware.json",
-      "referenceNumber": "379",
+      "referenceNumber": "391",
       "name": "Giftware License",
       "licenseId": "Giftware",
       "seeAlso": [
@@ -2244,7 +2400,7 @@
       "reference": "./Glide.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Glide.json",
-      "referenceNumber": "121",
+      "referenceNumber": "123",
       "name": "3dfx Glide License",
       "licenseId": "Glide",
       "seeAlso": [
@@ -2256,7 +2412,7 @@
       "reference": "./Glulxe.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Glulxe.json",
-      "referenceNumber": "206",
+      "referenceNumber": "214",
       "name": "Glulxe License",
       "licenseId": "Glulxe",
       "seeAlso": [
@@ -2269,7 +2425,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/HPND.json",
-      "referenceNumber": "154",
+      "referenceNumber": "156",
       "name": "Historical Permission Notice and Disclaimer",
       "licenseId": "HPND",
       "seeAlso": [
@@ -2281,7 +2437,7 @@
       "reference": "./HPND-sell-variant.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/HPND-sell-variant.json",
-      "referenceNumber": "164",
+      "referenceNumber": "167",
       "name": "Historical Permission Notice and Disclaimer - sell variant",
       "licenseId": "HPND-sell-variant",
       "seeAlso": [
@@ -2293,7 +2449,7 @@
       "reference": "./HaskellReport.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/HaskellReport.json",
-      "referenceNumber": "212",
+      "referenceNumber": "220",
       "name": "Haskell Language Report License",
       "licenseId": "HaskellReport",
       "seeAlso": [
@@ -2305,7 +2461,7 @@
       "reference": "./Hippocratic-2.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Hippocratic-2.1.json",
-      "referenceNumber": "185",
+      "referenceNumber": "190",
       "name": "Hippocratic License 2.1",
       "licenseId": "Hippocratic-2.1",
       "seeAlso": [
@@ -2318,7 +2474,7 @@
       "reference": "./IBM-pibs.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/IBM-pibs.json",
-      "referenceNumber": "241",
+      "referenceNumber": "249",
       "name": "IBM PowerPC Initialization and Boot Software",
       "licenseId": "IBM-pibs",
       "seeAlso": [
@@ -2330,7 +2486,7 @@
       "reference": "./ICU.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/ICU.json",
-      "referenceNumber": "180",
+      "referenceNumber": "184",
       "name": "ICU License",
       "licenseId": "ICU",
       "seeAlso": [
@@ -2343,7 +2499,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/IJG.json",
-      "referenceNumber": "244",
+      "referenceNumber": "253",
       "name": "Independent JPEG Group License",
       "licenseId": "IJG",
       "seeAlso": [
@@ -2356,7 +2512,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/IPA.json",
-      "referenceNumber": "321",
+      "referenceNumber": "332",
       "name": "IPA Font License",
       "licenseId": "IPA",
       "seeAlso": [
@@ -2369,7 +2525,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/IPL-1.0.json",
-      "referenceNumber": "320",
+      "referenceNumber": "331",
       "name": "IBM Public License v1.0",
       "licenseId": "IPL-1.0",
       "seeAlso": [
@@ -2382,7 +2538,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/ISC.json",
-      "referenceNumber": "364",
+      "referenceNumber": "376",
       "name": "ISC License",
       "licenseId": "ISC",
       "seeAlso": [
@@ -2395,7 +2551,7 @@
       "reference": "./ImageMagick.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/ImageMagick.json",
-      "referenceNumber": "337",
+      "referenceNumber": "348",
       "name": "ImageMagick License",
       "licenseId": "ImageMagick",
       "seeAlso": [
@@ -2408,7 +2564,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Imlib2.json",
-      "referenceNumber": "140",
+      "referenceNumber": "142",
       "name": "Imlib2 License",
       "licenseId": "Imlib2",
       "seeAlso": [
@@ -2421,7 +2577,7 @@
       "reference": "./Info-ZIP.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Info-ZIP.json",
-      "referenceNumber": "294",
+      "referenceNumber": "303",
       "name": "Info-ZIP License",
       "licenseId": "Info-ZIP",
       "seeAlso": [
@@ -2434,7 +2590,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Intel.json",
-      "referenceNumber": "29",
+      "referenceNumber": "30",
       "name": "Intel Open Source License",
       "licenseId": "Intel",
       "seeAlso": [
@@ -2446,7 +2602,7 @@
       "reference": "./Intel-ACPI.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Intel-ACPI.json",
-      "referenceNumber": "243",
+      "referenceNumber": "252",
       "name": "Intel ACPI Software License Agreement",
       "licenseId": "Intel-ACPI",
       "seeAlso": [
@@ -2458,7 +2614,7 @@
       "reference": "./Interbase-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Interbase-1.0.json",
-      "referenceNumber": "334",
+      "referenceNumber": "345",
       "name": "Interbase Public License v1.0",
       "licenseId": "Interbase-1.0",
       "seeAlso": [
@@ -2470,7 +2626,7 @@
       "reference": "./JPNIC.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/JPNIC.json",
-      "referenceNumber": "327",
+      "referenceNumber": "338",
       "name": "Japan Network Information Center License",
       "licenseId": "JPNIC",
       "seeAlso": [
@@ -2482,7 +2638,7 @@
       "reference": "./JSON.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/JSON.json",
-      "referenceNumber": "204",
+      "referenceNumber": "212",
       "name": "JSON License",
       "licenseId": "JSON",
       "seeAlso": [
@@ -2494,7 +2650,7 @@
       "reference": "./JasPer-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/JasPer-2.0.json",
-      "referenceNumber": "81",
+      "referenceNumber": "82",
       "name": "JasPer License",
       "licenseId": "JasPer-2.0",
       "seeAlso": [
@@ -2506,7 +2662,7 @@
       "reference": "./LAL-1.2.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LAL-1.2.json",
-      "referenceNumber": "159",
+      "referenceNumber": "161",
       "name": "Licence Art Libre 1.2",
       "licenseId": "LAL-1.2",
       "seeAlso": [
@@ -2518,7 +2674,7 @@
       "reference": "./LAL-1.3.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LAL-1.3.json",
-      "referenceNumber": "368",
+      "referenceNumber": "380",
       "name": "Licence Art Libre 1.3",
       "licenseId": "LAL-1.3",
       "seeAlso": [
@@ -2530,7 +2686,7 @@
       "reference": "./LGPL-2.0.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-2.0.json",
-      "referenceNumber": "286",
+      "referenceNumber": "295",
       "name": "GNU Library General Public License v2 only",
       "licenseId": "LGPL-2.0",
       "seeAlso": [
@@ -2542,7 +2698,7 @@
       "reference": "./LGPL-2.0+.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-2.0+.json",
-      "referenceNumber": "144",
+      "referenceNumber": "146",
       "name": "GNU Library General Public License v2 or later",
       "licenseId": "LGPL-2.0+",
       "seeAlso": [
@@ -2554,7 +2710,7 @@
       "reference": "./LGPL-2.0-only.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LGPL-2.0-only.json",
-      "referenceNumber": "339",
+      "referenceNumber": "350",
       "name": "GNU Library General Public License v2 only",
       "licenseId": "LGPL-2.0-only",
       "seeAlso": [
@@ -2566,7 +2722,7 @@
       "reference": "./LGPL-2.0-or-later.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LGPL-2.0-or-later.json",
-      "referenceNumber": "35",
+      "referenceNumber": "36",
       "name": "GNU Library General Public License v2 or later",
       "licenseId": "LGPL-2.0-or-later",
       "seeAlso": [
@@ -2579,7 +2735,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-2.1.json",
-      "referenceNumber": "189",
+      "referenceNumber": "195",
       "name": "GNU Lesser General Public License v2.1 only",
       "licenseId": "LGPL-2.1",
       "seeAlso": [
@@ -2593,7 +2749,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-2.1+.json",
-      "referenceNumber": "209",
+      "referenceNumber": "217",
       "name": "GNU Library General Public License v2.1 or later",
       "licenseId": "LGPL-2.1+",
       "seeAlso": [
@@ -2607,7 +2763,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-2.1-only.json",
-      "referenceNumber": "143",
+      "referenceNumber": "145",
       "name": "GNU Lesser General Public License v2.1 only",
       "licenseId": "LGPL-2.1-only",
       "seeAlso": [
@@ -2621,7 +2777,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-2.1-or-later.json",
-      "referenceNumber": "279",
+      "referenceNumber": "288",
       "name": "GNU Lesser General Public License v2.1 or later",
       "licenseId": "LGPL-2.1-or-later",
       "seeAlso": [
@@ -2635,7 +2791,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-3.0.json",
-      "referenceNumber": "216",
+      "referenceNumber": "224",
       "name": "GNU Lesser General Public License v3.0 only",
       "licenseId": "LGPL-3.0",
       "seeAlso": [
@@ -2649,7 +2805,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-3.0+.json",
-      "referenceNumber": "228",
+      "referenceNumber": "236",
       "name": "GNU Lesser General Public License v3.0 or later",
       "licenseId": "LGPL-3.0+",
       "seeAlso": [
@@ -2663,7 +2819,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-3.0-only.json",
-      "referenceNumber": "49",
+      "referenceNumber": "50",
       "name": "GNU Lesser General Public License v3.0 only",
       "licenseId": "LGPL-3.0-only",
       "seeAlso": [
@@ -2677,7 +2833,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LGPL-3.0-or-later.json",
-      "referenceNumber": "328",
+      "referenceNumber": "339",
       "name": "GNU Lesser General Public License v3.0 or later",
       "licenseId": "LGPL-3.0-or-later",
       "seeAlso": [
@@ -2690,7 +2846,7 @@
       "reference": "./LGPLLR.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LGPLLR.json",
-      "referenceNumber": "417",
+      "referenceNumber": "430",
       "name": "Lesser General Public License For Linguistic Resources",
       "licenseId": "LGPLLR",
       "seeAlso": [
@@ -2702,7 +2858,7 @@
       "reference": "./LPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LPL-1.0.json",
-      "referenceNumber": "383",
+      "referenceNumber": "395",
       "name": "Lucent Public License Version 1.0",
       "licenseId": "LPL-1.0",
       "seeAlso": [
@@ -2715,7 +2871,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LPL-1.02.json",
-      "referenceNumber": "125",
+      "referenceNumber": "127",
       "name": "Lucent Public License v1.02",
       "licenseId": "LPL-1.02",
       "seeAlso": [
@@ -2728,7 +2884,7 @@
       "reference": "./LPPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LPPL-1.0.json",
-      "referenceNumber": "86",
+      "referenceNumber": "88",
       "name": "LaTeX Project Public License v1.0",
       "licenseId": "LPPL-1.0",
       "seeAlso": [
@@ -2740,7 +2896,7 @@
       "reference": "./LPPL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LPPL-1.1.json",
-      "referenceNumber": "174",
+      "referenceNumber": "177",
       "name": "LaTeX Project Public License v1.1",
       "licenseId": "LPPL-1.1",
       "seeAlso": [
@@ -2753,7 +2909,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LPPL-1.2.json",
-      "referenceNumber": "166",
+      "referenceNumber": "169",
       "name": "LaTeX Project Public License v1.2",
       "licenseId": "LPPL-1.2",
       "seeAlso": [
@@ -2766,7 +2922,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/LPPL-1.3a.json",
-      "referenceNumber": "280",
+      "referenceNumber": "289",
       "name": "LaTeX Project Public License v1.3a",
       "licenseId": "LPPL-1.3a",
       "seeAlso": [
@@ -2778,7 +2934,7 @@
       "reference": "./LPPL-1.3c.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LPPL-1.3c.json",
-      "referenceNumber": "131",
+      "referenceNumber": "133",
       "name": "LaTeX Project Public License v1.3c",
       "licenseId": "LPPL-1.3c",
       "seeAlso": [
@@ -2791,7 +2947,7 @@
       "reference": "./Latex2e.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Latex2e.json",
-      "referenceNumber": "37",
+      "referenceNumber": "38",
       "name": "Latex2e License",
       "licenseId": "Latex2e",
       "seeAlso": [
@@ -2803,7 +2959,7 @@
       "reference": "./Leptonica.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Leptonica.json",
-      "referenceNumber": "311",
+      "referenceNumber": "322",
       "name": "Leptonica License",
       "licenseId": "Leptonica",
       "seeAlso": [
@@ -2815,7 +2971,7 @@
       "reference": "./LiLiQ-P-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LiLiQ-P-1.1.json",
-      "referenceNumber": "83",
+      "referenceNumber": "85",
       "name": "Licence Libre du Québec – Permissive version 1.1",
       "licenseId": "LiLiQ-P-1.1",
       "seeAlso": [
@@ -2828,7 +2984,7 @@
       "reference": "./LiLiQ-R-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LiLiQ-R-1.1.json",
-      "referenceNumber": "301",
+      "referenceNumber": "310",
       "name": "Licence Libre du Québec – Réciprocité version 1.1",
       "licenseId": "LiLiQ-R-1.1",
       "seeAlso": [
@@ -2841,7 +2997,7 @@
       "reference": "./LiLiQ-Rplus-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/LiLiQ-Rplus-1.1.json",
-      "referenceNumber": "346",
+      "referenceNumber": "357",
       "name": "Licence Libre du Québec – Réciprocité forte version 1.1",
       "licenseId": "LiLiQ-Rplus-1.1",
       "seeAlso": [
@@ -2854,7 +3010,7 @@
       "reference": "./Libpng.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Libpng.json",
-      "referenceNumber": "388",
+      "referenceNumber": "400",
       "name": "libpng License",
       "licenseId": "Libpng",
       "seeAlso": [
@@ -2866,7 +3022,7 @@
       "reference": "./Linux-OpenIB.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Linux-OpenIB.json",
-      "referenceNumber": "224",
+      "referenceNumber": "232",
       "name": "Linux Kernel Variant of OpenIB.org license",
       "licenseId": "Linux-OpenIB",
       "seeAlso": [
@@ -2879,7 +3035,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/MIT.json",
-      "referenceNumber": "265",
+      "referenceNumber": "274",
       "name": "MIT License",
       "licenseId": "MIT",
       "seeAlso": [
@@ -2891,7 +3047,7 @@
       "reference": "./MIT-0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MIT-0.json",
-      "referenceNumber": "79",
+      "referenceNumber": "80",
       "name": "MIT No Attribution",
       "licenseId": "MIT-0",
       "seeAlso": [
@@ -2905,7 +3061,7 @@
       "reference": "./MIT-CMU.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MIT-CMU.json",
-      "referenceNumber": "355",
+      "referenceNumber": "366",
       "name": "CMU License",
       "licenseId": "MIT-CMU",
       "seeAlso": [
@@ -2918,7 +3074,7 @@
       "reference": "./MIT-advertising.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MIT-advertising.json",
-      "referenceNumber": "199",
+      "referenceNumber": "207",
       "name": "Enlightenment License (e16)",
       "licenseId": "MIT-advertising",
       "seeAlso": [
@@ -2930,7 +3086,7 @@
       "reference": "./MIT-enna.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MIT-enna.json",
-      "referenceNumber": "54",
+      "referenceNumber": "55",
       "name": "enna License",
       "licenseId": "MIT-enna",
       "seeAlso": [
@@ -2942,7 +3098,7 @@
       "reference": "./MIT-feh.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MIT-feh.json",
-      "referenceNumber": "376",
+      "referenceNumber": "388",
       "name": "feh License",
       "licenseId": "MIT-feh",
       "seeAlso": [
@@ -2954,7 +3110,7 @@
       "reference": "./MITNFA.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MITNFA.json",
-      "referenceNumber": "347",
+      "referenceNumber": "358",
       "name": "MIT +no-false-attribs license",
       "licenseId": "MITNFA",
       "seeAlso": [
@@ -2966,7 +3122,7 @@
       "reference": "./MPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MPL-1.0.json",
-      "referenceNumber": "247",
+      "referenceNumber": "256",
       "name": "Mozilla Public License 1.0",
       "licenseId": "MPL-1.0",
       "seeAlso": [
@@ -2980,7 +3136,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/MPL-1.1.json",
-      "referenceNumber": "407",
+      "referenceNumber": "419",
       "name": "Mozilla Public License 1.1",
       "licenseId": "MPL-1.1",
       "seeAlso": [
@@ -2994,7 +3150,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/MPL-2.0.json",
-      "referenceNumber": "126",
+      "referenceNumber": "128",
       "name": "Mozilla Public License 2.0",
       "licenseId": "MPL-2.0",
       "seeAlso": [
@@ -3007,7 +3163,7 @@
       "reference": "./MPL-2.0-no-copyleft-exception.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json",
-      "referenceNumber": "190",
+      "referenceNumber": "196",
       "name": "Mozilla Public License 2.0 (no copyleft exception)",
       "licenseId": "MPL-2.0-no-copyleft-exception",
       "seeAlso": [
@@ -3021,7 +3177,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/MS-PL.json",
-      "referenceNumber": "377",
+      "referenceNumber": "389",
       "name": "Microsoft Public License",
       "licenseId": "MS-PL",
       "seeAlso": [
@@ -3048,7 +3204,7 @@
       "reference": "./MTLL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MTLL.json",
-      "referenceNumber": "106",
+      "referenceNumber": "108",
       "name": "Matrix Template Library License",
       "licenseId": "MTLL",
       "seeAlso": [
@@ -3060,7 +3216,7 @@
       "reference": "./MakeIndex.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MakeIndex.json",
-      "referenceNumber": "354",
+      "referenceNumber": "365",
       "name": "MakeIndex License",
       "licenseId": "MakeIndex",
       "seeAlso": [
@@ -3072,7 +3228,7 @@
       "reference": "./MirOS.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MirOS.json",
-      "referenceNumber": "381",
+      "referenceNumber": "393",
       "name": "The MirOS Licence",
       "licenseId": "MirOS",
       "seeAlso": [
@@ -3084,7 +3240,7 @@
       "reference": "./Motosoto.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Motosoto.json",
-      "referenceNumber": "12",
+      "referenceNumber": "13",
       "name": "Motosoto License",
       "licenseId": "Motosoto",
       "seeAlso": [
@@ -3096,7 +3252,7 @@
       "reference": "./MulanPSL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MulanPSL-1.0.json",
-      "referenceNumber": "208",
+      "referenceNumber": "216",
       "name": "Mulan Permissive Software License, Version 1",
       "licenseId": "MulanPSL-1.0",
       "seeAlso": [
@@ -3109,7 +3265,7 @@
       "reference": "./MulanPSL-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/MulanPSL-2.0.json",
-      "referenceNumber": "153",
+      "referenceNumber": "155",
       "name": "Mulan Permissive Software License, Version 2",
       "licenseId": "MulanPSL-2.0",
       "seeAlso": [
@@ -3121,7 +3277,7 @@
       "reference": "./Multics.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Multics.json",
-      "referenceNumber": "170",
+      "referenceNumber": "173",
       "name": "Multics License",
       "licenseId": "Multics",
       "seeAlso": [
@@ -3133,7 +3289,7 @@
       "reference": "./Mup.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Mup.json",
-      "referenceNumber": "316",
+      "referenceNumber": "327",
       "name": "Mup License",
       "licenseId": "Mup",
       "seeAlso": [
@@ -3145,7 +3301,7 @@
       "reference": "./NASA-1.3.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NASA-1.3.json",
-      "referenceNumber": "114",
+      "referenceNumber": "116",
       "name": "NASA Open Source Agreement 1.3",
       "licenseId": "NASA-1.3",
       "seeAlso": [
@@ -3158,7 +3314,7 @@
       "reference": "./NBPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NBPL-1.0.json",
-      "referenceNumber": "17",
+      "referenceNumber": "18",
       "name": "Net Boolean Public License v1",
       "licenseId": "NBPL-1.0",
       "seeAlso": [
@@ -3170,7 +3326,7 @@
       "reference": "./NCGL-UK-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NCGL-UK-2.0.json",
-      "referenceNumber": "225",
+      "referenceNumber": "233",
       "name": "Non-Commercial Government Licence",
       "licenseId": "NCGL-UK-2.0",
       "seeAlso": [
@@ -3183,7 +3339,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/NCSA.json",
-      "referenceNumber": "194",
+      "referenceNumber": "200",
       "name": "University of Illinois/NCSA Open Source License",
       "licenseId": "NCSA",
       "seeAlso": [
@@ -3196,7 +3352,7 @@
       "reference": "./NGPL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NGPL.json",
-      "referenceNumber": "319",
+      "referenceNumber": "330",
       "name": "Nethack General Public License",
       "licenseId": "NGPL",
       "seeAlso": [
@@ -3208,7 +3364,7 @@
       "reference": "./NLOD-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NLOD-1.0.json",
-      "referenceNumber": "139",
+      "referenceNumber": "141",
       "name": "Norwegian Licence for Open Government Data",
       "licenseId": "NLOD-1.0",
       "seeAlso": [
@@ -3220,7 +3376,7 @@
       "reference": "./NLPL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NLPL.json",
-      "referenceNumber": "317",
+      "referenceNumber": "328",
       "name": "No Limit Public License",
       "licenseId": "NLPL",
       "seeAlso": [
@@ -3233,7 +3389,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/NOSL.json",
-      "referenceNumber": "392",
+      "referenceNumber": "404",
       "name": "Netizen Open Source License",
       "licenseId": "NOSL",
       "seeAlso": [
@@ -3246,7 +3402,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/NPL-1.0.json",
-      "referenceNumber": "253",
+      "referenceNumber": "262",
       "name": "Netscape Public License v1.0",
       "licenseId": "NPL-1.0",
       "seeAlso": [
@@ -3259,7 +3415,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/NPL-1.1.json",
-      "referenceNumber": "422",
+      "referenceNumber": "435",
       "name": "Netscape Public License v1.1",
       "licenseId": "NPL-1.1",
       "seeAlso": [
@@ -3271,7 +3427,7 @@
       "reference": "./NPOSL-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NPOSL-3.0.json",
-      "referenceNumber": "156",
+      "referenceNumber": "158",
       "name": "Non-Profit Open Software License 3.0",
       "licenseId": "NPOSL-3.0",
       "seeAlso": [
@@ -3283,7 +3439,7 @@
       "reference": "./NRL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NRL.json",
-      "referenceNumber": "105",
+      "referenceNumber": "107",
       "name": "NRL License",
       "licenseId": "NRL",
       "seeAlso": [
@@ -3295,7 +3451,7 @@
       "reference": "./NTP.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NTP.json",
-      "referenceNumber": "268",
+      "referenceNumber": "277",
       "name": "NTP License",
       "licenseId": "NTP",
       "seeAlso": [
@@ -3307,7 +3463,7 @@
       "reference": "./NTP-0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NTP-0.json",
-      "referenceNumber": "192",
+      "referenceNumber": "198",
       "name": "NTP No Attribution",
       "licenseId": "NTP-0",
       "seeAlso": [
@@ -3319,7 +3475,7 @@
       "reference": "./Naumen.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Naumen.json",
-      "referenceNumber": "293",
+      "referenceNumber": "302",
       "name": "Naumen Public License",
       "licenseId": "Naumen",
       "seeAlso": [
@@ -3331,7 +3487,7 @@
       "reference": "./Net-SNMP.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Net-SNMP.json",
-      "referenceNumber": "288",
+      "referenceNumber": "297",
       "name": "Net-SNMP License",
       "licenseId": "Net-SNMP",
       "seeAlso": [
@@ -3343,7 +3499,7 @@
       "reference": "./NetCDF.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/NetCDF.json",
-      "referenceNumber": "219",
+      "referenceNumber": "227",
       "name": "NetCDF license",
       "licenseId": "NetCDF",
       "seeAlso": [
@@ -3355,7 +3511,7 @@
       "reference": "./Newsletr.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Newsletr.json",
-      "referenceNumber": "369",
+      "referenceNumber": "381",
       "name": "Newsletr License",
       "licenseId": "Newsletr",
       "seeAlso": [
@@ -3368,7 +3524,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Nokia.json",
-      "referenceNumber": "130",
+      "referenceNumber": "132",
       "name": "Nokia Open Source License",
       "licenseId": "Nokia",
       "seeAlso": [
@@ -3380,7 +3536,7 @@
       "reference": "./Noweb.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Noweb.json",
-      "referenceNumber": "73",
+      "referenceNumber": "74",
       "name": "Noweb License",
       "licenseId": "Noweb",
       "seeAlso": [
@@ -3393,7 +3549,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Nunit.json",
-      "referenceNumber": "91",
+      "referenceNumber": "93",
       "name": "Nunit License",
       "licenseId": "Nunit",
       "seeAlso": [
@@ -3405,7 +3561,7 @@
       "reference": "./O-UDA-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/O-UDA-1.0.json",
-      "referenceNumber": "48",
+      "referenceNumber": "49",
       "name": "Open Use of Data Agreement v1.0",
       "licenseId": "O-UDA-1.0",
       "seeAlso": [
@@ -3417,7 +3573,7 @@
       "reference": "./OCCT-PL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OCCT-PL.json",
-      "referenceNumber": "68",
+      "referenceNumber": "69",
       "name": "Open CASCADE Technology Public License",
       "licenseId": "OCCT-PL",
       "seeAlso": [
@@ -3429,7 +3585,7 @@
       "reference": "./OCLC-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OCLC-2.0.json",
-      "referenceNumber": "352",
+      "referenceNumber": "363",
       "name": "OCLC Research Public License 2.0",
       "licenseId": "OCLC-2.0",
       "seeAlso": [
@@ -3442,7 +3598,7 @@
       "reference": "./ODC-By-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/ODC-By-1.0.json",
-      "referenceNumber": "393",
+      "referenceNumber": "405",
       "name": "Open Data Commons Attribution License v1.0",
       "licenseId": "ODC-By-1.0",
       "seeAlso": [
@@ -3455,7 +3611,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/ODbL-1.0.json",
-      "referenceNumber": "351",
+      "referenceNumber": "362",
       "name": "ODC Open Database License v1.0",
       "licenseId": "ODbL-1.0",
       "seeAlso": [
@@ -3468,7 +3624,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OFL-1.0.json",
-      "referenceNumber": "84",
+      "referenceNumber": "86",
       "name": "SIL Open Font License 1.0",
       "licenseId": "OFL-1.0",
       "seeAlso": [
@@ -3480,7 +3636,7 @@
       "reference": "./OFL-1.0-RFN.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OFL-1.0-RFN.json",
-      "referenceNumber": "309",
+      "referenceNumber": "320",
       "name": "SIL Open Font License 1.0 with Reserved Font Name",
       "licenseId": "OFL-1.0-RFN",
       "seeAlso": [
@@ -3492,7 +3648,7 @@
       "reference": "./OFL-1.0-no-RFN.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OFL-1.0-no-RFN.json",
-      "referenceNumber": "74",
+      "referenceNumber": "75",
       "name": "SIL Open Font License 1.0 with no Reserved Font Name",
       "licenseId": "OFL-1.0-no-RFN",
       "seeAlso": [
@@ -3505,7 +3661,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OFL-1.1.json",
-      "referenceNumber": "322",
+      "referenceNumber": "333",
       "name": "SIL Open Font License 1.1",
       "licenseId": "OFL-1.1",
       "seeAlso": [
@@ -3518,7 +3674,7 @@
       "reference": "./OFL-1.1-RFN.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OFL-1.1-RFN.json",
-      "referenceNumber": "43",
+      "referenceNumber": "44",
       "name": "SIL Open Font License 1.1 with Reserved Font Name",
       "licenseId": "OFL-1.1-RFN",
       "seeAlso": [
@@ -3531,7 +3687,7 @@
       "reference": "./OFL-1.1-no-RFN.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OFL-1.1-no-RFN.json",
-      "referenceNumber": "246",
+      "referenceNumber": "255",
       "name": "SIL Open Font License 1.1 with no Reserved Font Name",
       "licenseId": "OFL-1.1-no-RFN",
       "seeAlso": [
@@ -3544,7 +3700,7 @@
       "reference": "./OGC-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OGC-1.0.json",
-      "referenceNumber": "378",
+      "referenceNumber": "390",
       "name": "OGC Software License, Version 1.0",
       "licenseId": "OGC-1.0",
       "seeAlso": [
@@ -3556,7 +3712,7 @@
       "reference": "./OGL-Canada-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OGL-Canada-2.0.json",
-      "referenceNumber": "357",
+      "referenceNumber": "368",
       "name": "Open Government Licence - Canada",
       "licenseId": "OGL-Canada-2.0",
       "seeAlso": [
@@ -3568,7 +3724,7 @@
       "reference": "./OGL-UK-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OGL-UK-1.0.json",
-      "referenceNumber": "359",
+      "referenceNumber": "371",
       "name": "Open Government Licence v1.0",
       "licenseId": "OGL-UK-1.0",
       "seeAlso": [
@@ -3580,7 +3736,7 @@
       "reference": "./OGL-UK-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OGL-UK-2.0.json",
-      "referenceNumber": "13",
+      "referenceNumber": "14",
       "name": "Open Government Licence v2.0",
       "licenseId": "OGL-UK-2.0",
       "seeAlso": [
@@ -3592,7 +3748,7 @@
       "reference": "./OGL-UK-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OGL-UK-3.0.json",
-      "referenceNumber": "21",
+      "referenceNumber": "22",
       "name": "Open Government Licence v3.0",
       "licenseId": "OGL-UK-3.0",
       "seeAlso": [
@@ -3604,7 +3760,7 @@
       "reference": "./OGTSL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OGTSL.json",
-      "referenceNumber": "26",
+      "referenceNumber": "27",
       "name": "Open Group Test Suite License",
       "licenseId": "OGTSL",
       "seeAlso": [
@@ -3617,7 +3773,7 @@
       "reference": "./OLDAP-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-1.1.json",
-      "referenceNumber": "57",
+      "referenceNumber": "58",
       "name": "Open LDAP Public License v1.1",
       "licenseId": "OLDAP-1.1",
       "seeAlso": [
@@ -3629,7 +3785,7 @@
       "reference": "./OLDAP-1.2.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-1.2.json",
-      "referenceNumber": "50",
+      "referenceNumber": "51",
       "name": "Open LDAP Public License v1.2",
       "licenseId": "OLDAP-1.2",
       "seeAlso": [
@@ -3641,7 +3797,7 @@
       "reference": "./OLDAP-1.3.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-1.3.json",
-      "referenceNumber": "42",
+      "referenceNumber": "43",
       "name": "Open LDAP Public License v1.3",
       "licenseId": "OLDAP-1.3",
       "seeAlso": [
@@ -3653,7 +3809,7 @@
       "reference": "./OLDAP-1.4.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-1.4.json",
-      "referenceNumber": "52",
+      "referenceNumber": "53",
       "name": "Open LDAP Public License v1.4",
       "licenseId": "OLDAP-1.4",
       "seeAlso": [
@@ -3665,7 +3821,7 @@
       "reference": "./OLDAP-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.0.json",
-      "referenceNumber": "25",
+      "referenceNumber": "26",
       "name": "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)",
       "licenseId": "OLDAP-2.0",
       "seeAlso": [
@@ -3677,7 +3833,7 @@
       "reference": "./OLDAP-2.0.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.0.1.json",
-      "referenceNumber": "290",
+      "referenceNumber": "299",
       "name": "Open LDAP Public License v2.0.1",
       "licenseId": "OLDAP-2.0.1",
       "seeAlso": [
@@ -3689,7 +3845,7 @@
       "reference": "./OLDAP-2.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.1.json",
-      "referenceNumber": "413",
+      "referenceNumber": "426",
       "name": "Open LDAP Public License v2.1",
       "licenseId": "OLDAP-2.1",
       "seeAlso": [
@@ -3701,7 +3857,7 @@
       "reference": "./OLDAP-2.2.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.2.json",
-      "referenceNumber": "329",
+      "referenceNumber": "340",
       "name": "Open LDAP Public License v2.2",
       "licenseId": "OLDAP-2.2",
       "seeAlso": [
@@ -3713,7 +3869,7 @@
       "reference": "./OLDAP-2.2.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.2.1.json",
-      "referenceNumber": "396",
+      "referenceNumber": "408",
       "name": "Open LDAP Public License v2.2.1",
       "licenseId": "OLDAP-2.2.1",
       "seeAlso": [
@@ -3725,7 +3881,7 @@
       "reference": "./OLDAP-2.2.2.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.2.2.json",
-      "referenceNumber": "176",
+      "referenceNumber": "179",
       "name": "Open LDAP Public License 2.2.2",
       "licenseId": "OLDAP-2.2.2",
       "seeAlso": [
@@ -3738,7 +3894,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.3.json",
-      "referenceNumber": "238",
+      "referenceNumber": "246",
       "name": "Open LDAP Public License v2.3",
       "licenseId": "OLDAP-2.3",
       "seeAlso": [
@@ -3750,7 +3906,7 @@
       "reference": "./OLDAP-2.4.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.4.json",
-      "referenceNumber": "119",
+      "referenceNumber": "121",
       "name": "Open LDAP Public License v2.4",
       "licenseId": "OLDAP-2.4",
       "seeAlso": [
@@ -3762,7 +3918,7 @@
       "reference": "./OLDAP-2.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.5.json",
-      "referenceNumber": "112",
+      "referenceNumber": "114",
       "name": "Open LDAP Public License v2.5",
       "licenseId": "OLDAP-2.5",
       "seeAlso": [
@@ -3774,7 +3930,7 @@
       "reference": "./OLDAP-2.6.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.6.json",
-      "referenceNumber": "113",
+      "referenceNumber": "115",
       "name": "Open LDAP Public License v2.6",
       "licenseId": "OLDAP-2.6",
       "seeAlso": [
@@ -3787,7 +3943,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.7.json",
-      "referenceNumber": "237",
+      "referenceNumber": "245",
       "name": "Open LDAP Public License v2.7",
       "licenseId": "OLDAP-2.7",
       "seeAlso": [
@@ -3799,7 +3955,7 @@
       "reference": "./OLDAP-2.8.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OLDAP-2.8.json",
-      "referenceNumber": "261",
+      "referenceNumber": "270",
       "name": "Open LDAP Public License v2.8",
       "licenseId": "OLDAP-2.8",
       "seeAlso": [
@@ -3811,7 +3967,7 @@
       "reference": "./OML.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OML.json",
-      "referenceNumber": "177",
+      "referenceNumber": "180",
       "name": "Open Market License",
       "licenseId": "OML",
       "seeAlso": [
@@ -3823,7 +3979,7 @@
       "reference": "./OPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OPL-1.0.json",
-      "referenceNumber": "349",
+      "referenceNumber": "360",
       "name": "Open Public License v1.0",
       "licenseId": "OPL-1.0",
       "seeAlso": [
@@ -3836,7 +3992,7 @@
       "reference": "./OSET-PL-2.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/OSET-PL-2.1.json",
-      "referenceNumber": "210",
+      "referenceNumber": "218",
       "name": "OSET Public License version 2.1",
       "licenseId": "OSET-PL-2.1",
       "seeAlso": [
@@ -3850,7 +4006,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OSL-1.0.json",
-      "referenceNumber": "99",
+      "referenceNumber": "101",
       "name": "Open Software License 1.0",
       "licenseId": "OSL-1.0",
       "seeAlso": [
@@ -3863,7 +4019,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OSL-1.1.json",
-      "referenceNumber": "184",
+      "referenceNumber": "189",
       "name": "Open Software License 1.1",
       "licenseId": "OSL-1.1",
       "seeAlso": [
@@ -3876,7 +4032,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OSL-2.0.json",
-      "referenceNumber": "375",
+      "referenceNumber": "387",
       "name": "Open Software License 2.0",
       "licenseId": "OSL-2.0",
       "seeAlso": [
@@ -3889,7 +4045,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OSL-2.1.json",
-      "referenceNumber": "163",
+      "referenceNumber": "166",
       "name": "Open Software License 2.1",
       "licenseId": "OSL-2.1",
       "seeAlso": [
@@ -3903,7 +4059,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OSL-3.0.json",
-      "referenceNumber": "155",
+      "referenceNumber": "157",
       "name": "Open Software License 3.0",
       "licenseId": "OSL-3.0",
       "seeAlso": [
@@ -3917,7 +4073,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/OpenSSL.json",
-      "referenceNumber": "87",
+      "referenceNumber": "89",
       "name": "OpenSSL License",
       "licenseId": "OpenSSL",
       "seeAlso": [
@@ -3929,7 +4085,7 @@
       "reference": "./PDDL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/PDDL-1.0.json",
-      "referenceNumber": "137",
+      "referenceNumber": "139",
       "name": "ODC Public Domain Dedication \u0026 License 1.0",
       "licenseId": "PDDL-1.0",
       "seeAlso": [
@@ -3941,7 +4097,7 @@
       "reference": "./PHP-3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/PHP-3.0.json",
-      "referenceNumber": "198",
+      "referenceNumber": "205",
       "name": "PHP License v3.0",
       "licenseId": "PHP-3.0",
       "seeAlso": [
@@ -3967,7 +4123,7 @@
       "reference": "./PSF-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/PSF-2.0.json",
-      "referenceNumber": "95",
+      "referenceNumber": "97",
       "name": "Python Software Foundation License 2.0",
       "licenseId": "PSF-2.0",
       "seeAlso": [
@@ -3979,7 +4135,7 @@
       "reference": "./Parity-6.0.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Parity-6.0.0.json",
-      "referenceNumber": "419",
+      "referenceNumber": "432",
       "name": "The Parity Public License 6.0.0",
       "licenseId": "Parity-6.0.0",
       "seeAlso": [
@@ -3991,7 +4147,7 @@
       "reference": "./Parity-7.0.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Parity-7.0.0.json",
-      "referenceNumber": "404",
+      "referenceNumber": "416",
       "name": "The Parity Public License 7.0.0",
       "licenseId": "Parity-7.0.0",
       "seeAlso": [
@@ -4003,7 +4159,7 @@
       "reference": "./Plexus.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Plexus.json",
-      "referenceNumber": "162",
+      "referenceNumber": "164",
       "name": "Plexus Classworlds License",
       "licenseId": "Plexus",
       "seeAlso": [
@@ -4015,7 +4171,7 @@
       "reference": "./PolyForm-Noncommercial-1.0.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json",
-      "referenceNumber": "292",
+      "referenceNumber": "301",
       "name": "PolyForm Noncommercial License 1.0.0",
       "licenseId": "PolyForm-Noncommercial-1.0.0",
       "seeAlso": [
@@ -4027,7 +4183,7 @@
       "reference": "./PolyForm-Small-Business-1.0.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json",
-      "referenceNumber": "122",
+      "referenceNumber": "124",
       "name": "PolyForm Small Business License 1.0.0",
       "licenseId": "PolyForm-Small-Business-1.0.0",
       "seeAlso": [
@@ -4039,7 +4195,7 @@
       "reference": "./PostgreSQL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/PostgreSQL.json",
-      "referenceNumber": "11",
+      "referenceNumber": "12",
       "name": "PostgreSQL License",
       "licenseId": "PostgreSQL",
       "seeAlso": [
@@ -4053,7 +4209,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Python-2.0.json",
-      "referenceNumber": "406",
+      "referenceNumber": "418",
       "name": "Python License 2.0",
       "licenseId": "Python-2.0",
       "seeAlso": [
@@ -4066,7 +4222,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/QPL-1.0.json",
-      "referenceNumber": "300",
+      "referenceNumber": "309",
       "name": "Q Public License 1.0",
       "licenseId": "QPL-1.0",
       "seeAlso": [
@@ -4079,7 +4235,7 @@
       "reference": "./Qhull.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Qhull.json",
-      "referenceNumber": "129",
+      "referenceNumber": "131",
       "name": "Qhull License",
       "licenseId": "Qhull",
       "seeAlso": [
@@ -4091,7 +4247,7 @@
       "reference": "./RHeCos-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/RHeCos-1.1.json",
-      "referenceNumber": "64",
+      "referenceNumber": "65",
       "name": "Red Hat eCos Public License v1.1",
       "licenseId": "RHeCos-1.1",
       "seeAlso": [
@@ -4103,7 +4259,7 @@
       "reference": "./RPL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/RPL-1.1.json",
-      "referenceNumber": "223",
+      "referenceNumber": "231",
       "name": "Reciprocal Public License 1.1",
       "licenseId": "RPL-1.1",
       "seeAlso": [
@@ -4115,7 +4271,7 @@
       "reference": "./RPL-1.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/RPL-1.5.json",
-      "referenceNumber": "109",
+      "referenceNumber": "111",
       "name": "Reciprocal Public License 1.5",
       "licenseId": "RPL-1.5",
       "seeAlso": [
@@ -4128,7 +4284,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/RPSL-1.0.json",
-      "referenceNumber": "55",
+      "referenceNumber": "56",
       "name": "RealNetworks Public Source License v1.0",
       "licenseId": "RPSL-1.0",
       "seeAlso": [
@@ -4141,7 +4297,7 @@
       "reference": "./RSA-MD.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/RSA-MD.json",
-      "referenceNumber": "289",
+      "referenceNumber": "298",
       "name": "RSA Message-Digest License ",
       "licenseId": "RSA-MD",
       "seeAlso": [
@@ -4153,7 +4309,7 @@
       "reference": "./RSCPL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/RSCPL.json",
-      "referenceNumber": "350",
+      "referenceNumber": "361",
       "name": "Ricoh Source Code Public License",
       "licenseId": "RSCPL",
       "seeAlso": [
@@ -4166,7 +4322,7 @@
       "reference": "./Rdisc.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Rdisc.json",
-      "referenceNumber": "333",
+      "referenceNumber": "344",
       "name": "Rdisc License",
       "licenseId": "Rdisc",
       "seeAlso": [
@@ -4179,7 +4335,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Ruby.json",
-      "referenceNumber": "14",
+      "referenceNumber": "15",
       "name": "Ruby License",
       "licenseId": "Ruby",
       "seeAlso": [
@@ -4191,7 +4347,7 @@
       "reference": "./SAX-PD.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SAX-PD.json",
-      "referenceNumber": "158",
+      "referenceNumber": "160",
       "name": "Sax Public Domain Notice",
       "licenseId": "SAX-PD",
       "seeAlso": [
@@ -4203,7 +4359,7 @@
       "reference": "./SCEA.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SCEA.json",
-      "referenceNumber": "142",
+      "referenceNumber": "144",
       "name": "SCEA Shared Source License",
       "licenseId": "SCEA",
       "seeAlso": [
@@ -4215,7 +4371,7 @@
       "reference": "./SGI-B-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SGI-B-1.0.json",
-      "referenceNumber": "196",
+      "referenceNumber": "202",
       "name": "SGI Free Software License B v1.0",
       "licenseId": "SGI-B-1.0",
       "seeAlso": [
@@ -4227,7 +4383,7 @@
       "reference": "./SGI-B-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SGI-B-1.1.json",
-      "referenceNumber": "299",
+      "referenceNumber": "308",
       "name": "SGI Free Software License B v1.1",
       "licenseId": "SGI-B-1.1",
       "seeAlso": [
@@ -4240,7 +4396,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/SGI-B-2.0.json",
-      "referenceNumber": "31",
+      "referenceNumber": "32",
       "name": "SGI Free Software License B v2.0",
       "licenseId": "SGI-B-2.0",
       "seeAlso": [
@@ -4252,7 +4408,7 @@
       "reference": "./SHL-0.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SHL-0.5.json",
-      "referenceNumber": "51",
+      "referenceNumber": "52",
       "name": "Solderpad Hardware License v0.5",
       "licenseId": "SHL-0.5",
       "seeAlso": [
@@ -4264,7 +4420,7 @@
       "reference": "./SHL-0.51.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SHL-0.51.json",
-      "referenceNumber": "291",
+      "referenceNumber": "300",
       "name": "Solderpad Hardware License, Version 0.51",
       "licenseId": "SHL-0.51",
       "seeAlso": [
@@ -4277,7 +4433,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/SISSL.json",
-      "referenceNumber": "82",
+      "referenceNumber": "84",
       "name": "Sun Industry Standards Source License v1.1",
       "licenseId": "SISSL",
       "seeAlso": [
@@ -4290,7 +4446,7 @@
       "reference": "./SISSL-1.2.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SISSL-1.2.json",
-      "referenceNumber": "65",
+      "referenceNumber": "66",
       "name": "Sun Industry Standards Source License v1.2",
       "licenseId": "SISSL-1.2",
       "seeAlso": [
@@ -4303,7 +4459,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/SMLNJ.json",
-      "referenceNumber": "226",
+      "referenceNumber": "234",
       "name": "Standard ML of New Jersey License",
       "licenseId": "SMLNJ",
       "seeAlso": [
@@ -4315,7 +4471,7 @@
       "reference": "./SMPPL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SMPPL.json",
-      "referenceNumber": "110",
+      "referenceNumber": "112",
       "name": "Secure Messaging Protocol Public License",
       "licenseId": "SMPPL",
       "seeAlso": [
@@ -4327,7 +4483,7 @@
       "reference": "./SNIA.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SNIA.json",
-      "referenceNumber": "313",
+      "referenceNumber": "324",
       "name": "SNIA Public License 1.1",
       "licenseId": "SNIA",
       "seeAlso": [
@@ -4340,7 +4496,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/SPL-1.0.json",
-      "referenceNumber": "256",
+      "referenceNumber": "265",
       "name": "Sun Public License v1.0",
       "licenseId": "SPL-1.0",
       "seeAlso": [
@@ -4352,7 +4508,7 @@
       "reference": "./SSH-OpenSSH.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SSH-OpenSSH.json",
-      "referenceNumber": "22",
+      "referenceNumber": "23",
       "name": "SSH OpenSSH license",
       "licenseId": "SSH-OpenSSH",
       "seeAlso": [
@@ -4364,7 +4520,7 @@
       "reference": "./SSH-short.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SSH-short.json",
-      "referenceNumber": "70",
+      "referenceNumber": "71",
       "name": "SSH short notice",
       "licenseId": "SSH-short",
       "seeAlso": [
@@ -4378,7 +4534,7 @@
       "reference": "./SSPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SSPL-1.0.json",
-      "referenceNumber": "345",
+      "referenceNumber": "356",
       "name": "Server Side Public License, v 1",
       "licenseId": "SSPL-1.0",
       "seeAlso": [
@@ -4390,7 +4546,7 @@
       "reference": "./SWL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SWL.json",
-      "referenceNumber": "97",
+      "referenceNumber": "99",
       "name": "Scheme Widget Library (SWL) Software License Agreement",
       "licenseId": "SWL",
       "seeAlso": [
@@ -4402,7 +4558,7 @@
       "reference": "./Saxpath.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Saxpath.json",
-      "referenceNumber": "34",
+      "referenceNumber": "35",
       "name": "Saxpath License",
       "licenseId": "Saxpath",
       "seeAlso": [
@@ -4414,7 +4570,7 @@
       "reference": "./Sendmail.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Sendmail.json",
-      "referenceNumber": "304",
+      "referenceNumber": "313",
       "name": "Sendmail License",
       "licenseId": "Sendmail",
       "seeAlso": [
@@ -4427,7 +4583,7 @@
       "reference": "./Sendmail-8.23.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Sendmail-8.23.json",
-      "referenceNumber": "182",
+      "referenceNumber": "187",
       "name": "Sendmail License 8.23",
       "licenseId": "Sendmail-8.23",
       "seeAlso": [
@@ -4440,7 +4596,7 @@
       "reference": "./SimPL-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SimPL-2.0.json",
-      "referenceNumber": "259",
+      "referenceNumber": "268",
       "name": "Simple Public License 2.0",
       "licenseId": "SimPL-2.0",
       "seeAlso": [
@@ -4453,7 +4609,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Sleepycat.json",
-      "referenceNumber": "58",
+      "referenceNumber": "59",
       "name": "Sleepycat License",
       "licenseId": "Sleepycat",
       "seeAlso": [
@@ -4465,7 +4621,7 @@
       "reference": "./Spencer-86.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Spencer-86.json",
-      "referenceNumber": "191",
+      "referenceNumber": "197",
       "name": "Spencer License 86",
       "licenseId": "Spencer-86",
       "seeAlso": [
@@ -4477,7 +4633,7 @@
       "reference": "./Spencer-94.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Spencer-94.json",
-      "referenceNumber": "220",
+      "referenceNumber": "228",
       "name": "Spencer License 94",
       "licenseId": "Spencer-94",
       "seeAlso": [
@@ -4489,7 +4645,7 @@
       "reference": "./Spencer-99.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Spencer-99.json",
-      "referenceNumber": "67",
+      "referenceNumber": "68",
       "name": "Spencer License 99",
       "licenseId": "Spencer-99",
       "seeAlso": [
@@ -4502,7 +4658,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/StandardML-NJ.json",
-      "referenceNumber": "296",
+      "referenceNumber": "305",
       "name": "Standard ML of New Jersey License",
       "licenseId": "StandardML-NJ",
       "seeAlso": [
@@ -4514,7 +4670,7 @@
       "reference": "./SugarCRM-1.1.3.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/SugarCRM-1.1.3.json",
-      "referenceNumber": "353",
+      "referenceNumber": "364",
       "name": "SugarCRM Public License v1.1.3",
       "licenseId": "SugarCRM-1.1.3",
       "seeAlso": [
@@ -4526,7 +4682,7 @@
       "reference": "./TAPR-OHL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/TAPR-OHL-1.0.json",
-      "referenceNumber": "9",
+      "referenceNumber": "10",
       "name": "TAPR Open Hardware License v1.0",
       "licenseId": "TAPR-OHL-1.0",
       "seeAlso": [
@@ -4538,7 +4694,7 @@
       "reference": "./TCL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/TCL.json",
-      "referenceNumber": "56",
+      "referenceNumber": "57",
       "name": "TCL/TK License",
       "licenseId": "TCL",
       "seeAlso": [
@@ -4551,7 +4707,7 @@
       "reference": "./TCP-wrappers.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/TCP-wrappers.json",
-      "referenceNumber": "242",
+      "referenceNumber": "250",
       "name": "TCP Wrappers License",
       "licenseId": "TCP-wrappers",
       "seeAlso": [
@@ -4563,7 +4719,7 @@
       "reference": "./TMate.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/TMate.json",
-      "referenceNumber": "415",
+      "referenceNumber": "428",
       "name": "TMate Open Source License",
       "licenseId": "TMate",
       "seeAlso": [
@@ -4575,7 +4731,7 @@
       "reference": "./TORQUE-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/TORQUE-1.1.json",
-      "referenceNumber": "195",
+      "referenceNumber": "201",
       "name": "TORQUE v2.5+ Software License v1.1",
       "licenseId": "TORQUE-1.1",
       "seeAlso": [
@@ -4587,7 +4743,7 @@
       "reference": "./TOSL.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/TOSL.json",
-      "referenceNumber": "260",
+      "referenceNumber": "269",
       "name": "Trusster Open Source License",
       "licenseId": "TOSL",
       "seeAlso": [
@@ -4599,7 +4755,7 @@
       "reference": "./TU-Berlin-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/TU-Berlin-1.0.json",
-      "referenceNumber": "384",
+      "referenceNumber": "396",
       "name": "Technische Universitaet Berlin License 1.0",
       "licenseId": "TU-Berlin-1.0",
       "seeAlso": [
@@ -4611,7 +4767,7 @@
       "reference": "./TU-Berlin-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/TU-Berlin-2.0.json",
-      "referenceNumber": "405",
+      "referenceNumber": "417",
       "name": "Technische Universitaet Berlin License 2.0",
       "licenseId": "TU-Berlin-2.0",
       "seeAlso": [
@@ -4623,7 +4779,7 @@
       "reference": "./UCL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/UCL-1.0.json",
-      "referenceNumber": "302",
+      "referenceNumber": "311",
       "name": "Upstream Compatibility License v1.0",
       "licenseId": "UCL-1.0",
       "seeAlso": [
@@ -4636,7 +4792,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/UPL-1.0.json",
-      "referenceNumber": "149",
+      "referenceNumber": "151",
       "name": "Universal Permissive License v1.0",
       "licenseId": "UPL-1.0",
       "seeAlso": [
@@ -4648,7 +4804,7 @@
       "reference": "./Unicode-DFS-2015.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Unicode-DFS-2015.json",
-      "referenceNumber": "270",
+      "referenceNumber": "279",
       "name": "Unicode License Agreement - Data Files and Software (2015)",
       "licenseId": "Unicode-DFS-2015",
       "seeAlso": [
@@ -4660,7 +4816,7 @@
       "reference": "./Unicode-DFS-2016.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Unicode-DFS-2016.json",
-      "referenceNumber": "382",
+      "referenceNumber": "394",
       "name": "Unicode License Agreement - Data Files and Software (2016)",
       "licenseId": "Unicode-DFS-2016",
       "seeAlso": [
@@ -4672,7 +4828,7 @@
       "reference": "./Unicode-TOU.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Unicode-TOU.json",
-      "referenceNumber": "16",
+      "referenceNumber": "17",
       "name": "Unicode Terms of Use",
       "licenseId": "Unicode-TOU",
       "seeAlso": [
@@ -4685,7 +4841,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Unlicense.json",
-      "referenceNumber": "179",
+      "referenceNumber": "183",
       "name": "The Unlicense",
       "licenseId": "Unlicense",
       "seeAlso": [
@@ -4697,7 +4853,7 @@
       "reference": "./VOSTROM.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/VOSTROM.json",
-      "referenceNumber": "363",
+      "referenceNumber": "375",
       "name": "VOSTROM Public License for Open Source",
       "licenseId": "VOSTROM",
       "seeAlso": [
@@ -4709,7 +4865,7 @@
       "reference": "./VSL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/VSL-1.0.json",
-      "referenceNumber": "402",
+      "referenceNumber": "414",
       "name": "Vovida Software License v1.0",
       "licenseId": "VSL-1.0",
       "seeAlso": [
@@ -4722,7 +4878,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Vim.json",
-      "referenceNumber": "213",
+      "referenceNumber": "221",
       "name": "Vim License",
       "licenseId": "Vim",
       "seeAlso": [
@@ -4735,7 +4891,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/W3C.json",
-      "referenceNumber": "111",
+      "referenceNumber": "113",
       "name": "W3C Software Notice and License (2002-12-31)",
       "licenseId": "W3C",
       "seeAlso": [
@@ -4748,7 +4904,7 @@
       "reference": "./W3C-19980720.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/W3C-19980720.json",
-      "referenceNumber": "276",
+      "referenceNumber": "285",
       "name": "W3C Software Notice and License (1998-07-20)",
       "licenseId": "W3C-19980720",
       "seeAlso": [
@@ -4760,7 +4916,7 @@
       "reference": "./W3C-20150513.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/W3C-20150513.json",
-      "referenceNumber": "115",
+      "referenceNumber": "117",
       "name": "W3C Software Notice and Document License (2015-05-13)",
       "licenseId": "W3C-20150513",
       "seeAlso": [
@@ -4773,7 +4929,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/WTFPL.json",
-      "referenceNumber": "20",
+      "referenceNumber": "21",
       "name": "Do What The F*ck You Want To Public License",
       "licenseId": "WTFPL",
       "seeAlso": [
@@ -4786,7 +4942,7 @@
       "reference": "./Watcom-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Watcom-1.0.json",
-      "referenceNumber": "146",
+      "referenceNumber": "148",
       "name": "Sybase Open Watcom Public License 1.0",
       "licenseId": "Watcom-1.0",
       "seeAlso": [
@@ -4798,7 +4954,7 @@
       "reference": "./Wsuipa.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Wsuipa.json",
-      "referenceNumber": "264",
+      "referenceNumber": "273",
       "name": "Wsuipa License",
       "licenseId": "Wsuipa",
       "seeAlso": [
@@ -4811,7 +4967,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/X11.json",
-      "referenceNumber": "103",
+      "referenceNumber": "105",
       "name": "X11 License",
       "licenseId": "X11",
       "seeAlso": [
@@ -4824,7 +4980,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/XFree86-1.1.json",
-      "referenceNumber": "161",
+      "referenceNumber": "163",
       "name": "XFree86 License 1.1",
       "licenseId": "XFree86-1.1",
       "seeAlso": [
@@ -4836,7 +4992,7 @@
       "reference": "./XSkat.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/XSkat.json",
-      "referenceNumber": "85",
+      "referenceNumber": "87",
       "name": "XSkat License",
       "licenseId": "XSkat",
       "seeAlso": [
@@ -4848,7 +5004,7 @@
       "reference": "./Xerox.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Xerox.json",
-      "referenceNumber": "232",
+      "referenceNumber": "240",
       "name": "Xerox License",
       "licenseId": "Xerox",
       "seeAlso": [
@@ -4860,7 +5016,7 @@
       "reference": "./Xnet.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Xnet.json",
-      "referenceNumber": "324",
+      "referenceNumber": "335",
       "name": "X.Net License",
       "licenseId": "Xnet",
       "seeAlso": [
@@ -4872,7 +5028,7 @@
       "reference": "./YPL-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/YPL-1.0.json",
-      "referenceNumber": "303",
+      "referenceNumber": "312",
       "name": "Yahoo! Public License v1.0",
       "licenseId": "YPL-1.0",
       "seeAlso": [
@@ -4885,7 +5041,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/YPL-1.1.json",
-      "referenceNumber": "40",
+      "referenceNumber": "41",
       "name": "Yahoo! Public License v1.1",
       "licenseId": "YPL-1.1",
       "seeAlso": [
@@ -4897,7 +5053,7 @@
       "reference": "./ZPL-1.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/ZPL-1.1.json",
-      "referenceNumber": "89",
+      "referenceNumber": "91",
       "name": "Zope Public License 1.1",
       "licenseId": "ZPL-1.1",
       "seeAlso": [
@@ -4910,7 +5066,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/ZPL-2.0.json",
-      "referenceNumber": "116",
+      "referenceNumber": "118",
       "name": "Zope Public License 2.0",
       "licenseId": "ZPL-2.0",
       "seeAlso": [
@@ -4924,7 +5080,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/ZPL-2.1.json",
-      "referenceNumber": "380",
+      "referenceNumber": "392",
       "name": "Zope Public License 2.1",
       "licenseId": "ZPL-2.1",
       "seeAlso": [
@@ -4936,7 +5092,7 @@
       "reference": "./Zed.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Zed.json",
-      "referenceNumber": "118",
+      "referenceNumber": "120",
       "name": "Zed License",
       "licenseId": "Zed",
       "seeAlso": [
@@ -4949,7 +5105,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Zend-2.0.json",
-      "referenceNumber": "385",
+      "referenceNumber": "397",
       "name": "Zend License v2.0",
       "licenseId": "Zend-2.0",
       "seeAlso": [
@@ -4962,7 +5118,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Zimbra-1.3.json",
-      "referenceNumber": "181",
+      "referenceNumber": "186",
       "name": "Zimbra Public License v1.3",
       "licenseId": "Zimbra-1.3",
       "seeAlso": [
@@ -4974,7 +5130,7 @@
       "reference": "./Zimbra-1.4.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/Zimbra-1.4.json",
-      "referenceNumber": "397",
+      "referenceNumber": "409",
       "name": "Zimbra Public License v1.4",
       "licenseId": "Zimbra-1.4",
       "seeAlso": [
@@ -4987,7 +5143,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/Zlib.json",
-      "referenceNumber": "45",
+      "referenceNumber": "46",
       "name": "zlib License",
       "licenseId": "Zlib",
       "seeAlso": [
@@ -5000,7 +5156,7 @@
       "reference": "./blessing.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/blessing.json",
-      "referenceNumber": "312",
+      "referenceNumber": "323",
       "name": "SQLite Blessing",
       "licenseId": "blessing",
       "seeAlso": [
@@ -5013,7 +5169,7 @@
       "reference": "./bzip2-1.0.5.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/bzip2-1.0.5.json",
-      "referenceNumber": "193",
+      "referenceNumber": "199",
       "name": "bzip2 and libbzip2 License v1.0.5",
       "licenseId": "bzip2-1.0.5",
       "seeAlso": [
@@ -5026,7 +5182,7 @@
       "reference": "./bzip2-1.0.6.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/bzip2-1.0.6.json",
-      "referenceNumber": "72",
+      "referenceNumber": "73",
       "name": "bzip2 and libbzip2 License v1.0.6",
       "licenseId": "bzip2-1.0.6",
       "seeAlso": [
@@ -5039,7 +5195,7 @@
       "reference": "./copyleft-next-0.3.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/copyleft-next-0.3.0.json",
-      "referenceNumber": "323",
+      "referenceNumber": "334",
       "name": "copyleft-next 0.3.0",
       "licenseId": "copyleft-next-0.3.0",
       "seeAlso": [
@@ -5051,7 +5207,7 @@
       "reference": "./copyleft-next-0.3.1.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/copyleft-next-0.3.1.json",
-      "referenceNumber": "390",
+      "referenceNumber": "402",
       "name": "copyleft-next 0.3.1",
       "licenseId": "copyleft-next-0.3.1",
       "seeAlso": [
@@ -5063,7 +5219,7 @@
       "reference": "./curl.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/curl.json",
-      "referenceNumber": "325",
+      "referenceNumber": "336",
       "name": "curl License",
       "licenseId": "curl",
       "seeAlso": [
@@ -5075,7 +5231,7 @@
       "reference": "./diffmark.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/diffmark.json",
-      "referenceNumber": "410",
+      "referenceNumber": "423",
       "name": "diffmark license",
       "licenseId": "diffmark",
       "seeAlso": [
@@ -5087,7 +5243,7 @@
       "reference": "./dvipdfm.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/dvipdfm.json",
-      "referenceNumber": "19",
+      "referenceNumber": "20",
       "name": "dvipdfm License",
       "licenseId": "dvipdfm",
       "seeAlso": [
@@ -5100,7 +5256,7 @@
       "isDeprecatedLicenseId": true,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/eCos-2.0.json",
-      "referenceNumber": "282",
+      "referenceNumber": "291",
       "name": "eCos license version 2.0",
       "licenseId": "eCos-2.0",
       "seeAlso": [
@@ -5112,7 +5268,7 @@
       "reference": "./eGenix.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/eGenix.json",
-      "referenceNumber": "221",
+      "referenceNumber": "229",
       "name": "eGenix.com Public License 1.1.0",
       "licenseId": "eGenix",
       "seeAlso": [
@@ -5125,7 +5281,7 @@
       "reference": "./etalab-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/etalab-2.0.json",
-      "referenceNumber": "269",
+      "referenceNumber": "278",
       "name": "Etalab Open License 2.0",
       "licenseId": "etalab-2.0",
       "seeAlso": [
@@ -5138,7 +5294,7 @@
       "reference": "./gSOAP-1.3b.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/gSOAP-1.3b.json",
-      "referenceNumber": "173",
+      "referenceNumber": "176",
       "name": "gSOAP Public License v1.3b",
       "licenseId": "gSOAP-1.3b",
       "seeAlso": [
@@ -5151,7 +5307,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/gnuplot.json",
-      "referenceNumber": "395",
+      "referenceNumber": "407",
       "name": "gnuplot License",
       "licenseId": "gnuplot",
       "seeAlso": [
@@ -5164,7 +5320,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/iMatix.json",
-      "referenceNumber": "183",
+      "referenceNumber": "188",
       "name": "iMatix Standard Function Library Agreement",
       "licenseId": "iMatix",
       "seeAlso": [
@@ -5176,7 +5332,7 @@
       "reference": "./libpng-2.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/libpng-2.0.json",
-      "referenceNumber": "107",
+      "referenceNumber": "109",
       "name": "PNG Reference Library version 2",
       "licenseId": "libpng-2.0",
       "seeAlso": [
@@ -5188,7 +5344,7 @@
       "reference": "./libselinux-1.0.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/libselinux-1.0.json",
-      "referenceNumber": "18",
+      "referenceNumber": "19",
       "name": "libselinux public domain notice",
       "licenseId": "libselinux-1.0",
       "seeAlso": [
@@ -5200,7 +5356,7 @@
       "reference": "./libtiff.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/libtiff.json",
-      "referenceNumber": "420",
+      "referenceNumber": "433",
       "name": "libtiff License",
       "licenseId": "libtiff",
       "seeAlso": [
@@ -5212,7 +5368,7 @@
       "reference": "./mpich2.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/mpich2.json",
-      "referenceNumber": "63",
+      "referenceNumber": "64",
       "name": "mpich2 License",
       "licenseId": "mpich2",
       "seeAlso": [
@@ -5224,7 +5380,7 @@
       "reference": "./psfrag.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/psfrag.json",
-      "referenceNumber": "421",
+      "referenceNumber": "434",
       "name": "psfrag License",
       "licenseId": "psfrag",
       "seeAlso": [
@@ -5236,7 +5392,7 @@
       "reference": "./psutils.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/psutils.json",
-      "referenceNumber": "287",
+      "referenceNumber": "296",
       "name": "psutils License",
       "licenseId": "psutils",
       "seeAlso": [
@@ -5248,7 +5404,7 @@
       "reference": "./wxWindows.html",
       "isDeprecatedLicenseId": true,
       "detailsUrl": "http://spdx.org/licenses/wxWindows.json",
-      "referenceNumber": "252",
+      "referenceNumber": "261",
       "name": "wxWindows Library License",
       "licenseId": "wxWindows",
       "seeAlso": [
@@ -5261,7 +5417,7 @@
       "isDeprecatedLicenseId": false,
       "isFsfLibre": true,
       "detailsUrl": "http://spdx.org/licenses/xinetd.json",
-      "referenceNumber": "412",
+      "referenceNumber": "425",
       "name": "xinetd License",
       "licenseId": "xinetd",
       "seeAlso": [
@@ -5273,7 +5429,7 @@
       "reference": "./xpp.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/xpp.json",
-      "referenceNumber": "100",
+      "referenceNumber": "102",
       "name": "XPP License",
       "licenseId": "xpp",
       "seeAlso": [
@@ -5285,7 +5441,7 @@
       "reference": "./zlib-acknowledgement.html",
       "isDeprecatedLicenseId": false,
       "detailsUrl": "http://spdx.org/licenses/zlib-acknowledgement.json",
-      "referenceNumber": "254",
+      "referenceNumber": "263",
       "name": "zlib/libpng License with Acknowledgement",
       "licenseId": "zlib-acknowledgement",
       "seeAlso": [
@@ -5294,5 +5450,5 @@
       "isOsiApproved": false
     }
   ],
-  "releaseDate": "2020-06-18"
+  "releaseDate": "2020-07-02"
 }
\ No newline at end of file