Python license question

Tim Peters tim.peters at gmail.com
Sun Oct 8 21:26:09 EDT 2006


[Martitza]
|> Hi.  I work for a small company (actually in process of forming)
> interested in embedding or extending python as part of our commercial
> non-open-source product.  We have legal counsel, but are interested in
> the spirit as well as the letter of the law.  Not much seems to have
> been written about the python license since version 2, so pointers to
> more recent discussions or contacts are appreciated.  If this is not
> the right place to ask these questions, I would welcome better ideas.
>
> We've read the license and "layman's language" at
> http://www.python.org/psf/license/ and are need help reconciling the
> two.

There's also the informal license FAQ:

    http://wiki.python.org/moin/PythonSoftwareFoundationLicenseFaq

I'm not a lawyer, so can't give legal advice.  I can explain intent,
speaking as a Director of the Python Software Foundation.

> First Observation
> The entire license -- such as produced by license() -- includes a lot
> of information which appears to be historical or anecdotal, not the
> kind of language our lawyers usually see in licensing agreements.
> Lawyers claim they don't like "extra" language.  You be the judge.  :)

Section A (HISTORY OF THE SOFTWARE) isn't really part of the license.
But because the PSF doesn't have the right to /re/license the portions
of Python copyright by CWI, CNRI, or BeOpen.com, the history given
there can be helpful if anyone is inclined to spend (IMO) too much
time worrying about the licenses.

> First Question
> Is all of that information really a required part of the license we
> pass on to our customers or is the "PYTHON SOFTWARE FOUNDATION
> LICENSE VERSION 2" portion sufficient?

Section A is not required.  All of section B is required.  Parts of
Python are copyrighted by, and licensed by, the four entities whose
licenses appear in section B.

> Second Observation
> Referring to sections 2 and 3 of the PSF License Version 2... Our
> non-open-source product will be a derived work, either by extending or
> embedding the python interpreter.  According to section 3, we will
> briefly summarize these modifications to the python interpreter as
> these relate to our product.  Good.

Indeed ;-)  Note that there are no specific requirements about detail,
and this is really for your benefit:  the more clearly you identify
the parts that are your original work, the easier it will be to prove
it is in fact your work (should that become necessary).

The NEWS file that comes with a Python distribution is the PSF's
version of meeting this requirement (by the similar terms in the CNRI
and BeOpen.com licenses, the PSF is also required to summarize the
modifications the PSF makes!).

> Section 2 says that we (as Licensee of the original python) have to
> include without our modified python a copy of the license.  The License
> explicitly states in section 1 that it is between the PSF and the end
> user.

The phrase "end user" appears nowhere in the license.  You must mean
Licensee.  As a Licensee, you're free (heck, encouraged) to make
derivative works, but you have no legal authority to put a /different/
license on any part of the Python you started with.  In exactly the
same way, the PSF has no legal authority to put a different license on
the versions of Python the PSF started with.

When you distribute your derived work, your "end users" have rights to
use the PSF-copyrighted portion of your work by exactly the same means
you have:  they also become Licensees of the PSF.  And of CNRI, and of
BeOpen.com, and of CWI.

The license you put on your derived work as a whole only controls the
portions of your derived work original with you, and your derived work
as a whole.  You can neither diminish nor increase the rights your end
users have wrt any of the Python code you obtained from the PSF --
that's not your work, you don't have and can't get copyright on it,
and you and your end users have exactly the same rights with respect
to it (as spelled out in the license file you're asking about).

> At the moment, we are the end user.  But when we sell our
> software as a derived work, our customer becomes the end user.  So our
> customers are entering into a direct agreement with PSF.  This
> indemnifies the PSF (sections 4,5,6,7) -- also good.
>
> But there is a side effect of section 2 that would seem to give our
> customers many rights ("to reproduce, analyze, test, perform and/or
> display publicly, prepare derivative works, distribute...") to the
> derived work we created.

I think the licenses are clear about this.  For example, the PSF
license at the top of the stack specifically says it only applies to
"Python 2.4 alone or in any derivative version".  The phrases "alone"
and "in any derivative version" intend to modify "Python 2.4".  It's
not intended to be read as the two separate phrases "Python 2.4 alone"
or "in any derivative version", and I'm not sure it even makes sense
to try to read it that way.

> We would have a problem with our customers distributing our derivative
> work or preparing derivative works of our derivative work.

It can simplify this a lot to remember that the entity holding
copyright on a piece of code is the only entity able to license it.
Thus your license applies to your work, the PSF license applies to the
PSF's work, and so on down the stack.  That's why there /is/ "a
stack":  nobody ever gets to forget about the licenses they started
with, they can only add more licenses to the pile.

> We could of course apply our own restrictive license to things which are truly
> ours,

And definitely should, if that's what you want.

> but we cannot do this to the work derived from python because
> that would conflict with section 2 of the python license.

That's not the intent.

> Second Question
> Can we we prevent our commercial customers from freely redistributing
> or modifying our derived version of python?  The answer seems like "no"
> from the License itself but "yes" from the layman's language.  Of
> course, our lawyers only look at the license.

You set the license on your portion of the work.  While it's hard to
conceive of anyone doing this, one of your customers certainly could
/extract/ pieces original to the PSF Python, and distribute those
(provided they met the PSF license terms, including reproducing the
PSF license).  If they include any of your original work in the
process, and the license you set doesn't allow that, then they're in
violation of your licensing terms.

> Thank you for your time.  Our goal is to understand and be good
> corporate citizens.  We believe python would be a great benefit to our
> customers, and we are looking for a viable business model that allows
> that.

Best wishes!  Everything you said you want to do is wholly consistent
with the PSF's intent, and the PSF license definitely intends to be
friendly to proprietary derivative works.  Ditto for the BeOpen.com,
CNRI, and CWI licenses (although I can't speak for those three in any
official capacity -- I can speak for the PSF in my role as a PSF
director).



More information about the Python-list mailing list