473,717 Members | 2,057 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Python license question

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.

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. :)

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?
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.

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. 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.

We would have a problem with our customers distributing our derivative
work or preparing derivative works of our derivative work. We could of
course apply our own restrictive license to things which are truly
ours, but we cannot do this to the work derived from python because
that would conflict with section 2 of the python license.

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.

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.

Martitza

Oct 9 '06 #1
4 2123
[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/PythonSo...tionLicenseFaq

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).
Oct 9 '06 #2
Mr. Peters:

Thank you for so kindly taking the time to resolve my misunderstandin gs
and to elaborate on the intent of the PSF.

In particular, thank you for explaining in plain language how the
licenses stack. I'm sure our counsel will figure out what a license
from a defunct BeOpen means and anything we do will be in compliance
with all of the license stack.

Best Regards,
Martitza Mendez
Tim Peters wrote:
[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/PythonSo...tionLicenseFaq

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).
Oct 9 '06 #3
[Martitza]
Mr. Peters:
Na, my father's dead -- you can call me Uncle Timmy ;-)
Thank you for so kindly taking the time to resolve my misunderstandin gs
and to elaborate on the intent of the PSF.

In particular, thank you for explaining in plain language how the
licenses stack. I'm sure our counsel will figure out what a license
from a defunct BeOpen means and anything we do will be in compliance
with all of the license stack.
I don't know BeOpen.com's legal status (for example, I don't know
whether a bankruptcy judgement was issued). CWI is a Dutch national
research institute, and CNRI and the PSF are both US 501(c)(3) public
charities -- BeOpen.com was the only for-profit entity in Python's
licensing history. It's quite intentional that the top three licenses
on the stack "look pretty much alike" -- if I had my way, there would
be only one license, but the parties involved couldn't agree to that
at the time.

While at least the PSF will pursue licence violations, the license is
so permissive that there hasn't yet been any need for that. To the
best of my knowledge, BeOpen.com, CNRI, and CWI have never had license
complaints against anyone's use of Python either.
Oct 9 '06 #4

"Tim Peters" <ti********@gma il.comwrote in message
news:1f******** *************** *************** ****@mail.gmail .com...
I'm not a lawyer, so can't give legal advice. I can explain intent,
speaking as a Director of the Python Software Foundation.
This strikes me as an excellent reply, which would be worth adding to the
site as a FAQ (possilby after running it by PSF's lawyer). I am sure the
OP is not the first with such questions.

tjr

Oct 9 '06 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

36
2629
by: Tim Churches | last post by:
If a compiled Python extension module B includes code from some other software A which is licensed only under the GPL, do other Python programmes, C, which import module B also need to be licensed under a GPL-compatible license (assuming C is/are to be distributed to third parties)? I think the answer is yes, both from a lay (IANAL) legal and moral point-of-view, but I am interested in hearing any arguments to the contrary. Note that I...
23
8484
by: eeykay | last post by:
Hello All, I am trying to convince my client to use Python in his new product. He is worried about the license issues. Can somebody there to point me any good commercial applications developed using python ?. The licence clearly says Python can be used for commercial applications. Is there any other implications like that of GPL to make the source open ? Thanks for any help. eeykay
5
3180
by: John Hunter | last post by:
I have a question about what it takes to trigger GPL restrictions in python code which conditionally uses a GPL library. Here is the context of my question. matplotlib, which I develop, is a plotting module which is distributed under a PSF compatible license, and hence we avoid using GPLd code so as to not trigger the GPL requirements. matplotlib has rigid segregation between the front end (plotting commands, figure objects, etc) and...
18
2051
by: Antoon Pardon | last post by:
I have made a module derived from the Queue module deliverd with python 2.3. I would like to make this module (called tube) available for other people. However it is not clear to me how I can do this in accordance with the python license. First of all it seems I have to make a sumary of how my module differs from the original. Second it seems I have to include the following in
122
7872
by: seberino | last post by:
I'm interested in knowing which Python web framework is most like Ruby on Rails. I've heard of Subway and Django. Are there other Rails clones in Python land I don't know about? Which one has largest community/buzz about it?
35
2883
by: Michel Sanner | last post by:
Hello, One of the greatest feature of Python in my opinion is the way the interpreter can be used to integrate a wide variety of software packages by dynamically linking them. This approach has been extremely successful for us so far but now I run into a license nightmare. Some the libraries we wrapped using SWIG are under GPL but the applications we are distributing are not (mainly because
17
8726
by: Johann C. Rocholl | last post by:
Just in case anybody has the same problem, here's my first attempt at implementing a subset of the PNG spec in pure Python. I license it to you under the terms of the GNU GPL. http://trac.browsershots.org/browser/trunk/shotfactory/lib/image/png.py It encodes RGB images with 24 bits per pixel into PNG, using only the modules sys, zlib and struct. These are all included in the base distribution of Python. You don't need gd or imlib.
20
2281
by: Guy Fawkes | last post by:
Hi, I was wondering if Python programs always need to include the source code with the program itself. I'm asking this because I don't want my program to be open-source and so far all the Python programs I've seen included the source code. Is it possible to make an executable with only bytecode? Thanks in advance!
0
8823
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8719
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
9348
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9202
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
9048
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7981
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
6648
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
4739
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3177
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.