Explaining the Python Software Foundation (PSF) Part 1

by jesse in


Introduction

It's been over a year since I was elected by the PSF membership to be a member of the board of directors of the Python Software Foundation - this past week, I was lucky to be reelected. In that year, and even in the years prior to my election, I've long wanted to write down my thoughts and feelings about the foundation. This includes what it is, what it does and what it should do. You'd be stunned how many people - PSF members included - who don't know the answer to these three things. Worse still, you'd probably be even more surprised to find out many people who don't think the PSF should exist - or even that it exists at all.

Before we start, I want to clarify a few things:

  • What follows is my opinion; and may be shared by some - or none - of the current 13 PSF board members.
  • What follows is not the opinion of my employer (not that I need to say that...).
  • What follows has no relation or bearing on my role as co-chair and program committee chair of PyCon.
  • What follows may be incomplete, I reserve the right to amend or make clarifying statements.
  • None of this is meant as a criticism of any past directors, members, etc.

With that pile of disclaimers done, I will state this: what follows is my official opinion of the PSF and it's duties and role in the Python Community as a director of the PSF - this means that if you are a PSF member, and disagree with what follows, consider voting against me when the election comes up this year. I will state that it is my goal to not only express what I think the PSF is, does and should do but also to provide something that:

  • Helps explain the fundamentals of the PSF.
  • Helps explain what the Board of Directors is.
  • Helps make the argument why companies should become sponsors.
  • Helps make the argument as to why you should donate to the PSF.

Much of what I will be writing may be a simplified or updated version of the information that is also on the main Python Software Foundation page. I'd like to note that this post has spanned several months of on-and-off writing - and PyCon 2011 right in the middle of it, so there is some information shear as time passed.

Part one: What is the PSF

The first question to answer is the one I get the most often - "what is the PSF". The answer is actually pretty simple - the PSF (Python Software Foundation) is a legally recognized non profit organization (501(c)(3)) in the United States. It has a list of members, a board of directors, bank accounts and lawyers. PSF members are nominated and elected by existing PSF members, meaning that an existing PSF member says "I think this person should be a member" and then a vote is held and that person is (usually) voted in as a member.

It has a board of directors: this is a group of currently 13 people - not all of whom have to be PSF members - who are voted into office by existing PSF members. This election happens yearly, normally around the time of PyCon US (March, this year). Due to the PSF being a legal entity, we are required that all records be publicly accessible, including the list of directors/officers and membership. You can see the list of current directors/officers and members here. We are legally bound that all financial records be published. We have monthly board meetings - the minutes of past meetings are accessible from the PSF section of python.org.

The PSF legal entity accepts donations on behalf of the Python community from public sources, as well as "sponsor members" - these are companies whom pay an annual donation to support Python, and the PSF. The PSF holds the trademarks (logo, name, etc) for Python (the language) and dictates how those trademarks should be used via the trademarks committee. The PSF also maintains the "intellectual property" aspects of Python the language. Namely, it obtains (through licensing - see the contributor agreement) the necessary legal rights to redistribute the code, and if needed defend the open source state of Python the language in court.

To quote the somewhat dated executive summary:

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.

Now, there's some debate about the above statement - Python's history (see here) means that there are some potential snarls (see the FAQ as well) representing unanswered questions. It is more accurate to state that it is relatively unlikely that Python's status under copyright or its open source license would be challenged, and that the chance of success by a challenger would be relatively low.

While the PSF is a primarily US based organization, we have directors and members from all over the world, and our mission (more on that later) is a global mission - not a US only mission.

Now, you might ask yourself, 'why do we need this?' That's a valid question, and can be answered in part by looking around the open source world at similar organizations such as the Apache Software Foundation, Free Software Foundation, FreeBSD foundation, and finally the Software Freedom Conservancy. All of these organizations are well established and are very well known, and there are many more out in the wild.

Note: The SFC is special in that it acts as the proxy for smaller projects to accept donations and provide legal advice, hold trademarks or copyrights, etc. Twisted and PyPy, for example, are both SFC members.

Simply put: these organizations all operate on the same general core as the PSF - they are the legal/administrative branch of one or more open source projects. The hold the money, trademarks, and other things that are secondary to the actual writing of code, yet are still vastly important to large projects.

Besides the entire legal aspect (which while scary in some sense, is actually quite small) - the PSF "keeps the lights on". We pay for servers, bandwidth and other infrastructure pieces that keep the Python website, PyPI, source servers, etc. online. Again - this is part of the legal/administrative aspect: the PSF, in theory takes care of all of this "other" stuff so that the development and evolution of Python the language can continue.

Additionally, as a 501(c)(3) entity, we have a set of bylaws that dictate what, and how, we can do things. This applies especially PSF directors and board activities. See here.

So in summary: the PSF is a legal non-profit, with several hundred members from all over the world, elected by other members, with a board of directors also elected by the membership, who hold the intellectual property, money and legal counsel for Python, the programming language.

Part two: What is a PSF member?

Technically (per the bylaws), there are three types of PSF members, these are:

  • Nominated Members
    • Nominated members are the members I am going to focus on describing below. When I refer to "PSF members" these are what I am referring to in this document. Nominated members have voting rights within the PSF.
  • Sponsor Members
    • Sponsor members are like normal PSF members, but pay a yearly fee to the PSF. I typically refer to these as sponsors, rather then members, but "Sponsor member" is a recognized title. Sponsor members apply to the PSF, and are voted in.
  • Emeritus Members
    • These are inactive, non voting members. A member may chose to be moved to emeritus status due to, say, no longer being a Python user.

So what is a PSF member (Nominated Member officially):

I'm going to attempt to answer this question without heavily going into the mission of the PSF. New PSF members are selected from the Python community based on their contributions. Existing PSF members nominate and vote on new members, select the board of directors, and handle other legal or administrative business related to running the foundation."

PSF members do not necessarily need to be software developers or contributors to Python's source code. So pick a person - this person is an excellent writer, and has written thousands of words on Python the language, explaining a myriad of topics to people in numerous ways (books, articles, etc). By doing so, she/he has enriched the Python community - not through code perhaps - but through his works. An existing member feels that the writer's contributions warrant that they nominate that person for PSF membership, as they feels that he is both a thought leader and they would be an excellent steward and resource to manage the PSF and further it's mission.

After being elected, the new member gets access to the PSF wiki, and they are signed up for the psf-members mailing list, where discussions about the PSF occurs. This is a private list, and open to only PSF members. They are then free to propose PSF funded or guided activities (but then again - so is everyone, even non members) and participates in discussions and voting about normal everyday PSF business.

Voting happens infrequently, and for the most part, the PSF members list is quiet, except when hot topics (such as the diversity statement) come up.

The goal in having a general, and diverse membership is to help provide a diverse guiding hand to the foundation's activities. If we had only 10 members, we would hardly be representative of the Python community as a whole, and our perspectives and views would be harshly limited. Since the PSF's mission is broad, and global, it's important that we have many members from a variety of backgrounds as diverse as the community itself. This means we need people who do Python marketing, python programmers, framework authors, business people, etc.

The PSF members decide the fate of the entire foundation by selecting the board of directors. They are also a "resource pool". Frequently when an initiative (such as the sprints project, grants committee (under discussion) or the new PSF/Python Brochure being designed) comes up, they will be tapped, and asked to help lead and participate in the project.

Summary: PSF members vote on board members, sponsor members, and discuss initiatives in and for the community, such as grants programs, the sprints project, infrastructure changes, etc. They are frequently tapped to help seed a new project or initiative.

Part three: What is the PSF Board of Directors?

The PSF board is an elected (by the membership) group of 13 number of directors (the number 13 came via a PSF membership vote in 2010) people who are meant to be a diverse selection of people who do much of the heavy lifting of the foundation duties - including:

  • Voting on and working out the budget of the foundation.
  • Approving trademark usage (via the trademark committee).
  • Dealing with legal issues (such as contributor agreements).
  • Creation of new committees (such as the sprints committee, or grants committee).
  • Direct oversight of PyCon US (they are the conference chair's boss, and approve the PyCon budget).
  • Approving expenditures - such as developer grants, conference grants, website development, etc.
  • Approve and instigate new infrastructure improvements (via the infrastructure committee).
  • Approve awards (such as the Frank Willison and community awards)

You can see this activity in the minutes, and the resolutions. The directors listen to the membership, and act as leaders - we are the hands on the purse strings, keep the books, maintain sponsor relationships, and so on. Maintaining a board of directors is a requirement of the legal nonprofit status held by the PSF. The PSF board of directors are legal representatives of the foundation - what we say, when acting in official capacity is legally binding. Our votes are binding. What we say and do is public record (although much discussion happens on a private mailing list).

The board are the overview and oversight arm of the foundation. Between them, and the officers (more on those next) the "work" of the foundation is done. Committees (such as the sprints one) always have one board member acting on the committee, as oversight, and the rest of the committee is usually comprised of other PSF members or other people in the community. More than one board member can be on a committee

In practice: We debate. A lot. We vote - a lot. We have to make hard decisions, and should almost never completely agree with one another. If we are in constant agreement, we are not representative of the community and can easily do more harm then good. Then again, there are many things that are no brainers, such as providing grants for conferences, handing out awards, and things of that nature.

Most of the day-to-day work (mostly accounting and administrative) of the PSF is performed by the Officers of the foundation. In a normal company or organization, the board is less proactive and more oversight-oriented. The officers and membership (employees) perform most of the work, while the board acts as the oversight committee. The current PSF board lives in a state halfway between oversight, and officers/employees/workers. More on that in the mission section.

When I nominated, or rather, asked if I would stand, for the board of directors, I was honored to do so. I am honored to serve, and honored to have been elected. I've been very lucky to be able to enact some change, and act as one of the guiding members of the foundation. I have been able to vote on funding conferences, committees, etc. I have taken a very vocal role in the activities of the foundation, and have had the luxury of helping change a few things over the past year of being a director.

Part four: What are the PSF officers?

PSF officers are elected by the board to act as additional legal representatives of the PSF and board. They typically do not hold voting positions - meaning officers can be elected by the board, but do not vote on policy or resolutions (except for the chairman, who has voting rights). Each officer performs specific duties based on their role. For example the Secretary - keeping our meeting minutes, doing administrative work for the board and foundation, etc  and the Treasurer - who keeps the financial records, pays the bills, and keeps us honest. These officers are legal representatives of the foundation. Some officers are paid - for example, the Secretary and Treasurer are paid due to the sheer amount of work required by their roles.

The bylaws define the basic officers we have to have:

Section 6.1. Officers. The officers of the corporation shall consist of a President, a Secretary and a Treasurer, each of whom shall be elected by the Board of Directors. A Chairman of the Board, one or more Vice Chairmen, one or more Vice Presidents, and such other officers and assistant officers and agents as may be deemed necessary may be elected or appointed by the Board of Directors from time to time. Any two (2) or more offices may be held by the same person, except the offices of President and Secretary.

Here is a current list of officers:

  • Guido van Rossum, President
  • Steve Holden, Chairman
  • Pat Campbell, Secretary
  • Kurt Kaiser, Treasurer
  • Doug Hellmann, Communications
  • Van Lindberg, PyCon Chair

Officers can sign contracts in the name of the PSF, spend money, etc., just as board members can.

We really don't have that many. Guido is the president of the foundation, which is largely a formality/figurehead. He does not take an active role in the board's activities, votes, etc. We have "additional slots" per the bylaws, but no real need at this time.

Part five: What is the mission of the PSF?

I've intentionally avoided talking about the philosophy and mission of the PSF until now. I wanted to explain the mechanics of it before I went into my more subjective observations. Recently, a thread on the PSF-Members mailing list came up where this question was asked, and a fair amount of debate and discussion occurred. In that thread, I made a pretty passionate statement, some of which became part of the on-boarding materials for new PSF members - the welcome page you can see here.

I intend to expand on that just a little.

So, let's quote the PSF's mission statement:

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 a diverse and international community of Python programmers.

What this says... well - it's pretty broad, and vague - to an extent it has to be this way, but it doesn't give you much of an idea as to what the PSF does or should be doing. It's intentionally unbounded, and can therefore cause some confusion when people come looking for answers. After all, with something that open ended - what should the foundation be doing, what could it be doing - what are PSF Members supposed to be doing, if anything?

Well, let's back up a second. The PSF has the following assets:

  • Money
  • Lawyers
  • Members (including the board)

Seems pretty finite to me. We have some money, which we can spend, and we have some lawyers, which we can use to sue, or defend, or provide legal counsel, and we have members, who "do stuff". Really, it boils down to this (from a board perspective): We can spend money, and use a lawyer. But does spending money, or using lawyers really fulfill the spirit of that mission statement? How does the money get spent? Do we really need a lawyer?

Let's make this simpler:

The mission of the Python Software Foundation is to move the entire Python ecosystem forward.

Each and every Python programmer, author, and individual talking about Python right now is performing the mission of the PSF. Every bit of work (from writing code and documentation, to answering a question) moves Python's ecosystem forward. Every person reading this post or commenting about Python moves it forward. Essentially - if the ecosystem is a codebase - all of you have the commit bit.

PSF members have been nominated to be part of the focused, organized mission of the PSF (what I'm trying to define). Instead of "just" checking in code, bug fixes, making libraries or documentation - things they do every day - someone has said "not only is this person supporting the mission, but they do it so well that they should have a say in the leadership of the PSF". PSF members are the management/administration/activist component of the ecosystem (The PSF).

The ecosystem is made up of python-core (development, IP, hosting), PyCon and all of the other conferences through the world. It is user groups and every package on PyPi, github or bitbucket and sourceforge. The ecosystem is every single current user or potential user of Python in the world. You can paint the ecosystem quite broadly, which means the mission of course, that if you look at the assets the PSF has (money, lawyers and members) - the mission of the PSF is to:

... Spend money and provide leadership, outreach and protection where needed within the entire Python ecosystem.

Our mission - as a foundation "under this banner" is to make sure, beyond any doubt, that Python has a bright future - our mission is to keep the servers running, deal with legal things every so often and to reach out to every single programmer and non programmer on the face of this planet to teach them about Python. We are here to support projects, people and ideas within the community.

The PSF completes its mission by distributing funding, but more importantly through the leadership of its members. The PSF is the nonprogramming arm of the entire Python community, not just for the core development team. Our job is to provide resources to the entire Python ecosystem.

Closing

In the next post; I will cover Part 6: Accomplishing the Mission - my definition of how we accomplish what we have to do, how lawyers do, and do not play into it and additional opinions I have about the current state of the PSF and moving forward. I will also go into what the PSF has done over the past year or so which has directly benefited the community as a whole - some of which you might not know about.

For additional information you can see the Convore thread that helped me along in my thoughts and what questions needed answering.