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 MozFest talk description page. 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 MozFest 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 in 2019 and suggested that the PSF apply. We did, successfully, and they're one of the funders for the pip dependency resolver work I managed last year. Heads-up: there is a new cycle of grants available in this program, and you need to send them a Letter of Intent by March 30th if your project is interested. 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. Here's a smaller, more targeted opportunity. OpenHumans is an initiative to help people gather and analyze data about themselves. The short description is: "Explore, analyze, and donate your data -- doing research together!" Grants are available, for up to $5,000 US dollars, if you "have a project that might help grow the Open Humans ecosystem". Maybe you could integrate an application or a device with OpenHumans to provide a novel data source or give people new ways to analyze or visualize their data. There's no application deadline while funds last. If you've never applied for a grant before, you might think that you have to know someone on the inside, and that if you're a stranger then you have zero chance. I do think it helps if you have an acquaintance at the funder, or who has been funded by them before, for two reasons: * that gives you a chance to have informal conversations to check whether your idea is the kind of thing they are likely to fund * it gives you a credibility advantage, that you are reliable and honest and would use money well But if you don't personally know any people who work at these funders, that is not a barrier. And, if you're anxious about emailing strangers, I hope to reassure you. There really is no interpersonal interaction required until you send in a proposal. The funders I'm discussing all have public websites where you can see what they're funding and what information they want from you if you're applying. So here's a little case study. The Open Technology Fund is currently getting back on track after some changes from the last few years - 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, in 2019, 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, which I hope Mozilla is going to relaunch soon. (I'm recording this on March 5th, 2021. Mozilla went through some restructuring and stopped accepting applications in 2020, and we're waiting to hear about the future of the program.) With MOSS, as of last year, the most that you probably ought to apply for would be $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. Seven months of working full-time is probably enough time for a skilled Python developer to port a command-line tool for geology researchers from FORTRAN to Python. Or, if you split that money between a user experience researcher and a technical writer, again at $150 per hour, then they could work together for three and a half months, which is probably enough time to interview a bunch of your users, make a really detailed report on user needs to help your developers prioritize your roadmap, overhaul all of your documentation, and overhaul a lot of your error messages. 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. The funders will say, publicly, on their webpages about the grants they give out, what kind of information they are seeking. You'll generally provide: * basic contact details, including the person or organization that will receive the money * a few paragraphs about the task you want to perform * the amount you're asking for, and a short description of what you'll spend it on and answer a few questions to help them evaluate your request: * who uses your software? have some statistics here - download numbers, users on the mailing list, etc. -- but also this is where you talk about specific important or prestigious users and downstreams. * what goals will this accomplish? how it will make the world a better place? and why do people need this? why is it important? * what is your plan for how you'll do it -- how will you use this money? what's your proposed schedule? try to break things down so no chunk of work takes longer than a month; if your project stretches out over 6 months or more, try to break that up into 3 or more milestones, each of which is a few months' worth of work, to help the reviewer think about what you might get done if the project goes over schedule and you run out of budget * does this project currently get any other regular income? Since funders are mostly asking the same questions, you can take a rejected proposal and lightly rewrite it to submit to another funder. Kind of like how I gave a version of this talk in 2020, then added some more material to share with you here at MozFest in 2021. 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 launched in mid-2020, 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 recently, several resources at our GitHub repository. Such as a list of funders, ideas for fundable projects, and reusable grant application materials. 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. And you can ask me for advice on creating budgets, submitting proposals, hiring, drafting reports, keeping funder relationships healthy, and more. Thanks, and I hope I get to talk with you soon! Sumana Harihareswara https://changeset.nyc