On Fri, Oct 13, 2017 at 03:56:55PM -0400, Richard Fontana wrote: > I've been thinking about this because there's been some interest > among the FSF and OSI in seeing where exactly the lists of > FSF-recognized-as-free and OSI-approved licenses disagree.
This is definitely something that would be nice to answer
automatically. It would be nice if the FSF had an API, but we can
scrape out a list of their free IDs using JavaScript [1]. And we can
use the OSI API to pull their list of approved licenses [2].
Comparing the two lists:
$ diff -yW 40 <(jq -r '.[] | ascii_downcase' fsf.json | sort) <(jq -r '.[] |
ascii_downcase' osi.json)
academicfreelice | aal
acdl | afl-3.0
agpl | agpl-3.0
agplv1.0 | apl-1.0
agplv3.0 | apsl-2.0
apache1 | apache-1.1
apache1.1 | apache-2.0
apache2 | artistic-1.0
apsl2 | artistic-2.0
arphic | bsd-2
artisticlicense2 | bsd-3
berkeleydb | bsl-1.0
berkleydb | catosl-1.1
bittorrent | cddl-1.0
boost | cecill-2.1
cc0 | cnri-python
ccby | cpal-1.0
ccbysa | cpl-1.0
cddl | cua-opl-1.0
cecill | cvw
cecill-b | ecl-1.0
cecill-c | ecl-2.0
clarifiedartisti | efl-1.0
clearbsd | efl-2.0
commonpubliclice | epl-1.0
condor <
cpal <
cryptixgeneralli <
dsl <
ecfonts <
ecl2.0 <
ecos2.0 <
ecos20 <
eiffel <
epl <
eudatagrid eudatagrid
eupl | eupl-1.1
expat | entessa
fdl | fair
fdlother | frameworx-1.0
freeart | gpl-2.0
freebsd | gpl-3.0
freebsddl <
freetype <
gnuallpermissive <
gnugpl <
gnugplv3 <
gnuplot <
gplfonts <
gplother <
gplv2 <
hpnd hpnd
ibmpl | ipa
ijg | ipl-1.0
imatix <
imlib <
informal <
intel <
ipafont <
isc isc
josl | intel
lgpl | lgpl-2.1
lgplv2.1 | lgpl-3.0
lgplv3 | lpl-1.0
lppl-1.2 | lpl-1.02
lppl-1.3a | lppl-1.3c
lucent102 | liliq-p-1.1
modifiedbsd | liliq-r+
mpl | liliq-r-1.1
> mit
> mpl-1.0
> mpl-1.1
mpl-2.0 mpl-2.0
ms-pl ms-pl
ms-rl ms-rl
> miros
> motosoto
> multics
> nasa-1.3
ncsa ncsa
netscapejavascri | ngpl
netscapejavascri | nposl-3.0
newopenldap | ntp
> naumen
nokia nokia
nosl | oclc-2.0
npl | ofl-1.1
odbl | ogtsl
oldopenldap | opl-2.1
openpublicationl | osl-1.0
openssl | osl-2.1
originalbsd | osl-3.0
osl | php-3.0
perllicense | postgresql
phorum | python-2.0
php-3.01 | qpl-1.0
publicdomain | rpl-1.1
python | rpl-1.5
python1.6a2 | rpsl-1.0
pythonold | rscpl
qpl <
realopl <
rpsl <
ruby <
sgifreeb <
silofl <
sissl sissl
spl | spl-1.0
standardmlofnj | simple-2.0
unicode | sleepycat
unlicense <
upl upl
vim | vsl-1.0
w3c w3c
webm | wxwindows
wtfpl | watcom-1.0
wx | xnet
x11license | zpl-2.0
xfree861.1licens <
xinetd <
yahoo <
zend <
zimbra <
zlib zlib
zope | jabberpl
zope2.0 <
zope20 <
Some of the reported differences are from different IDs (e.g. Expat
vs. MIT and AGPLv3.0 vs AGPL-3.0). And the OSI may have approved more
licenses than it lists in the API [3]. But that may get you started.
With automated text matching (ideally based on an easy way to get the
approved license text from both the OSI and FSF) you could address the
ID-mismatch issue automatically.
Cheers,
Trevor
[1]: In a developer console on
https://www.gnu.org/licenses/license-list.html
Load jQuery:
var jq = document.createElement('script');
jq.src =
"https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
Get the license IDs:
gplCompatible = [];
fdlCompatible = [];
freeIncompatible = [];
[
{class: 'green', array: gplCompatible},
{class: 'purple', array: fdlCompatible},
{class: 'orange', array: freeIncompatible},
].forEach(function(category) {
$('dl.' + category.class + ' dt a').each(function (_, element) {
if (element.attributes.id) {
category.array.push(element.attributes.id.value);
}
});
});
free = gplCompatible.concat(fdlCompatible).concat(freeIncompatible);
free.sort();
console.log(JSON.stringify(free));
Which produces:
["ACDL","AGPL","AGPLv1.0","AGPLv3.0","AcademicFreeLicense","Arphic","ArtisticLicense2",
"BerkeleyDB","BerkleyDB","CC0","CDDL","CPAL","CeCILL","CeCILL-B","CeCILL-C",
"ClarifiedArtistic","CommonPublicLicense10","Condor","CryptixGeneralLicense","ECL2.0",
"EPL","EUDataGrid","EUPL","Eiffel","Expat","FDL","FDLOther","FreeArt","FreeBSD",
"FreeBSDDL","GNUAllPermissive","GNUGPL","GNUGPLv3","GPLFonts","GPLOther","GPLv2",
"HPND","IBMPL","IPAFONT","ISC","LGPL","LGPLv2.1","LGPLv3","LPPL-1.2","LPPL-1.3a",
"MPL","MPL-2.0","ModifiedBSD","NCSA","NOSL","NPL","NetscapeJavaScript",
"NetscapeJavascript","Nokia","ODbl","OSL","OpenPublicationL","OpenSSL","OriginalBSD",
"PHP-3.01","PerlLicense","Phorum","PublicDomain","Python","Python1.6a2","PythonOld",
"QPL","RPSL","RealOPL","Ruby","SGIFreeB","SILOFL","SISSL","SPL","StandardMLofNJ",
"UPL","Unicode","Unlicense","Vim","W3C","WTFPL","WebM","Wx","X11License",
"XFree861.1License","Yahoo","ZLib","Zend","Zimbra","Zope","Zope2.0","Zope20",
"apache1","apache1.1","apache2","apsl2","bittorrent","boost","ccby","ccbysa",
"clearbsd","dsl","eCos2.0","eCos20","ecfonts","freetype","gnuplot","iMatix","ijg",
"imlib","informal","intel","josl","lucent102","ms-pl","ms-rl","newOpenLDAP",
"oldOpenLDAP","xinetd"]
I saved that into 'fsf.json'.
[2]: $ curl -s https://api.opensource.org/licenses/ | jq '[.[] |
select(.keywords | contains(["osi-approved"])) | .id]' >osi.json
[3]:
https://lists.opensource.org/pipermail/license-discuss/2017-July/019922.html
Subject: Some formerly-approved licenses not listed under
opensource.org/licenses/ (was: SPDX License List v1.14 & OSI
questions)
Date: Fri, 14 Jul 2017 12:22:48 -0700
Message-ID: <[email protected]>
--
This email may be signed or encrypted with GnuPG (http://www.gnupg.org).
For more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Spdx-tech mailing list [email protected] https://lists.spdx.org/mailman/listinfo/spdx-tech
