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: <20170714192248.gx17...@valgrind.tremily.us> -- 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-legal mailing list Spdx-legal@lists.spdx.org https://lists.spdx.org/mailman/listinfo/spdx-legal