anchor.diff:      free = false;
     };
   
  -  odbl = spdx {
  +  odbl = {
       spdxId = "ODbL-1.0";
       fullName = "Open Data Commons Open Database License v1.0";
     };
   
  -  ofl = spdx {
  +  ofl = {
       spdxId = "OFL-1.1";
       fullName = "SIL Open Font License 1.1";
     };
   
  -  openldap = spdx {
  +  openldap = {
       spdxId = "OLDAP-2.8";
       fullName = "Open LDAP Public License v2.8";
     };
   
  -  openssl = spdx {
  +  openssl = {
       spdxId = "OpenSSL";
       fullName = "OpenSSL License";
     };
   
  -  osl2 = spdx {
  +  osl2 = {
       spdxId = "OSL-2.0";
       fullName = "Open Software License 2.0";
     };
   
  -  osl21 = spdx {
  +  osl21 = {
       spdxId = "OSL-2.1";
       fullName = "Open Software License 2.1";
     };
   
  -  osl3 = spdx {
  +  osl3 = {
       spdxId = "OSL-3.0";
       fullName = "Open Software License 3.0";
     };
   
  -  parity70 = spdx {
  +  parity70 = {
       spdxId = "Parity-7.0.0";
       fullName = "Parity Public License 7.0.0";
       url = "https://paritylicense.com/versions/7.0.0.html";
     };
   
  -  php301 = spdx {
  +  php301 = {
       spdxId = "PHP-3.01";
       fullName = "PHP License v3.01";
     };
   
  -  postgresql = spdx {
  +  postgresql = {
       spdxId = "PostgreSQL";
       fullName = "PostgreSQL License";
     };
  
positive.code: { lib }:
  let
  
    spdx = lic: lic // {
      url = "https://spdx.org/licenses/${lic.spdxId}.html";
    };
  
  in
  
  lib.mapAttrs (n: v: v // { shortName = n; }) ({
    /* License identifiers from spdx.org where possible.
     * If you cannot find your license here, then look for a similar license or
     * add it to this list. The URL mentioned above is a good source for inspiration.
     */
  
    abstyles = spdx {
      spdxId = "Abstyles";
      fullName = "Abstyles License";
    };
  
    afl20 = spdx {
      spdxId = "AFL-2.0";
      fullName = "Academic Free License v2.0";
    };
  
    afl21 = spdx {
      spdxId = "AFL-2.1";
      fullName = "Academic Free License v2.1";
    };
  
    afl3 = spdx {
      spdxId = "AFL-3.0";
      fullName = "Academic Free License v3.0";
    };
  
    agpl3Only = spdx {
      spdxId = "AGPL-3.0-only";
      fullName = "GNU Affero General Public License v3.0 only";
    };
  
    agpl3Plus = spdx {
      spdxId = "AGPL-3.0-or-later";
      fullName = "GNU Affero General Public License v3.0 or later";
    };
  
negative.code:     url = "http://mcj.sourceforge.net/authors.html#xfig"; # https is broken
    };
  
    zlib = {
      spdxId = "Zlib";
      fullName = "zlib License";
    };
  
    zpl20 = {
      spdxId = "ZPL-2.0";
      fullName = "Zope Public License 2.0";
    };
  
    zpl21 = {
      spdxId = "ZPL-2.1";
      fullName = "Zope Public License 2.1";
    };
  } // {
    # TODO: remove legacy aliases
    agpl3 = {
      spdxId = "AGPL-3.0";
      fullName = "GNU Affero General Public License v3.0";
      deprecated = true;
    };
    fdl11 = {
      spdxId = "GFDL-1.1";
      fullName = "GNU Free Documentation License v1.1";
      deprecated = true;
    };
    fdl12 = {
      spdxId = "GFDL-1.2";
      fullName = "GNU Free Documentation License v1.2";
      deprecated = true;
    };
    fdl13 = {
      spdxId = "GFDL-1.3";
      fullName = "GNU Free Documentation License v1.3";
      deprecated = true;
    };
    gpl1 = {
      spdxId = "GPL-1.0";
      fullName = "GNU General Public License v1.0";
      deprecated = true;
    };
    gpl2 = {
      spdxId = "GPL-2.0";
      fullName = "GNU General Public License v2.0";
      deprecated = true;
    };
    gpl3 = {
      spdxId = "GPL-3.0";
      fullName = "GNU General Public License v3.0";
      deprecated = true;
    };
    lgpl2 = {
      spdxId = "LGPL-2.0";
      fullName = "GNU Library General Public License v2";
      deprecated = true;
    };
    lgpl21 = {
      spdxId = "LGPL-2.1";
      fullName = "GNU Lesser General Public License v2.1";
      deprecated = true;
    };
    lgpl3 = {
      spdxId = "LGPL-3.0";
      fullName = "GNU Lesser General Public License v3.0";
      deprecated = true;
  