Friday, December 01, 2017

The PSF’s Grant Program Policies and Preferences

Are you starting a new Python conference, founding a group, or beginning a workshop? The Python Software Foundation can help with a grant. But first, you need to understand our policies.

The PSF has had a grants program for many years. Over the last 4 years, the program has become increasingly known in our community, which has always been a desired outcome. As knowledge of the grants program grows, however, the PSF receives more grant requests, ultimately meaning our PSF staff and volunteers have more grant requests to process. On occasion the PSF updates our grant policies as we learn more about best practices.

Our goal with this post is to inform the public of what our current policies are. The policies may change over time so remember to review the PSF's grant policies when submitting a request to ensure you have the most up-to-date information. We also have a Frequently Asked Questions page about grants.

What are the current grant policies & preferences?

  • We prefer to receive your request at least 6 weeks out from the event or project start date. We receive a high volume of requests and our volunteers that review the requests are all around the world contributing remotely. A six week lead time will allow us sufficient time to thoroughly review your request and provide follow up as necessary. Effective immediately, we will not accept grants that are submitted within 10 working days of the event or project start date.
  • Our current focus includes: Python projects (including porting projects), workshops, conferences (especially for financial aid), and Python diversity/inclusivity efforts. Grants for non-Python specific events will only be considered where there's a clear Python component to the event. In the cases of non-Python specific events a grant will only be for the Python component of the event. The PSF will consider supporting a hackathon if the event has hands-on Python education for a minimum of 6 hours. We will not fund prizes for hackathons.
  • We have guidelines on how much funding we award. There is no set maximum, but grants are awarded with consideration for the annual PSF grant budget and the other grant requests that have been submitted and awarded. The Foundation reserves the right to make a grant smaller than the total you request. If this would not be acceptable you should state that in the application.
    • The maximum conference grant size is typically USD 10 per attendee, with a preference towards helping new events to establish themselves in their local community. Larger conferences (300+ attendees) are expected to have access to additional local funding options and hence may be granted a lower amount per attendee. Conferences that are running separate educational programs may also apply for a separate educational grant.
    • The maximum educational program grant size is typically USD 25 per student, provided the students each receive at least 6 hours of Python instruction as part of the educational program. We give preference to students who would otherwise not be able to attend such classes. If the class has an educational hardware component such as a Raspberry Pi that the students get to keep, you may request up to USD 50 per student. Please note that subsequent funding requests for workshops in the same region may be funded at a lower rate to encourage sustainable, long-term relationships with local sponsors. When submitting your workshop grant request, it helps the grants work group to see a brief budget for your event.
    • The PSF will consider grants up to USD 300 for Python-related sprints. Please provide information about focus and goal of the sprint in your application, as well as the number of expected participants.
    • The PSF allocates money each year for PUG website hosting costs and subscriptions to event advertising sites like
  • We require all events to have a code of conduct. The code of conduct should be a set of guidelines for your event that set the social norms and practices for the participants, organizers, and sponsors.
  • With regards to payments, we distribute funds via check, wire transfer, and PayPal. If you will be requesting a wire transfer, adjust your request to account for wire transfer fees. PayPal payments to organizations may incur service fees that will need to be paid by the grant recipient. If your grant request is approved, specific information will be requested in the email notification. 
    • We prefer to make payments at an organization-to-organization level when possible due to US IRS accounting rules. 
    • After you receive a notification with the amount of funding the PSF approved for your grant request and you submit an invoice, payment will be processed within 7 business days and the Controller will notify you when the payment has been sent. We sometimes run into issues when sending funding internationally so that is why we ask to receive grant requests 6 weeks out.
  • Reporting is an essential part of our grants program. The PSF would like to see how the grant was used, so we ask to receive a report on the event, project or program that was funded. The PSF has a policy that requires all events to submit reports. These reports are useful for us to gauge the impact we are having and how the event went. For subsequent events, we require past reports in order to consider additional requests. The report should include an overall overview (including location, venue, participation demographics if applicable), sponsors, reflections (including things that went well and things that could be improved, any feedback you received from participants. If your event/project has a blog, social media post, pictures that relate to the grant we'd love to see them, too.
We welcome grant requests via our CiviGrant form. We want to help new communities develop a stronger Python presence in the coming year!

Monday, November 27, 2017

The PSF awarded $170,000 grant from Mozilla Open Source Program to improve sustainability of PyPI

When are we finally going to see Warehouse deployed? What's the holdup? Has this project stalled?

For the last year, we at the Python Packaging Authority have heard these questions continuously from the Python community.

Today we are excited to announce that we have applied for, and been awarded, a grant to help improve the sustainability of the Python Package Index in the amount of $170,000.  This has been awarded by Mozilla, through the Foundational Technology track of their Open Source Support Program.  We would like to thank Mozilla for their support.

This post will explain both the context for this request, and the work that will be funded.
Specifically, this grant funds several contributors' efforts to finish the development and deployment of Warehouse (, the replacement for our legacy codebase that runs -- which will allow more people to contribute.


The Python Packaging Index (PyPI) is the principal repository of software packages for the Python programming language. Currently, over 100 million Python packages are downloaded from PyPI every week. The Python community (and indeed the wider technical community) depends on PyPI for the ongoing functioning of the entire Python ecosystem.

There are no paid staff at the PSF who work on PyPI, and there are only a handful of people who contribute regularly.  This leads to a situation where we have to depend on volunteers to be on-call for outages and respond to critical security vulnerabilities in core Python Infrastructure. For deeper context, read PyPI maintainer Donald Stufft's May 2016 post "Powering the Python Package Index", (but note that since his job change in the last year his paid time to work on PyPI has decreased significantly).

This isn't a tenable situation for the long term, and we hope that this grant will help us start to change this.

Developer Sustainability

Unfortunately, the codebase that runs PyPI is old, almost entirely lacking in automated test coverage and other common best practices. (PyPI contributor Ernest W. Durbin III goes into this further in his PyGotham 2017 talk "Running Vintage Software: PyPI's Aging Codebase.") The new Warehouse code base is built with Pyramid, and is much easier to maintain. This technical debt has a number of undesirable outcomes, but the one I'd like to focus on is repelling new contributors.

Eric Holscher, like many would-be contributors to the legacy PyPI codebase, once tried to contribute a small feature to PyPI years ago, thinking it would be quite simple. However, as he opened the code base and started looking around, he discovered that the code wasn't written in a modern framework, didn't follow standard conventions or best practices, and he could barely even understand where to start adding something new.

Migrating PyPI to a new codebase will stop this from happening. We hope to gain a number of new contributors who are willing and able to help maintain the code base, and decrease the chance of burnout for the staff.

Operations Sustainability

Operations are the other large sustainability issue that we're hoping to tackle with this grant. There are only two people currently who wear a pager and are on-call for PyPI. They are not currently supported by modern automation tools or served by a continuing project manager. Once all package index activity is going through (Warehouse) and we deprecate the old codebase and site, with a stabilized infrastructure resource load, we can assess our new level of staffing and hosting needs. Based on that assessment, we'll be able to fundraise for staffing and ask our sponsors for financial and in-kind donations to keep PyPI robust.

Next Steps

With the help of many people (especially the Packaging Working Group, our MOSS liaison Gervase Markham, our Mozilla champion Dan Callahan, and Ewa Jodlowska and Mark Mangoba at the PSF), we've been figuring out the timeline for this work.

The first milestone for Warehouse is redirecting portions of the production to Warehouse including traffic for the simple index and package downloads. At that milestone Warehouse will be the main entryway to Python packages for all but a small fraction of the interactions PyPI sees.

The bulk of the work will be bringing Warehouse to feature parity with the administrative capabilities users need from the Package Index.  We'll keep you posted as we figure out when you can expect that to be true.

Please feel free to ask questions about the Warehouse project in the #pypa-dev channel on Freenode, or in the GitHub issues for Warehouse! If you have questions for the PSF about the grant, you can ask via email.

Thanks to Donald Stufft, Ewa Jodlowska, Nathaniel J. Smith, Nick Coghlan, Nicole Harris, Sumana Harihareswara, Ernest W. Durbin III, Dustin Ingram, Mark Mangoba, Kenneth Reitz, Eric Holscher for contributing to this post.