Apply for Grants To Fund Open Source Work

PyOhio talk by Sumana Harihareswara, 2020

When I tell people about grants they could get to help fund work on open source software projects, sometimes they are surprised because they didn't know such grants existed. Therefore, in July 2020 I delivered a ten-minute PyOhio talk in which I shared:

Below are a transcript (with slides) and the video. You can also download the PDF of the slides (943K PDF).

Hi, everyone. I'm Sumana Harihareswara, and this is "Apply for Grants To Fund Open Source Work".

When I tell people about grants they could get to help them work on their open source projects, sometimes they are surprised because they didn't know such grants existed. So I'm going to: talk about a few of those funders; give you a quick case study on how the Python Software Foundation got some funding to improve PyPI; share key steps in case you want to apply; and tell you how the new Project Funding Working Group at the PSF can help you along the way.

And all the links are in the PyOhio talk description page. [And above.]

So, first off: yes, these grants exist. They are real. There really are companies and nonprofits and governments out there giving away free money so people can pay the bills while improving your existing open source software projects.

I'll describe a few. And links to all of these are in the PyOhio talk description page.

NLNet is a foundation in the Netherlands. They give away money to open source projects in network and Internet engineering, or that advance privacy, or search. They've funded some Python projects, such as Reproducible Builds. And you can apply anytime.

The Chan Zuckerberg Initiative has a funding program happening now called "Essential Open Source for Science", where they want to fund open source software projects that already exist and are essential to biomedical research. I noticed this last year and suggested that the PSF apply. We did, successfully, and they're one of the funders for the pip dependency resolver work I'm managing this year.

Comcast has an Innovation Fund that can fund up to $150,000 for one-year projects. They want to fund projects that have something to do with networking and broadband.

Mozilla Open Source Support makes awards to existing open source projects that support Mozilla’s mission (the open web), or that Mozilla relies on, or that are widely used and need security audits. MOSS funded the overhaul a couple years ago of the Python Package Index, or PyPI. And they're the other funder for that pip dependency resolver work that's happening this year.

So here's a little case study. The Open Technology Fund is currently going through a rough time - but I won't get into that right now. I'm going to talk about the money they awarded to the Python Software Foundation so that, last year, we could make some improvements to PyPI. I won't call this a grant, because OTF awards are performance-based contracts, but it's a lot like a grant.

In February 2018 I suggested that PSF should apply to the Open Tech Fund for money to improve PyPI's security and accessibility, and work on localization. The deadline was March 1st.

So we started work on an initial proposal -- what OTF calls a "concept note" -- figuring out what we would want to do, and how much time it would take, and how much that would cost. People who already knew a lot about the software and had experience with contracting rates made some guesses.

We made a bunch of revisions to the concept note, all the way up to the application deadline, to make it clearer: what we would do, how we would do it, and how and why these changes would benefit lots of users. We asked for $80,000, for a five-month project.

We submitted the concept note on March 1st, 2018.

On March 12th we got an update saying we'd get a formal determination within two to three weeks.

Then, on April 12th, we found out that they liked our concept note, and now we needed to give them a more detailed proposal with a budget breakdown, and answer some questions.

We did that in April, then answered some more questions in June.

Then on August 1st they said they just needed one more clarification, and we gave that.

As of August 29th we found out we were heading into "compliance" which meant we were approved and could start planning the start date and hiring contractors. So that took about six months. Some funders are faster than this; for instance, Mozilla Open Source Support has more like a two-month turnaround.

The PSF used a Request for Proposals process to hire contractors. We started that in October 2018 and ended up extending the Request for Proposals deadline to January 31st, 2019, to get more proposals. Contractors kicked off work on March 11th. We ran into some delays and work took more like eight months instead of five, finishing in October, but we stuck to the budget, and we finished and deployed the improvements that we'd planned. They're live on PyPI now and everyone can use them.

So now I'll talk about some key steps in figuring out a good project idea, budgeting, hiring, and submitting a proposal to get help funding your already-existing open source project.

A good idea:

• is clearly wanted. There's already consensus among project maintainers, and you aren't waiting for a policy or architecture decision before you can implement it.

• is fairly well-scoped. You can define what success will look like. "Revolutionize e-book lending" is badly scoped; "add this DRM-free lending library to these browser extensions" is well-scoped.

• is fundable: would happen much faster if you got funding to implement the work. So, it has to be legal and physically possible. "Reverse-engineer and re-implement iOS" probably fails this test.

• has a theory of change. You have an assessment of what your users' life is like now, a vision of how their lives could be better, and a suggested course of action that would help get closer to that vision.

Budgeting.

Start by thinking about what goals you want to achieve, what funders are willing to pay, and how much work you can do with the money available.

Let's say you're thinking about Mozilla Open Source Support. With MOSS you shouldn't count on getting more than $150K.

Probably most of your money will go to wages, and maybe some fraction of it for hardware or similar expenses, and -- if we can travel again someday -- travel. If you are hiring in the US for skilled Python developers, assume you'll be paying somewhere from $80-$200 dollars per hour. So, let's say you're just paying for labor, $150 an hour. $150K turns into a thousand hours. If someone works 35 hours per week, that's about 28 weeks, which is about seven months.

Make sure you make time for

• ramp-up time for the laborers. Not just for new folks. You may need some setup time as well.

• talking to your users about what you're doing, before and as you do it

• responding to bug reports -- old issues that you'll look into during the work, and new ones that come in while you're funded

• writing and updating documentation

• publicizing what you've done once you're finished. Blog posts, a report for the funder, mailing list posts, and conference talks.

Sometimes people think money won't help a project, because all the existing maintainers work full-time already. But money can help hire someone new to help. If you budget for ramp-up time, a new developer can become a reviewer and contributor. And you can hire help with bug triage, security audit, improving Continuous Integration, user experience research and design, documentation, and general project management.

As you write your grant proposal, even if the funder doesn't ask, start to make notes about who will do the work if you get funded. Is it you? Is it a team? Will you need to hire people? If you can't do it all yourself, what skills do the other people need? Having that role description will help a lot if you need to talk to your network and get recommendations to hire someone.

When writing and submitting your proposal: the details count. You really do have to answer every question they ask, and meet their deadline. Try to submit it at least a day before their deadline, just in case there's a snag logging in, or uploading an attachment.

Finally:

I'm part of a volunteer working group that reports to the board of the Python Software Foundation. We're the Project Funding Working Group, we just launched a few weeks ago, and we help you get funding for Python-related work that benefits everybody. Or, in more formal language: the Project Funding Working Group researches, and advises Python community volunteers on applying for external grants and similar funding to advance the mission of the PSF, which includes, but is not limited to, things such as advancing the Python core, Python-related infrastructure, key Python projects, and Python education and awareness.

So, we provide, or are getting ready to provide, since we just started, several resources at our GitHub repository. Such as a list of funders, ideas for fundable projects, and reusable grant application materials. And you can ask us for advice on creating budgets, submitting proposals, hiring, drafting reports, keeping funder relationships healthy, and more.

You can email us anytime. Our contact info is on our homepage.

I also have an independent consulting business, Changeset Consulting. You can hire me to assess your project, suggest funders, and write or edit a grant proposal. Or as a project manager for your grant-funded project.

Thanks, and I hope I get to talk with you soon!

Changeset can advise you on grant strategy and applications, and open source project funding in general. Get in touch for a free initial 30-minute chat.