{"id":"CNRI-Python-GPL-Compatible","title":"CNRI Python Open Source GPL Compatible License Agreement","reviewed_on":"2026-09-15","reviewer":"Giray Havur","text_source":"http://www.python.org/download/releases/1.6.1/download_win/","text_retrieved":true,"verdict":"created","summary":"Models the CNRI agreement for Python 1.6.1, rewritten in 2001 so that it no longer conflicts with the GNU General Public License. It differs from CNRI-Python in requiring the copyright notice as well as the licence agreement to be retained and in its choice of law. Nothing here is legal advice.","findings":[{"rubric":3,"severity":"major","field":"odrl:permission","description":"Clause 2 grants \"a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6.1 alone or in any derivative version\", the same grant as the 1.6b1 agreement, so the permission set is identical to CNRI-Python.","action":"applied"},{"rubric":4,"severity":"major","field":"odrl:prohibition","description":"Clause 7 carries the same trademark sentence as the 1.6b1 agreement, so dalicc:promote is a prohibition, and no right to relicense is granted, so dalicc:ChangeLicense is prohibited. (Corrected on 2026-09-15 by the verification of this review group: see the rubric 3 finding on relicensing below.)","action":"applied"},{"rubric":5,"severity":"major","field":"odrl:duty","description":"This is the one modelled difference from CNRI-Python. Clause 2 requires \"that CNRI's License Agreement and CNRI's notice of copyright, i.e., the line Copyright (c) 1995-2001 Corporation for National Research Initiatives; All Rights Reserved, are retained\", so cc:Attribution joins cc:Notice on odrl:distribute, odrl:modify and odrl:derive. Clause 3 requires \"a brief summary of the changes made to Python 1.6.1\", which is dalicc:modificationNotice on odrl:modify and odrl:derive.","action":"applied"},{"rubric":6,"severity":"major","field":"dalicc:additionalClauses","description":"Clauses 4 and 5 are quoted word for word in their own predicates. The substitute notice text of clause 2, the automatic termination of clause 6 and the whole of clause 7 are quoted in dalicc:additionalClauses.","action":"applied"},{"rubric":7,"severity":"major","field":"cc:jurisdiction","description":"Clause 7 makes the agreement subject to \"the federal intellectual property law of the United States ... and, to the extent such U.S. federal law does not apply, by the law of the Commonwealth of Virginia\", with a carve-out for derivative works that incorporate GPL material. The grant is world-wide, so cc:jurisdiction stays dalicc:worldwide and the clause is quoted in full. That carve-out is the reason the Free Software Foundation treats this version as GPL compatible.","action":"applied"},{"rubric":8,"severity":"gap","field":"dalicc:additionalClauses","description":"Automatic termination on breach has no property to hang it on; proposed term dalicc:terminatesOnBreach. The clause is quoted.","action":"none"},{"rubric":9,"severity":"info","field":"record","description":"The consistency check of app.services.composer with the dependency graph dg_default returned an empty conflict list.","action":"none"},{"rubric":10,"severity":"major","field":"record","description":"Read as a diff against CNRI-Python. The separation into two records is justified: the retention duty and the governing law both differ, and the second is what makes this version GPL compatible. Both records depart from PythonLicense20 in the same way, by not repeating prohibitions that no text in the family states.","action":"applied"},{"rubric":3,"severity":"major","field":"odrl:permission","description":"Library convention 15: a licence that asks for no reciprocity and no source code asks only that the notice travels with the copy, which is a duty on the acts it governs and not a bar on putting the copy under other terms. dalicc:ChangeLicense is therefore a permission here, and the prohibition the earlier reading wrote is removed. The text reads: \"Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6.1 alone or in any derivative version, provided ... CNRI's License Agreement is retained in Python 1.6.1.\" The permission carries the dalicc:compliantLicense duty, as Apache-2.0 does, because the notice has to survive the relicensing.","action":"applied"}],"family":"Python, PHP, Unicode and W3C","port_of":null,"variant_kind":"version","notes":"cc:legalcode points at the python.org download page SPDX lists first; the agreement is also reproduced inside the Python-2.0.1 text as the CNRI section."}