Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-126022: make license.rst consistent with LICENSE #128516

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 57 additions & 54 deletions Doc/license.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,59 +11,63 @@ History of the software
=======================

Python was created in the early 1990s by Guido van Rossum at Stichting
Mathematisch Centrum (CWI, see https://www.cwi.nl/) in the Netherlands as a
Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands as a
successor of a language called ABC. Guido remains Python's principal author,
although it includes many contributions from others.

In 1995, Guido continued his work on Python at the Corporation for National
Research Initiatives (CNRI, see https://www.cnri.reston.va.us/) in Reston,
Research Initiatives (CNRI, see https://www.cnri.reston.va.us) in Reston,
Virginia where he released several versions of the software.

In May 2000, Guido and the Python core development team moved to BeOpen.com to
form the BeOpen PythonLabs team. In October of the same year, the PythonLabs
team moved to Digital Creations (now Zope Corporation; see
https://www.zope.org/). In 2001, the Python Software Foundation (PSF, see
team moved to Digital Creations, which became
partev marked this conversation as resolved.
Show resolved Hide resolved
Zope Corporation. In 2001, the Python Software Foundation (PSF, see
https://www.python.org/psf/) was formed, a non-profit organization created
specifically to own Python-related Intellectual Property. Zope Corporation is a
specifically to own Python-related Intellectual Property. Zope Corporation was a
partev marked this conversation as resolved.
Show resolved Hide resolved
sponsoring member of the PSF.

All Python releases are Open Source (see https://opensource.org/ for the Open
All Python releases are Open Source (see https://opensource.org for the Open
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
All Python releases are Open Source (see https://opensource.org for the Open
All Python releases are Open Source (see https://opensource.org/osd/ for the Open

Maybe linking the page directly would be a good idea.

Copy link
Contributor Author

@partev partev Jan 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these suggestions make sense but they would make license.rst deviate from LICENSE again. @gvanrossum do you have any advice here?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would strongly vote for keeping the exact text of LICENSE here, no matter how strong your urge to improve upon the language or the URLs. (With the exception of dead URLs, where we can substitute archive.org URLs if they exist.)

Ideally even the line breaks are in the same place -- that way you should be able to diff the two files and get a sense of any accidental deviations (ignoring markup and leading/trailing stuff).

My goal is that in the future changes to LICENSE are always matched with 100% equivalent changes to Doc/license.rst.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the feedback @gvanrossum-ms . Please let us know if you are ok with the original pull request (without the suggestions) which tries to match the exact text of LICENSE as closely as possible.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Sorry, I accidentally posted using my alter ego as Microsoft employee. :-)

Your changes are improvements, but don't completely make license.rst the same as LICENSE. Using diff -u LICENSE Doc/license.rst I found at least one other difference: in one place it has "PSF License Agreement" where LICENSE has "PSF License Version 2". Check for yourself to see if there are other significant differences. There are also differences in the top-level heading ("HISTORY OF THE SOFTWARE" vs. "History and License") -- though it's debatable if that could be intentional. @hugovk might have an opinion?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's a visual diff:

image

Headings

LICENSE begins "A. HISTORY OF THE SOFTWARE", license.rst begins "History and License" but then has a "History of the software" subheading, so that's okay.

Other changes (ignoring rewraps)

LICENSE has "which became Zope Corporation" and "was a sponsoring member", which matches the changes here to license.rst. Also good.

Rewraps and trailing slash in URLs: we could make license.rst match LICENSE, just so that the diffs are as close as possible, but I'm not too bothered.

1.6.1 in the table

There's a notable difference in the table:

image

LICENSE says 1.6.1 is GPL-compatible, with an extra footnote. This was added in 2002:

7df772b

And license.rst and the the docs were imported to this repo in 2007, but still saying 1.6.1 was not GPL-compatible:

116aa62#diff-431512c443051474cee831c669b5be81ebff617ca22a8aacea8a880dc5a0c008R45

So we should probably add this note to the rst as well.

PSF License Version 2

LICENSE changed in 2004 from being a licence for a specific Python version (2.4 at the time) to being Version 2:

acaffe6

This commit also explains there were no other changes to the licence.

When license.rst was imported with the docs in 2007, it still referred to the Python version: the |release| part is substituted for the actual version in each release. For example, https://docs.python.org/3/license.html has lots of mentions of 3.13.1.

So I think we should also update license.rst to refer to Version 2.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PS I'll note the parent issue for this PR is about the stale Zope Corporation link: #126022

@partev We can either expand the issue to also update the table and licence, or open a new issue for those if you'd prefer to keep this PR smaller.

Copy link
Contributor Author

@partev partev Jan 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for the comprehensive feedback @hugovk . I added another commit to this PR that makes license.rst a lot more consistent with LICENSE. the main differences left are:

  1. line wraps
  2. in license.rst there is an extra sentence "See Licenses and Acknowledgements for Incorporated Software for an incomplete list of these licenses." and also a list of all those licenses, which are missing in the original LICENSE.

Source Definition). Historically, most, but not all, Python releases have also
been GPL-compatible; the table below summarizes the various releases.

+----------------+--------------+------------+------------+-----------------+
| Release | Derived from | Year | Owner | GPL compatible? |
+================+==============+============+============+=================+
| 0.9.0 thru 1.2 | n/a | 1991-1995 | CWI | yes |
+----------------+--------------+------------+------------+-----------------+
| 1.3 thru 1.5.2 | 1.2 | 1995-1999 | CNRI | yes |
+----------------+--------------+------------+------------+-----------------+
| 1.6 | 1.5.2 | 2000 | CNRI | no |
+----------------+--------------+------------+------------+-----------------+
| 2.0 | 1.6 | 2000 | BeOpen.com | no |
+----------------+--------------+------------+------------+-----------------+
| 1.6.1 | 1.6 | 2001 | CNRI | no |
+----------------+--------------+------------+------------+-----------------+
| 2.1 | 2.0+1.6.1 | 2001 | PSF | no |
+----------------+--------------+------------+------------+-----------------+
| 2.0.1 | 2.0+1.6.1 | 2001 | PSF | yes |
+----------------+--------------+------------+------------+-----------------+
| 2.1.1 | 2.1+2.0.1 | 2001 | PSF | yes |
+----------------+--------------+------------+------------+-----------------+
| 2.1.2 | 2.1.1 | 2002 | PSF | yes |
+----------------+--------------+------------+------------+-----------------+
| 2.1.3 | 2.1.2 | 2002 | PSF | yes |
+----------------+--------------+------------+------------+-----------------+
| 2.2 and above | 2.1.1 | 2001-now | PSF | yes |
+----------------+--------------+------------+------------+-----------------+
+----------------+--------------+------------+------------+---------------------+
| Release | Derived from | Year | Owner | GPL-compatible? (1) |
+================+==============+============+============+=====================+
| 0.9.0 thru 1.2 | n/a | 1991-1995 | CWI | yes |
+----------------+--------------+------------+------------+---------------------+
| 1.3 thru 1.5.2 | 1.2 | 1995-1999 | CNRI | yes |
+----------------+--------------+------------+------------+---------------------+
| 1.6 | 1.5.2 | 2000 | CNRI | no |
+----------------+--------------+------------+------------+---------------------+
| 2.0 | 1.6 | 2000 | BeOpen.com | no |
+----------------+--------------+------------+------------+---------------------+
| 1.6.1 | 1.6 | 2001 | CNRI | yes (2) |
+----------------+--------------+------------+------------+---------------------+
| 2.1 | 2.0+1.6.1 | 2001 | PSF | no |
+----------------+--------------+------------+------------+---------------------+
| 2.0.1 | 2.0+1.6.1 | 2001 | PSF | yes |
+----------------+--------------+------------+------------+---------------------+
| 2.1.1 | 2.1+2.0.1 | 2001 | PSF | yes |
+----------------+--------------+------------+------------+---------------------+
| 2.1.2 | 2.1.1 | 2002 | PSF | yes |
+----------------+--------------+------------+------------+---------------------+
| 2.1.3 | 2.1.2 | 2002 | PSF | yes |
+----------------+--------------+------------+------------+---------------------+
| 2.2 and above | 2.1.1 | 2001-now | PSF | yes |
+----------------+--------------+------------+------------+---------------------+

.. note::

GPL-compatible doesn't mean that we're distributing Python under the GPL. All
Python licenses, unlike the GPL, let you distribute a modified version without
making your changes open source. The GPL-compatible licenses make it possible to
combine Python with other software that is released under the GPL; the others
don't.
(1) GPL-compatible doesn't mean that we're distributing Python under the GPL.
All Python licenses, unlike the GPL, let you distribute a modified version
without making your changes open source. The GPL-compatible licenses make
it possible to combine Python with other software that is released under
the GPL; the others don't.

(2) According to Richard Stallman, 1.6.1 is not GPL-compatible, because its license
has a choice of law clause. According to CNRI, however, Stallman's lawyer has
told CNRI's lawyer that 1.6.1 is "not incompatible" with the GPL.

Thanks to the many outside volunteers who have worked under Guido's direction to
make these releases possible.
Expand All @@ -73,10 +77,10 @@ Terms and conditions for accessing or otherwise using Python
============================================================

Python software and documentation are licensed under the
:ref:`PSF License Agreement <PSF-license>`.
Python Software Foundation License Version 2.

Starting with Python 3.8.6, examples, recipes, and other code in
the documentation are dual licensed under the PSF License Agreement
the documentation are dual licensed under the PSF License Version 2
and the :ref:`Zero-Clause BSD license <BSD0>`.

Some software incorporated into Python is under different licenses.
Expand All @@ -86,39 +90,38 @@ See :ref:`OtherLicenses` for an incomplete list of these licenses.

.. _PSF-license:

PSF LICENSE AGREEMENT FOR PYTHON |release|
------------------------------------------
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
--------------------------------------------

.. parsed-literal::

1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and
the Individual or Organization ("Licensee") accessing and otherwise using Python
|release| software in source or binary form and its associated documentation.
the Individual or Organization ("Licensee") accessing and otherwise using this
software ("Python") in source or binary form and its associated documentation.

2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python |release| alone or in any derivative
distribute, and otherwise use Python alone or in any derivative
version, provided, however, that PSF's License Agreement and PSF's notice of
copyright, i.e., "Copyright © 2001 Python Software Foundation; All Rights
Reserved" are retained in Python |release| alone or in any derivative version
Reserved" are retained in Python alone or in any derivative version
prepared by Licensee.

3. In the event Licensee prepares a derivative work that is based on or
incorporates Python |release| or any part thereof, and wants to make the
incorporates Python or any part thereof, and wants to make the
derivative work available to others as provided herein, then Licensee hereby
agrees to include in any such work a brief summary of the changes made to Python
|release|.
agrees to include in any such work a brief summary of the changes made to Python.

4. PSF is making Python |release| available to Licensee on an "AS IS" basis.
4. PSF is making Python available to Licensee on an "AS IS" basis.
PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF
EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR
WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE
USE OF PYTHON |release| WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.

5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON |release|
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF
MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON |release|, OR ANY DERIVATIVE
MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE
THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.

6. This License Agreement will automatically terminate upon a material breach of
Expand All @@ -130,7 +133,7 @@ PSF LICENSE AGREEMENT FOR PYTHON |release|
trademark sense to endorse or promote products or services of Licensee, or any
third party.

8. By copying, installing or otherwise using Python |release|, Licensee agrees
8. By copying, installing or otherwise using Python, Licensee agrees
to be bound by the terms and conditions of this License Agreement.


Expand Down Expand Up @@ -205,7 +208,7 @@ CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
Agreement. This Agreement together with Python 1.6.1 may be located on the
internet using the following unique, persistent identifier (known as a handle):
1895.22/1013. This Agreement may also be obtained from a proxy server on the
internet using the following URL: http://hdl.handle.net/1895.22/1013."
internet using the following URL: http://hdl.handle.net/1895.22/1013".

3. In the event Licensee prepares a derivative work that is based on or
incorporates Python 1.6.1 or any part thereof, and wants to make the derivative
Expand Down Expand Up @@ -273,7 +276,7 @@ CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2

.. _BSD0:

ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON |release| DOCUMENTATION
ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION
----------------------------------------------------------------------

.. parsed-literal::
Expand Down
Loading