Proposing: Haskell Foundation Community Grants

I’m promoting this out of my reply in the funding thread, and asking for feedback on this as a proposal.

Let 500 <= X <= 5000. I’d like to propose that the Haskell Foundation accept applications for community grants in the amount of USD X to people working on open source projects in the Haskell ecosystem. The way this would work is that someone would first get the support of a project they’d like to contribute to (preferably, already be a contributor to), write a proposal together with a contact from that project, and describe what they’d like to do with the funds from a grant. As funds are available, the HF could accept some of these grants, and disburse funds in some way. (Maybe all up front? Maybe 50% up front and 50% when the contact agrees the goals are completed? Who knows…)

Think of this like “Summer of Code” except for any existing community members who need support to devote more of their time to their work on Haskell. The idea is to use the Haskell Foundation to encourage more contributions to the Haskell ecosystem.

Also, think of this as sort of a dual of the tech proposal process that is being discussed now. Whereas that process is focused on big-hammer high-impact projects, this process would be aimed at identifying small efficiencies where we might not have accepted a proposal, but we have a unique opportunity for a small investment to have a disproportionate impact on the community. Because the investment is small, this should be a much lighter-weight process than the tech proposal process. Projects should not be controversial or political. If there’s significant likelihood of disagreement within the community, applicants can be redirected to the full proposal process if they are determined to build agreement and get support from the HF.

8 Likes

A model for this that has been very successful can be found in Clojurists Together: https://www.clojuriststogether.org/

Well drafted proposals in this process also could be strong incentives for earmarked crowdfunding via the foundation – i.e. not just a way to fund things, but a way to help foster discussion and raise money.

That said I don’t know if we need something lighter weight than the tech proposals process (too many processes! arghhh!) – maybe we can just have a lighter-weight track in the same repo :slight_smile:

Fair enough about the process. My concern was that @emilypi’s document currently warns that the process start to finish may be expected to take 6 months. That process seems really designed to make assurances to the community that the Haskell Foundation will practice due diligence when taking on a major priority. But it’s also not final, so it could potentially be modified to better target individuals who want to propose being supported in a small project, as well.

1 Like

(Speaking more as an individual with a keen interest in the success of Haskell than as a board member here.)

I think that this could be a powerful idea, and I’m in support of exploring it further. However, there is a real risk here: right now, many people donate a considerable amount of their time to improving Haskell and its ecosystem, for free. A grants process like this could create an expectation that contributors get paid for their work, and that would have the opposite effect of the one intended.

On the other hand, contributors should not have out-of-pocket expenses in order to make their contributions, and the HF could perhaps find other ways to support projects. Maybe a project exists such that PRs are routinely unreviewed, and the grant could pay for reviews. Maybe a contributor needs computational resources to do CI properly. Maybe a contributor wants to write educational materials but needs the help of an editor. Maybe even we support known contributors by buying them a fresh laptop.

I’m not set against just paying people. In particular, I recognize that just paying people may increase the diversity of our contributor pool, because it surely is a sign of privilege to have extra time to devote to improving Haskell. (Easy example: maybe someone needs money to pay for some childcare on their weekends so they can contribute to Haskell. I think that would be an excellent use of funds.) My point here is more to raise this potential risk than to say that the potential risk dooms the idea – which is otherwise a great one.

Thanks for starting this thread, @cdsmith.

5 Likes

Thanks @rae. I agree it would be a shame if this program led to an expectation of work-for-pay within Haskell’s open source ecosystem. For one thing, people working for pay are far less likely to have a passion and commitment to the values that attract people to Haskell in first place, and are less likely to stick around and build the institutional knowledge that’s critical for longer-term success. My intention was that a program like this would target efficiencies; cases where we have the opportunity for a skilled and knowledgeable community member to decide to dedicate more of their time to Haskell if only they got a little nudge over the line so that they are financially able to do so. I know several people (who I won’t name because it ought to be their choice whether to weigh in on the matter) who are working hard on Haskell, and trying to support their work and pay rent via patreon, github sponsorships, individual memberships, etc. It’s a hard business model even for someone just looking to cover basic needs.

So what do we do to mitigate the risk? I think to some extent it may be self-mitigating, in that I feel a program like this would be likely to receive some very high quality proposals from already-integral community members whose request is far exceeded by their value to the community. If there are enough of those, it becomes easy to identify the proposals that are really looking for just a last nudge over the line. It may also be that you’ve got a good argument here for setting X (in my original proposal) closer to 500 than 5000, so that it’s clear we aren’t looking to pay anyone a competitive salary so much as just cover some basic needs.

On the other hand, I don’t think it is the worst thing in the world if a few pivotal community members were paid a salary for their work. That already happens via some Haskell industry supporters, and there’s no reason it would necessarily be a worse thing to happen with Haskell Foundation funds if the money were available (however far off such a day might be). I, for one, can think of a couple people whose work on Haskell would be a fine way to spend my HF contributions if it were necessary for them to continue that work.

6 Likes

I’m hugely in support of a grant program, thanks for bringing it up @cdsmith. I think it’s an excellent exercise in why the HF exists, and I’d like to see it fleshed out thoroughly. @sclv’s clojurists link is a good start I think, but being completely uninitiated w.r.t. grant programs, I have some homework to do.

3 Likes

Here’s another one from the quantum community, if it’s interesting for comparision: https://unitary.fund/.

1 Like

Here’s some prior discussion from some years ago on the clojurists together model. One of their people participated in the thread. I think they and the ruby together folks would probably be very open to giving feedback and insight as to what worked and didn’t for them. https://www.reddit.com/r/haskell/comments/89hnul/haskellers_together/

One interesting experience they had was they discovered their grant model was too much for some things they wanted to fund, and smaller more targeted grants actually made more sense – that’s discussed here: https://www.clojuriststogether.org/news/announcing-the-clojurists-together-foundation/

(and here’s another talk discussing some of their history and experiences: https://danielcompton.net/2021/02/21/building-stable-foundations-heart-of-clojure-2019)

3 Likes

There are more thoughts on this at Ideas on Haskell grants

Apologies for a bit of a rambling post here, but I’ve been mulling this over since the haskell.love conference discussion and I have a collection of thoughts that I haven’t yet had a chance to form into anything coherent, but I wanted to get them out there in case there was anything helpful:

The first thing that comes to my mind is I think it would be helpful to have a clear line between these sorts of grants and the things that go through the larger proposal process. Is it purely a matter of the monetary investment? The scope of the change? I’m sure there are clear lines we can draw, thinking about where they should be might help answering some of the other questions.

Another question that comes to mind that might be a bit more divisive: What is the relationship between accepting this sort of funding, and affiliating a project with the HF? Affiliation comes with some additional responsibilities for the project (adopting transparency requirements and the GRC for example), but eligibility for such grants might be a good motivation for projects to take on the effort of affiliation.

Something that I’ve been a bit confused about, and maybe it’s just because I was getting wires crossed in my own brain- but are we asking for individual donations to be earmarked for this fund, or would individual donations go into the HF general fund, and the budget for these grants come out of the general fund? I could see earmarking the individual donations being a good way to drive participation and get people feeling like they are contributing directly to the community, but it also might add a bit of complexity and inefficiency to the whole process? I’d defer to the board on that but it seems like something at least worth thinking through.

What are the goals of the project? To reward existing contributors for their work? To remove barriers to people doing their current work? To facilitate specific work with definite measurable outcomes? Personally I’d like to see us be careful to narrowly limit the scope when we first get started.

Anyway, I think that the core idea is great and it’s nice to see us thinking of ways to directly impact the projects that make up the overall haskell ecosystem.

2 Likes

Great point. I think I draw the line by saying:

  • HFTPs are asking for an organizational commitment to a goal by the HF. Community grants are just asking for one-time support.
  • HFTPs may include anywhere from zero to large amounts of financial support. The financial support for community grants is limited to some small number (I’m currently thinking $1500, based on research I’ve done and desire to start conservatively and make our inevitable mistakes with lower amounts of money)
  • HFTPs involve other kinds of functions of the HF, such as facilitating consensus between subcommunities with differing points of view. Community grants are only appropriate when the necessary consensus already exists, and should be supported explicitly by the project they are contributing to, and not actively opposed.

Interesting question, that I hadn’t thought of before. I do think it’s important that there be some contact between the project and the Haskell Foundation, since a program like this needs to evaluate itself and its success, and get insider feedback on how things are going. I don’t know if that contact is any easier for an affiliated project than a non-affiliated project.

It’s worth keeping in mind that plenty of projects that are central in the Haskell ecosystem do not have functioning project leadership at all. That’s a tricky question, then. It’s unlikely that these projects could successfully affiliate with the Haskell Foundation before someone received a grant to work on them, but they are also some of the places where some help could be most impactful.

Originally, this proposal was not directly connected to individual contributions. They were just both discussed at the same time. Though I was inspired to write about this proposal by reading one of @hasufell’s comments on a thread about individual contributions.

But in retrospect, there is synergy between them. We’ve heard from at least two people in these threads that knowing their contributions will go directly to open source maintainers is a prerequisite for them to contribute to the HF. It’s not clear that this is really the main impediment for a lot of people, but it’s well-known that people are happier to invest in some specific than something nebulous. So a grant program like this could really help individual contributions, if they were earmarked for it. And conversely, having more individual contributions makes it easier to run a program like this.

I haven’t yet seen the minutes from the Haskell Foundation board meeting where this was discussed, so you’ve heard as much as I have about the HF’s opinion. But it sounded to me like the board was very interested in tying the two initiatives together for reasons similar to this.

Great question. I think my answer is that I hope the main goal is to remove barriers to contribution. I don’t think we need to specify whether this is for existing or new work. It can be for either. There are different trade-offs (new contributors are potentially much more valuable in the long run, but also higher risk and higher investment for the mentoring resources needed), but we can make those trade-offs in evaluating proposals. The big thing I’d add is that unlike the HFTP process, which is about identifying top priorities, this process should be largely about capitalizing on whatever lucky opportunities exist. That is, if a community member is having a hard decision, and a $1K or $2K stipend can push them over the edge and convince them to take an unpaid sabbatical from their work to contribute to Haskell full-time for a while, we want to be there offering to help them make that decision, even if the work they want to do is somewhere in the second tier of priorities.

1 Like

Two thoughts:

  1. Is this something that could be done in co-ordination with the Haskell.org committee? Since they are already doing something like this (if they wanted to expand their role)? Maybe the community and the Haskell Foundation could give guidance on what they would like done and the Haskell.org committee could decide if they wanted to expand their scope for this?

  2. (Edit: Please see my post below, I’m not sure how convinced I am of this line of reasoning.)

Personally I have resistance to and concerns about a policy of helping out those who need it the most. In a way it clearly makes a lot of sense but I don’t like the idea of people trying to decide if one person’s laptop breaking is a bigger need or opportunity to help than some other problem. I wouldn’t want people competing on who has the most serious problems. Again I don’t mean to minimize the potential value of facturing need into te equiation… but …Say, as an example, someone has contributed thousands of hours on an important package that the community relies on but someone else gets money for working on a smaller project since their laptop broke, that seems like a difficult decision and it doesn’t seem right that we would try to decide based on that. Are we really able to decide who’s need is greater in different situations? Personally I wouldn’t want to compete on needing the money the most, I’m pretty sure that would feel denigrating to me.

We could more simply offer money to the most important and deserving projects, and maybe allocating the funds in proportion to the importance of the project. This would encourage people to create and maintain high quality, high community value projects. Lets say I had a new and immature project that is recognized as important for the community. I might be given a small amount that grows annually as the project matures, and each year I would be encouraged by receiving increased financial support and (importantly) recognition for the increasing community status of my work. This way the money would be there for the projects that the community needs.

Even though this is a simpler calculation to make than also thinking about need, this will still be hard to decide. At least this would be more the kind of decision that I would like to see the Haskell community involving itself in. Generally it would encourage people to make significant contributions to the ecosystem. At least in part, there may even be an algorithmic way of determining this from package use etc?

Again, an (incidental) advantage of this approach is that it’s simpler than deciding both which projects benefit the community the most and also which need it the most.

1 Like

About your point 2, I think this underscores the need to clearly state the goals, as @rebeccaskinner mentioned. Funding doesn’t always have the same effect for everyone. For example, you could pay me any amount of money you liked to maintain my libraries, but it wouldn’t make any change in my ability to contribute. Indeed, I’m contributing to the HF for this reason, and wouldn’t want my money back! I think it’s important to clarify that the goal is to make an impact on people’s ability to get things done, not just to reward existing contributors with prize money.

That said, I do think there are real concerns you raise. I don’t want people to feel they need to debase themselves as they apply for a grant. I’ll think more about this. The point was to avoid just giving away money as recognition where it won’t have an impact on the broader community.

I think it might make sense to consider impact of the donation and return on investment. As @cdsmith pointed out, at some point the maintainers are operating at full capacity and throwing money at them wouldn’t help no matter how valuable their work is to the community.

I suspect in the end though, no written policy would be fully sufficient to capture an exact set of rules that we’d want to use to dispense funds. I’d like to see some general guidelines for how to evaluate requests, and what things to consider, and have a committee of people (preferably people who are not maintaining their own projects where there could be a conflict of interest) evaluate them and make recommendations that the board could approve or not. If we are transparent about the decisions, I think that could be a good way to give us the flexibility to do the right thing plus the accountability to make sure that the community agrees that the right things are being considered.

@cdsmith @rebeccaskinner

If people would need to apply then that in itself would imply the money would make a difference to them (i.e. “self selecting” in terms of financial need). On the other hand, if they aren’t motivated by money, then probably the last thing they would want is to apply for funding.

I suspect that there are a lot of people who don’t invest a lot of their spare time in open source projects precisely because the financial reward is generally non existent (as things are). On the other hand if they could combine something they love and make a little extra cash…then that could hold a powerful incentive.

In any case, I think all this is a great idea either way.

Edit: Please see my post below, I’m not sure how convinced I am of this line of reasoning.

@cdsmith @rebeccaskinner

…also as I was pointing out…can you imagine slaving away on a critical community project, applying for support and finding out that a smaller project got more because some people made the decision that the lesser project’s need was greater, or the “return on investment” wasn’t as much as it was for a smaller, “lesser” project. I could see critical people snapping right there.

So that could be so contentious that if “need” and “return” were ever going to take priority over “the overall value of the project to the community” in the selection process then the process could perhaps not involve “applications for funding” (because that would set up such a strong resentment in the more important projects that get passed over, so to speak.)

Also how would the committee determine if someone’s laptop really broke? I literally have 3 broken laptops.

…also as I pointed out…can you imagine slaving away on a critical community project, applying for support and finding out that a smaller project got more because some people made the decision that the lesser project’s need was greater, or the “return on value” wasn’t as much as it was for a smaller, “lesser” project. I could see critical people snapping right there.

I can certainly see people being disappointed if they didn’t get a grant, but I would hope that we could rely on both the individual applicants being understanding, and on the committee that allocates funds sufficiently justifying their decisions so that we can all be reasonable people and move on. Unfortunately we’re dealing with limited funds and someone will always be the disappointed person who didn’t get selected.

So that could be so contentious that if “need” and “return” were ever going to take priority over the overall value of the project to the community in the selection process then the process could perhaps not involve “applications for funding” (because that would set up such a strong resentment in the more important projects that get passed over, so to speak.)

I’m not sure how the committee would decide how to allocate funds if not for an applications process. It would be both a way to find out who actually needs money, and a structured way to find out how they’d intend to use it. If you can think of other options I’d certainly be open to hearing them.

As for the problem of need and ROI being factors, I think “overall value to the community” really boils down to the same factors of need and ROI. You want to give money to people who will make the best use of it, where “best” is always going to be somewhat a matter of personal judgement at the end of the day.

For example, a project that’s in widespread use has a natural advantage when it comes to considering the ROI of an investment compared to something with very little adoption, but if the project without much adoption is new and working toward fixing something that is a big gap in the current ecossytem then that should be considered as well. Imagine, for example, a project that was building some libraries to make haskell work better on Windows, and they wanted funding to cover the cost of some Windows VMs for testing. Something focusing on Windows support probably wouldn’t have a huge amount of adoption right now, but it could unlock a lot more use-cases for haskell overall and so it might have a higher ROI than it’s current adoption rate might suggest. I think there’s a place for considering opportunities like that, especially with small grants, to give things a chance to get off the ground if they need a bit of funding.

I think considering need is the same sort of thing, and it’s closely related to ROI. There are some things that might not be able to happen at all without grant money. To pick a random example, if there were a project to building haskell bindings for android or iOS or something, a grant for test hardware might actually enable support for more devices than otherwise would be possible. There are also probably situations where some work might happen either way, but it could happen faster with some funding. Someone applying for a grant to allow them to work full time on a project for a while, or to cover the cost of better infrastructure or a faster machine to build and test releases.

I think of it like this: The absolute best case scenario would be a project that is widely used asking for a small amount of money to do something that otherwise couldn’t be done without the money. In that case the money unlocks something useful for a lot of people. The worst case scenario would be a project that nobody uses asking for a lot of money with no clear idea of what to do with it. Most proposals will probably be somewhere in the middle, and we should have humans think about it and try to make good decisions.

Also how would the committee determine if someone’s laptop really broke? I literally have 3 of them.

There will always be some risk here. If someone says they’d like to work full time on a library if they can get some funding, how do we know they aren’t going to do other contracting work on the side. What if they get funding for something they intend to do and don’t get around to it because life happens. Hopefully the people making the calls about where the money goes will do due diligence, and we limit the risk by keeping the actual amounts relatively small.

Good question! My own thoughts about goals are these:

  • To act as “community glue”. We are working together to build something great. Simply having a small community grants programme gives tangible expression to that abstract goal. (There are other forms of tangible expression too, but the more the better.)

  • As a form of recognition to contributors. People contribute to open source all the time, for a variety of reasons. But the more ways we have to recognise, celebrate, and reward their work, the more likely we are to hit on the one that makes a difference for that person.

  • As a clear signal that the Foundation is not just about big corporate stuff. As someone put it recently, we want it to be “our” foundation not “their” foundation. By directly supporting small projects, the programme helps to say that yes, individuals matter. A lot.

  • As a seedbed of ideas. Every big, influential idea grew out of a small experimental one. We need lots of the latter to get some of the former.

  • For some people, a small grant really will make an important financial difference. I don’t think we’ll have enough $$ to make grants that suffice to pay the mortgage, at least not for a while. But people’s circumstances vary a lot, and for some a small sum can have a big effect.

  • I think it is possible, perhaps even likely, that (as Chris says) individuals may be more motivated to support the foundation if they feel that their donations are going to support other individuals, mediated through the judgement of the Foundation.

    This isn’t going to matter to everyone. But I see increasing the number of individual donors as an end in itself, not just a fundraising matter. Why an end in itself? Because I feel a much stronger sense of ownership, belonging-ness, and participation in the charities that I support financially than those I don’t. It’s another form of community glue.

2 Likes

All grant evaluation is flawed, however much effort you apply to it and, as others have noted, scientific grant funding has a lot of effort applied to it. As someone who has applied for many grants, and evaluated many grant applications, I’d urge us not to go there. Let’s embrace Rebecca’s points about (a) accepting risk that some $$ will be ill-spent; reassured that (b) not much money is at stake, so mistakes are acceptable.

Here’s one possibility

  • The panel does a pass/fail analysis on each application, rejecting some as too low quality in some dimension. (We’d have to write down criteria of course.)
  • Then hold a lottery to allocate limited funds.

So people don’t get miffed because they didn’t get funded, because know there’s an element of randomness. And the people who do get funded can’t get too proud of their fantastic application. Moreover, there is no incentive to over-invest in the application itself – it only has a clear a threshold.

I have not fully thought this through, but we are at the brainstorming stage right now.

4 Likes

Really nice discussion!

I have a couple of thoughts to add to this topic.

Firstly:

What’s the relationship of this funding and github/patreon funding? For example, why would someone contribute to the Haskell small-grants fund rather than funding a partciular person or project directly?

For example, something potentially high-value that the Haskell foundation could do would be to gather up a list of links of all people who are working in Haskell and collecting support. Then, every so often, one of those people could be featured, or something.

Secondly, I have a collection of food-for-thought questions:

Here’s how I see the summary of goals for this project:

  1. Get more contributions,
  2. Generate ideas,
  3. “Make a difference in peoples ability to contribute”,
  4. “Recognition”,
  5. Effort to say “we care about individuals”.

My thoughts are:

  1. Where and from whom are contributions currently coming? Why? Do we want more of that, or something different? Both? Do we have a priority?
  2. Who in the community are we expecting to win these grants? Already established people, or people potentially not even in the community yet?
  3. Are we looking for “more of the same”, or “growth and diversity”? Are these objectives different, and does the funding strategy prioritise one over the other?
  4. Are we seeing this as an investment which we must make a ‘profit’ in terms of high-quality code contributions? Or, is it more of an investment which has a different focus? If it’s the high-quality code focus, does that change who can apply? Does that limit the community or does it grow it?
  5. Do we have any particular constraints or desires on the backgrounds of people that apply? Do we favour long-term contributors or newer people?
  6. A lottery is a nice way of avoiding discussing mismatch on criteria; are we thinking of it because we don’t quite believe in the criteria? Or because we think criteria is impossible? Is there a potential list of criteria that we could even all believe in? If not, why not? If so, what would it look like?
  7. Is funding projects or people the only, or even best, way to go about the goals? Could the money be used to fund events or other kinds of engagement?

One thing I think of quite often, related to hiring (so only tangentially related to this concept) is this post from Julia Evans: https://jvns.ca/blog/2017/02/16/hiring---opportunity/

In it she discusses the different perspective of hiring people for whom the job is a great opportunity; compared to the perspective from the companies point of view. Does that play a role here? Are there ways of adopting this principle? Is it important?

1 Like