Written by Stephan Deibel, Chairman of the Board, Python Software Foundation. A version of this article was originally published in The Python Papers volume 2, issue 4.
Last updated March 2008
“The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of the international community of Python programmers.”
The Python Software Foundation (PSF) is the non-profit legal entity that holds and protects the intellectual property rights behind Python, keeping it free and open for all to use. The PSF also contributes to the Python community by underwriting or sponsoring conferences, funding grants and special projects, and leading volunteer efforts.
Everyone that programs with Python should know at least a little about the PSF, especially how the Python license and trademarks work. While this may seem boring to many programmers, there is much that an aware Python users base can do to help protect Python, and keep the community behind Python vital and productive.
The PSF was formed in 2001 as a non-profit corporation in the state of Delaware, USA. Although it was formed in the US, the PSF's mission is world-wide, extending to wherever there are Python programmers. Its membership is international, including individuals that have played a significant role in the Python community and companies that sponsor the PSF because they have an investment in Python. Both individual and sponsor members have voting rights in the organization and thus are selected based on their ability to take part in the PSF's stewardship role. It is the existing members that vote to accept new individual and sponsor members to the organization.
The officers and board of directors of the PSF take care of most of the day-to-day business of running the organization. The board of directors is voted in by the members and the officers are appointed by the board. Some of the officers are paid a small salary since their work requires constant availability and many hundreds of hours of effort per year. The other officers and directors are unpaid volunteers. Currently, we have officers and board members in the US, Canada and Germany.
The board of directors meets monthly, via IRC, and the PSF members meet once a year in person at the North American PyCon conference. Members that cannot be present in person at the annual meeting can vote by ballot submitted ahead of time or by proxy (assigning their vote to someone they trust).
More information, including the membership roster and public records, is available at http://python.org/psf
The PSF is funded from a variety of sources. For example, in 2006 a total of $168K in revenues came from: Individual donors (13%), PSF sponsor fees (17%), PyCon registration and PyCon sponsor fees (51%), participation in the Google Summer of Code program (14%), and interest on investments and other minor sources (5%).
In 2006 the PSF spent $158K total, for: PyCon 2006 related expenses (67%), funded grants (13%), the advocacy special project (10%), payroll for officers (5%), and other expenses such as bank charges, legal fees, and insurance (5%).
The PSF's assets currently stand at about $310K. A healthy balance enables the foundation to take on the financial risk of underwriting PyCon each year, and provides a reserve for any unexpected expenses, legal or otherwise.
The PSF has obtained the status of 501(c)3 non-profit, which makes contributions from individuals deductible from US federal taxes. The PSF is not yet officially registered as a non-profit in other countries. However, in many cases, donations and sponsor fees paid by a business are also pre-tax, but this depends on local rules.
Python is licensed under a "stack" of open source licenses, which represent its history as an open source project under the sponsorship of a number of different organizations. The topmost license on this stack is the PSF License (http://opensource.org/licenses/PythonSoftFoundation.php). Everything added to Python since version 2.0.1 is covered by the PSF License, while some older portions of the code are covered by the older licenses lower down on the stack.
For most users, the details of the license stack are irrelevant. All of the licenses grant permission to use, modify, and redistribute the code in an non-restrictive way. However, it is a good idea to have a basic understanding of how the licensing works, how it relates to copyright ownership, and what factors make an open source release legally valid.
In fact, the PSF does not directly own the copyright to any of the Python source code. The copyrights are retained by the organizations and individuals that contributed the code. The PSF obtains its rights through licensing. An important concern here is that the licensing was made by those that had a legal right to do so, in other words by the original authors or copyright holders of the code.
The legal history of the code in Python is thus defined in two ways:
(1) In the earlier days of Python, employee contracts and related law ensured that the organizations that released Python under the various licenses had the rights to the code that was added in each release. The open source licenses used by those organizations granted all the necessary rights to the world in general, which of course includes the PSF. The only significant right the PSF does not have to this code is to re-license it. This is the reason for the continued existence of the older licenses in the license stack. Since some of the organizations involved no longer exist, it is unlikely that the PSF could obtain relicensing rights in the future. Thus, the older licenses cannot be removed from the license stack.
(2) For newer contributions, including all those since the PSF License was introduced, the PSF obtains the necessary rights to the code first from the author through a contribution agreement. The author licenses the code to the PSF under one of several specially selected open source licenses and simultaneously signs an agreement that gives the PSF the right to relicense the code without restriction. The code is then re-licensed under the PSF License.
The initial licenses that accompany the contribution currently can be either the Academic Free License version 2.1 or the Apache License version 2.0. These were selected because they contain a patent clause and avoid unnecessary restrictions on the licensee.
The important thing to note here is that the PSF can demonstrate that Python contains only code licensed to it by organizations and individuals that had the necessary rights to the code in order to make that license legally valid. Python's case is further strengthened by the existence of an intact revision control record that dates back to its very beginning, and extensive email and other records that help to establish when and by whom the code was developed. This body of evidence makes any legal claim against Python's open source status difficult and very unlikely to succeed.
For more information, see the PSF License FAQ:
The PSF also holds and protects the trademarks behind the Python programming language. This includes the "Python" name, when used in the domain of programming languages, and also the Python logos. "Python" is a registered trademark in the US, while the logos have not yet been registered.
There is much confusion about the nature and purpose of trademarks, and they are often incorrectly viewed as incompatible with open source. This is simply not true. Trademarks are another way to help keep Python free and open for all to use, and protecting the trademarks helps to prevent confusion about the nature and purpose of Python.
For example, if an entirely different programming language were named "Python" or even "Python Plus", it could cause considerable confusion, making life more difficult for the developers and users of either language. Any other Pythons should be the same programming language, within reason, even if they implement the language differently as do IronPython and Stackless Python.
Similarly, the Python logos must refer only to the Python programming language and they should not be modified in any way (color, font, shape, etc.) as this can cause confusion. It dilutes the "brand" that helps to make Python distinctive and identifiable to the user (the "consumer").
In fact, trademarks are intended primarily as a way to protect the consumer, and the burden of keeping the trademark clear of confusion falls to the trademark owner. Because of this, the PSF has no choice but to defend the Python related trademarks. Failing to do so would mean that we lose rights to the marks and would be unable to prevent use of the name for another programming language, or misleading uses such as those that obscure the fact that Python is open source.
Because Python is free and open, our enforcement of the trademarks is indeed mostly about avoiding confusion and not at all about holding the trademarks close as would be done with some proprietary marks. We want the trademarks to be used as widely as possible. This includes also the unaltered logos, which are often used to indicate suitability for Python or implementation in Python.
One important and useful idea that applies to trademarks in general is the notion of "nominative use" of the trademark. A trademark can always be used to name the trademarked entity itself so long as the use does not imply some special relationship with the trademark holder. Thus, the word "Python" can be used anywhere to refer to Python without asking the PSF for permission, regardless of whether or not the use is commercial.
The PSF has extended the idea of nominative use also to the unaltered Python logos, making it possible to use the logos in most contexts without any special permission. Again, we want the trademarks to be used widely.
For details, see the PSF Trademark Policy:
PyCon and Other Conferences
In 2003, the Python community started to run its own low-cost developer-focused Python conference called PyCon. This conference format proved to be quite successful and the conference has experienced substantial growth in size and offerings each year. The original PyCon conference is held in North America. In 2007, PyCon-style conferences were added in Italy, the UK and Brasil.
The PSF has been closely involved with the North American PyCon since its creation. It provides the financial backing that is necessary to plan and run the conference, and has helped in other ways, for example by providing grants to pay need-based travel expenses for selected attendees ($6.2K in 2007).
Any profit or loss from the conference is absorbed by the PSF. To keep the conference affordable, the organizers attempt to break even or sustain a small loss. However, due to the continued unexpected growth in the conferences, each of the five conferences held so far has turned a profit. For example, PyCon 2007 drew in 593 attendees (seven short of the venue's limit) and an unexpected six platinum sponsors, as well as sixteen other sponsors. While the registration fee for attendees is set below the cost of running the conference, the added sponsor fees more than made up the difference each year.
While unintended, turning a profit at PyCon has helped the PSF build a reserve fund which now makes it possible to take on the significant financial commitment of booking ever-larger conference venues.
More recently, PSF has started to fund some other Python conferences by sponsoring (or donating funds to) the organizations that run the conferences. In 2007 this included EuroPython ($5K), PyCon Italia (1.5K Euros), PyCon UK ($2.5K) and the Argentinian Python conference ($500).
The PSF will continue to provide support for Python conferences around the world, certainly by making donations to each event and possibly also by underwriting the major financial commitments made by these other community-organized conferences as they grow.
For more information, see http://python.org/community/pycon/
In 2004, the PSF issued its first call for grant proposals, with a total budget of $40K. In response to that call, over 60 proposals were submitted. Three of them were selected for funding:
Software Carpentry (Greg Wilson, $27K) – an intensive introductory course in basic software development practices for scientists and engineers. The proposed portion of the work was completed in October 2006 and the course is still actively being improved and expanded. For details, see http://www.swc.scipy.org/
Implementation of PySNMPv3 (Ilya Etingof, $1.5K) – an SNMP library for Python. This was completed in October 2005. For details, see http://pysnmp.sourceforge.net/
Moving Jython Forward (Brian Zimmer, $10K) -- to bring Jython up to date with CPython. Due to unexpected changes in the proposer's career, the work for this grant was only partially completed, and only a subset of the funding ($2.3K) was paid. Even so, the Jython project has seen progress with the release of version 2.2 in August 2007. For details, see http://jython.org/
This initial experiment with a formal grant process, although largely successful, has not yet been repeated because of the amount of volunteer labor that the grant review and oversight process consumed.
The PSF board is, however, always open to receiving proposals for funded work, which will be considered along with our other initiatives. Proposals that are likely to be successful are those that will bootstrap a new project or sub-section of the Python community in a relatively cost effective manner. Projects that won't be maintained after the funding ends are unlikely to be considered.
For more information, see http://www.python.org/psf/grants/
Special Project: python.org redesign
The PSF has funded several special projects outside of the formal grants process. One of these was the redesign of the python.org website in 2005 and 2006. This included the graphic design for the site and Python logo, repackaging of the site content in a uniform format, and development of a new build system for the site.
The rationale for funding this change was that the volunteer site maintainers did not have the time available to make these major labor-intensive changes and the community had failed to agree on several earlier redesign attempts (both graphical design and improvement of the technology behind the site).
Yet, a general consensus existed that the old site needed some intensive work.
This contract (valued at 4K GBP) was awarded to the proposer, Tim Parkin of Pollenation. The graphical design and the repackaging of content (with help from volunteers during the 2006 PyCon Sprints) were both successful. The new general purpose build system, called Pyramid, was however found to be slow, complicated, and hard to install. This made it difficult for volunteers to be able to get started with maintaining the site. Some improvements were made, but ultimately Pyramid was replaced with a much simpler and faster build system that is custom-designed for python.org.
Despite these initial problems with the build software, this project was a success. The look of the site has been improved and moving to a CSS based design and uniform content format will make any future changes in design or toolset much easier.
To compare the new and old designs, visit http://python.org/ and http://web.archive.org/web/20060207222027/http://www.python.org/
Looking ahead, there is still much work to be done in improving the site, adding and keeping content up to date, and even rethinking some of the structure and presentation (for example, to make it more accessible to new Python users, or to allow annotation). Please consider volunteering as a site maintainer.
For more information, see http://www.python.org/dev/pydotorg/website/
Special Project: Advocacy Coordinator
Another special project undertaken by the PSF was the funding of a paid Advocacy Coordinator for 13 months during 2006 and 2007 ($46K total). This was a proposal from Jeff Rush, who had played a significant role in the organization and promotion of the 2006 and 2007 PyCons. The goal was to bootstrap a community of people interested in advocating and promoting Python.
Unfortunately, this project failed in its primary goal – relatively few volunteers were found to contribute to the advocacy effort and no sustained advocacy community appeared.
However, several important tasks were accomplished and these more than justified the overall expense of the project:
Targeted promotion of PyCon 2007 led to a 50% increase in the number of attendees at the conference, compared to 2006 (from 410 to 593 attendees). The PSF earned an unexpected profit of $32.5K from PyCon 2007.
Intensive effort on the Forrester Wave report on dynamic languages led Forrester to conclude that among all the dynamic languages "Python represents the best combination of features, breadth of applicability, and strong community." These reports are used by application development and management professionals to make technology choices. For details see: http://www.forrester.com/Research/Document/Excerpt/0,7211,41386,00.html
A number of high-quality screencasts about Python were developed. These are designed to make it easier for new users to get started with Python. They can be seen, along with videos contributed by other authors, at http://www.showmedo.com/videos/python
The lesson learned from this experiment is that, although many individual advocates for Python exist, the Python community as a whole is not interested or able to engage in organized advocacy. On the other hand, funding specific projects aimed at promoting Python is a fruitful way for the PSF to approach advocacy in the future and the PSF board is always open to new proposals in this area.
For more information, see http://wiki.python.org/moin/PythonAdvocacyCoordinator
Become a Volunteer
The exact total size of the Python user base is unknown, but even the known user base utterly dwarfs the number of people that actively contribute to Python itself, or to the community that surrounds it.
If you are not already working on Python or its website or contributing in some other way, please consider getting involved! Python is open source, so it is – of course – the community that makes it all work.
Helping out is fun, and it can be great for your career as well. Some of the many options to consider are:
- Work on python.org: http://www.python.org/dev/pydotorg/website/
- Work on updating and expanding the documentation for Python: http://www.python.org/doc/
- Work on other infrastructure, such as the software behind http://us.pycon.org/ or the wiki at http://wiki.python.org/ or by helping with system administration
- Become an advocate: Blog, write, talk, or screencast about Python, and show your friends what it can do. Casual peer recommendation is the number one most trusted source of information used in making technology choices.
- Promote Python to your boss and encourage its use in internal projects. A company's use of Python in software testing, build scripting, and intranet applications is often followed by use of Python in its core products.
- Support your local Python user group, or start a new group in your area: http://wiki.python.org/moin/LocalUserGroups
- Attend or help out with your regional Python conference: http://www.python.org/community/workshops/
- Work on Python or its standard libraries: http://www.python.org/dev/
Notice that software development is just one part of the overall picture, and there is much that you can do without becoming an expert in programming language design.
Regardless of how you get involved, the best way to get started is to find some useful task or project where you can contribute. Take the initiative to work on it (no need to ask for permission or instructions), announce it, and you'll soon find yourself engaged and having fun as part of the world-wide Python community.
Make a Donation
Even if you cannot get involved as a volunteer, please consider donating to the PSF and Python financially in one or more of the following ways:
- Donate to the PSF to help fund our activities: http://www.python.org/psf/donations/
- Ask your company to sponsor PyCon. This is a great way to find employees that know Python, or to gain exposure for your company: http://us.pycon.org/2008/sponsors/
- If your company uses Python extensively, becoming a sponsor of the PSF helps protect that investment: http://www.python.org/psf/sponsorship/
More information on the PSF, including the membership roster and public records, is available at http://python.org/psf
The author of this article welcomes questions and suggestions and can be contacted via email at sdeibel at python dot org