Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Longer-term sustainability efforts for the Binder project #430

Closed
choldgraf opened this issue Jul 4, 2021 · 17 comments
Closed

Longer-term sustainability efforts for the Binder project #430

choldgraf opened this issue Jul 4, 2021 · 17 comments
Labels

Comments

@choldgraf
Copy link
Member

choldgraf commented Jul 4, 2021

Problem statement

Over the years we have kept mybinder.org running with essentially a non-existent budget and in-kind support from volunteers and organizations that wish to support the project. This makes it hard to have focused pushes of development and improvements to the Binder / JupyterHub tech. It also means that we are constantly scrambling to find more operational funding to keep the cloud infrastructure running (for example, see #463 and #214).

We need a set of practices / structures to more efficiently bring in financial resources to the project - either via cloud credits or straight up cash - in order to continue operations and to allow it to grow.

A few proposals

We have had a few discussions recently to brainstorm potential sustainability options for the project. Here are a few that have been discussed:

Crowdfunding from users

For example, displaying a banner on the Jupyter Notebook / Lab / RStudio that directs people to a small-batch donation box, with an indication of a "goal" to shoot for. This could be a way to spread out the financial support across a large pool of users, which might make it more stable over time.

However, setting this up, doing the marketing, overseeing the accounting, etc could take a decent amount of work, and might not be worth the time it'd take to set up this operation. It also might be intrusive to force banner requests on users - some noted that when Wikipedia does this it is not user-friendly

Annual fundraising campaigns

This is similar to the "Crowdfunding" idea, but could be a focused effort over, say, 2 weeks a year. Rather than putting this in the UI of mybinder.org, this could be something like:

  • a blog post on Jupyter
  • a banner on the landing page + loading page of mybinder.org
  • a banner on jupyter.org
  • an ongoing social media campaign for the 2 weeks

We haven't discussed this option in much depth yet

Organizational sponsorship structure

Rather than focusing on individual donors, we could instead set up a larger-scale sponsorship program, to more officially recognize the contribution of credits or funding for the project. This could be something like:

  • $10,000 a year tier
  • $25,000 a year tier
  • $50,000 a year tier
  • >$100,000 a year tier

We could display a list of sponsors of mybinder.org + the project in general on a dedicated page on mybinder.org, to give recognition to the orgs that sponsor the project.

Grant applications

Finally, we could apply for formal grants for mybinder.org - for example, via the NSF, a European agency, or one of the private foundations (Moore, Sloan, etc). This could be a way to get a multi-batch of funding for Binder, though we'd likely need to tell a deeper story of new development we want to do for the project.

Extra considerations we should take

Here are a few things we'll need to consider regardless of the sustainability strategy that we pursue:

Governance - what do we do with $$

Say that somebody wanted to give the Binder Project $100,000 in funding. How would we decide what to do with the money? A few ideas for example:

  • It goes in a central pot inside NumFocus, and the Binder team can choose to "release funds for specific projects" via voting in a GitHub issue
  • It goes towards a specific stakeholder in Binder to cover somebody's time, with the expectation that the Binder team can guide this person's efforts to make sure they work on things for the good of the project
  • It goes into a general purpose pot, and we come up with a team process of paying maintainers by the hour, similar to what ESLint does

Credits vs $$$

Credits are only as useful as we are able to spend them, whereas $$$ gives us a lot more flexibility in how we use them. However, it will likely be easier to get credits from people in larger batches, rather than straight-up cash. We should define a strategy for how we'll differentiate these two kinds of support, and come up with ways to encourage people to support us depending on what we need most.

Questions for the team

  • Can we triage the ideas above (or extra ideas not listed here) and figure out which we want to pursue in the short term? (if any)
  • Can we answer the questions around governance re: financial resources, so that we aren't stuck by not know who is allowed to request/spend money?
  • Who is interested in putting cycles into this? Can we create a short-term sustainability working group for folks that want to help make a push in this direction?
@sgibson91
Copy link
Member

You know, I've been seeing this proposal around and wondered if it could be applied to Binder (and/or JupyterHub)? https://www.ukri.org/opportunity/software-for-research-communities/ I'm not sure that I could lead on it as I'm no longer based at "an organisation eligible for UKRI funding". It might be something @manics and/or @callummole are interested in?

@manics
Copy link
Member

manics commented Jul 5, 2021

Unfortunately I can't apply for funding or take a lead in my current position 😢.

@minrk
Copy link
Member

minrk commented Jul 6, 2021

I'm definitely interested. I would love to be able to put time into this, but I'll be limited in the near term if the CZI grant goes through.

@choldgraf
Copy link
Member Author

@manics are there any other ways in which grants in the JupyterHub world could benefit you?

@minrk I suppose that would be a good kind of problem to have :-)

@manics
Copy link
Member

manics commented Jul 12, 2021

Not at the moment, I recently started a new job. There's limited use of Jupyter at the moment but I'm making some plans 😄.

@choldgraf
Copy link
Member Author

Hey all - after #463 I decided to re-boot this issue a bit, and give it a bit more structure. I've updated the top comment to list out a few ideas people have thrown around lately around sustainability. Let's have conversation about longer-term sustainability plans here, and we can use #463 to specifically tackle the next short-term batch of credits from Google

@choldgraf choldgraf changed the title Anyone interested in seeking funding for the Binder project? Longer-term sustainability efforts for the Binder project Jan 7, 2022
@manics
Copy link
Member

manics commented Jan 9, 2022

There are 76 mybinder.org-deploy GitHub issues created with the impact label which are usually requests for increased quotas (the July ones are mostly PyHEP):

image
https://gist.github.com/manics/4a09dc201e0f8c6bc24f4a2a9544eeb6/0b51c7dc016045209356ee985fe49c06937e4f96

Has anyone worked out the approximate total compute cost of all these requests so we've got a baseline? My gut feeling is it's probably insignificant compared to

Separately could we take some inspiration from other free compute related resources, either in terms of funding or in how they handle donations? e.g. I've just discovered https://exercism.org/ which has an unintrusive donate box at the bottom of the page.

@choldgraf
Copy link
Member Author

choldgraf commented Jan 14, 2022

Some more feedback from Saturn Cloud

I had an quick informal conversation from some of the folks at Saturn Cloud - they had reached out to see if there was a way that they could support the Binder project and we had a brainstorm about the things that could make this easier for them. A few ideas from this:

  • The simplest thing would be to just make it possible to support Binder. This might be:
    • Ask NumFocus if people can make donations to jupyter, but earmarked for the Binder Project.
    • Come up with some team agreement about how we make decisions about money (do we spend it on credits? do we spend it on people? if so, who? etc)
    • Create a "Support Binder" page where basic information + a donate button exists
    • For credits, we could recommend that people reach out to us as this is a slightly more complex process

This along would mean that when people ask "how can I support Binder?" we can just point them to a webpage.

Moving slightly beyond this, we could also:

  • Put a list of donors to the Binder project in each year
  • Have a "high visibility" and a "less high visibility" section that is separated by some minimum donation amount
  • List the donation amounts publicly so that credit is given, and so that organizations are incentivized to give more :-)

And finally, if we did this, we would also need to do something like:

  • Have an annual report about Binder's impact and what we did with any funds that we got.
  • Define what we'd do with money if we got it. Could we have goals like "If we raise $30,000 this year, we'll split it evenly between the four BinderHub federation members to pay for personnel time, if they wish", "If we raise $70,000 this year, we'll use this to pay for a 50% FTE to make improvements to BinderHub's infrastructure" etc.
  • Do something like an annual fundraising push to encourage donations

The Saturn team agreed that this would be a much easier way for them to be able to contribute to the project, and suspected this would make it easier for other organizations as well.

I also think that this kind of setup would be a natural way to get donations from organizations like the ones @manics describes above

@minrk
Copy link
Member

minrk commented Jan 18, 2022

Has anyone worked out the approximate total compute cost of all these requests so we've got a baseline

Do you mean actual cost, or theoretical? The actual cost is hard because I suspect most capacity increase requests do not actually exceed the default limit in practice, and actual cost is highly dependent on session duration.

I think it would be great to be able to accept donations - we "just" need to make sure we have a way to spend them, which requires some figuring out.

@betatim
Copy link
Member

betatim commented Mar 4, 2022

Who at NF would I need to contact to get a definitive answer to "Can people make donations to Jupyter, but earmarked for the Binder Project." or "Can people add a comment to their donations to the Jupyter project?"?

That seems like a first and easy thing to find out.

I would punt on making (elaborate) promises about what we will do with the money (first $1k for this, then that, then if we have some left we do Y) and instead spend it all on credits. I think getting to the point where we have a significant amount of donations to spend (say more than $40k) will take a while and a lot of work.

Until we reach that point I think splitting the money will lead to such small amounts that we can't really do anything with it. For example paying 3% of someone's time seems hardly worth it in terms of overheads, but paying 20% (one day a week) is worth all the additional hassle.

Same goes for reporting. It becomes much harder (combinatorially so?) the more different things we do. So lets just pick one thing and do that.

@choldgraf
Copy link
Member Author

I spoke to Lisa at NumFocus yesterday about this actually, and she said that it should be possible. I think they are working on something now to make it work. I'm also going to chat with the governance working group in a couple hours to figure out what the process around this could look like. Some conversations around that (and a link to a slideshow I put together showing the current state of things) is in jupyterhub/mybinder.org-deploy#2138

@choldgraf
Copy link
Member Author

choldgraf commented Mar 4, 2022

And I agree with @betatim - reflecting on the above I think the low hanging fruit is to just make it possible to donate at all. Maybe we can make it even more generic than "we will use this for credits" but instead have a general list of things that the money could be used for, no promises on any one of them specifically. We can see how far we get with that, and then we have funds that can be flexible (if we get any haha). The only reason I hesitate to only use them for credits is that we tend to go through boom or bust cycles, where we are either flush with more credits than we need, or we have none. I'd like to be able to keep funds in a rainy day pot for these kinds of circumstances, so we should make sure that we don't commit to immediately spending everything on credits

@betatim
Copy link
Member

betatim commented Mar 4, 2022

For me "We will spend them on credits" (or people, or stickers, or what have you) doesn't imply we will immediately spend them. So keeping them in a bank account is fine. It is normal financial practice to create reserves and not spend it all as soon as you get it. So I think it is a good idea and uncontroversial.

@choldgraf
Copy link
Member Author

Update: numfocus donation link

NumFocus gave us a donation link for the Binder Project. So we should be able to use this to earmark donations for this project/service specifically:

https://numfocus.salsalabs.org/donate-to-binder

@choldgraf
Copy link
Member Author

choldgraf commented Mar 31, 2022

Proposed next steps

Since we now have a donation link, how about we shoot for the following next steps:

  1. Add a "support mybinder.org" call-to-action button to mybinder.org as well as the loading screen. It would point to https://numfocus.salsalabs.org/donate-to-binder
  2. Add a "supporters of mybinder.org" section below the fold on mybinder.org. This would be modeled after the jupyter.org sponsors page. It would have two sections:
    • mybinder.org federation members - these are institutions that deploy, fund, and staff their own BinderHub in the federation.
    • mybinder.org partner institutions - these are institutions that employ individuals that operate any hubs in the mybinder.org federation (if not full federation members).
    • mybinder.org supporters - these are institutions that provide significant financial resources or credits for any hubs in the mybinder.org federation ("significant" is defined as anything greater than $10,000 annually).
  3. Add a "Donate to Binder" page at donate.mybinder.org that describes the above, has the same CTA button, and also lists the kinds of things we'd do with donations as we get them.

Then when people say that they are interested in supporting Binder, we can point them to the Call to Action button and tell them that they'll get a logo on the website if they donate above $10K.

Would this be a good step forward? Anything folks would change about this?

@minrk
Copy link
Member

minrk commented Mar 31, 2022

That sounds like a great plan

@choldgraf
Copy link
Member Author

Hey all - I've set up a "meta issue" to track all of this work moving forward. You can find it here:

I suggest that we close this issue, and focus our efforts / discussion in #508 . I think those are the minimal steps to start iterating on something, and once the basic infrastructure is set up we can start making incremental improvements. Any objections?

@minrk minrk closed this as completed Apr 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants