ESLint Maintainers Share Challenges of Funding Open Source Utilities through Sponsorship

ESLint, one of the most popular JavaScript linting utilities, quickly eclipsed more established early competitors, thanks to its open source license. The clear licensing enabled the project to become widely used but did not immediately translate into funds for its ongoing development. Despite being  downloaded more than 13 million times each week, its maintainers still struggle to support the utility.

A little over a year since launching ESLint Collective to fund contributors’ efforts, the project’s leadership shared some of the successes and challenges of pursuing the sponsorship model. One effort that didn’t pan out was hiring a dedicated maintainer:

This was a difficult thing for the team to work through, and we think there’s an important lesson about open source sustainability: even though we receive donations, ESLint doesn’t bring in enough to pay maintainers full-time. When that happens, maintainers face a difficult decision: we can try to make part-time development work, but it’s hard to find other part-time work to make up the monthly income we need to make it worthwhile. In some cases, doing the part-time work makes it more difficult to find other work because you are time-constrained in a way that other freelancers are not.

One somewhat successful experiment ESLint explored is paying its five-person Technical Steering Committee (TSC), the project leadership responsible for managing releases, issues, and pull requests. Members receive $50/hour for contributions and time spent on the project, capped at a maximum of $1,000/month. The cap prevents TSC members from spending too much time on the project in addition to their day job so they don’t get burned out.

The team reports that this stipend arrangement has worked “exceedingly well” and contributions have slowly increased: “There is something to be said for paying people for valuable work: when the work is explicitly valued, people are more willing to do it.”

On larger projects like WordPress, corporate contributions are critical to its ongoing development. In recent years, the Five for the Future campaign has helped compensate many contributors as their employers pay them a salary while donating their time to work on WordPress.

Some of the major advancements in WordPress require an immense investment of time and expertise. It’s problem solving that requires working across teams for months to build complex solutions that will work for millions of users. That’s why you don’t see armies of people building Gutenberg for free. Much of the development is driven by paid employees and might not otherwise have happened without corporate donations of employee time. Automattic, Google, Yoast SEO, 10up, GoDaddy, Human Made, WebDevStudios, WP Engine, and many other companies have collectively pledged thousands of hours worth of labor per month. The diversity of companies and individuals supporting WordPress helps the project maintain stability and weather the storms of life better.

Smaller open source projects like ESLint rarely have the same resources at their disposal and have to experiment. Summarizing the one-year review of paying contributors from sponsorships, the team states: “Maintaining a project like ESLint takes a lot of work and a lot of contributions from a lot of people. The only way for that to continue is to pay people for their time.”

When even the most popular utilities struggle to gain enough sponsorships, what hope is there for smaller projects? Many utilities that have become indispensable in developers’ workflows are on a trajectory towards becoming unsustainable.

“Unfortunately, utilities like these rarely bring in any meaningful amount of money from donations, no matter how widely used or beloved they are,” OSS engineer Colin McDonnell said in his proposal for a new funding model. “Consider react-router. Even with 41.3k stars on GitHub, 3M weekly downloads from NPM, and nearly universal adoption in React-based single-page applications, it only brings in ~$17k of donations annually.”

McDonnell proposed the concept of “sponsor pools,” to fund smaller projects that are unable to benefit from existing open-source funding models. Instead of making donations on a per-project basis, open source supporters could donate a set amount into a “wallet” every month and then distribute those funds to projects they select for their sponsor pools. The key part of the implementation is that adding new projects to the pool should only take one click, reducing the psychological friction associated with supporting additional projects.

McDonnell suggested that GitHub is the only organization with the infrastructure to implement this model as an extension of GitHub Sponsors. One commenter on Hacker News proposes that Sponsors and the idea of “sponsors pool” could exist in parallel.

“I believe that there’s a meaningful difference between being the patron of a developer and feeling like you’re backing a creator with feelings and a story and a family… and wanting to be a good citizen that has an approved list of projects that I benefit from and want to support,” Pete Forde said.

“I can sponsor Matz, get his updates and feel good about knowing I am counted as a supporter AND set aside $$$ per month to contribute to all of the tools I use in my projects simply because it’s the right thing to do and I want those projects to exist for the long term. They are completely different initiatives. Patreon vs Humble Bundle, if you will.”

Tidelift is another concept that was highlighted in the HN discussion. It has a different, unique approach to funding open source work. Tidelift pools funds from the organizations using the software to support the maintainers.

“I maintain ruby grape, a mid-sized project,” Daniel Doubrovkine said. “We get $144/month from Tidelift. As more companies signup for corporate sponsorship the dollar amount increases. It’s a pool.”

Snowdrift takes a more unusual approach to pooling sponsorships where patrons “crowdmatch” each others donations to fund public goods. It runs as a non-profit co-op to fund free and open projects that serve the public interest.

Flossbank is more specifically targeted at funding open source projects and takes technical approach to ensuring equitable contributions to the the entire dependency tree of your installed open source packages. The organization claims to provide “a free and frictionless” way to give back to maintainers. Developers can opt into curated, tech-focused ads in the terminal when installing open source packages. As an alternative, they can set a monthly donation amount to be spread across the packages they install.

No single funding model is suitable for all projects but the experiments that pool sponsorships in various ways seem to be trending, especially for supporting maintainers who may not be as skilled in marketing their efforts. The conversation around supporting utilities continues on Hacker News. WordPress developers who depend on some of these utilities may want to join in and share their experiences in funding small projects.


2 responses to “ESLint Maintainers Share Challenges of Funding Open Source Utilities through Sponsorship”

  1. Thanks for highlighting this problem and providing possible solutions. It is a big problem no doubt. I hope that GitHub Sponsors is only the start of something much larger.

    If you are new to GitHub Sponsors or know about it but don’t know who to back, I suggest these 4 people. You have surely come across their work in the WP ecosystem. Remember that any amount makes a difference.

  2. I’ve learnt about Caleb Porzio’s sponsorware model as a way to fund an open source project. The idea is to release a new feature only to the funders and, once you got X new funders, only then the new feature becomes open source, available to everyone.

    But I haven’t seen much success with this strategy yet to fund my open source plugin. The reason is clear: Sponsorware initially worked for Caleb because he asked the 10.000 subscribers on his newsletter for support, from which 75 agreed to be part of it. But I do not have 10.000 subscribers or followers or users, and building such a list takes time.

    Caleb’s second strategy seems much more promising: He also started selling access to tutorials on using the software. He says this strategy has been incredibly successful: as I’m writing this, he’s surpassed 1100 sponsors!

    The quest for learning appears to be a strong motivator to fund a project.

    I’ve been delaying implementing this strategy, though, because it takes effort to:

    Build the website to check if the user is sponsoring me on GitHub, and only then grant him/her access to the private video in Vimeo
    Create professional videos

    The day has only 24 hs, and I’m working alone on my project, so there’s only so much I can do. I’ve so far decided to prioritize improving the plugin first, adding all the minimal basic features that I would love to have as a user, and only then start producing tutorial videos.

    I’ve actually been lucky: just a few days ago, site (based on Laravel) was open sourced, making available the code implementing several of the required features:

    Validating users through GitHub login
    Giving access to private Vimeo videos to paying users

    So building the site is now within my reach. I just need to work on creating the videos.

    Hopefully next article about this topic, I’ll be able to comment if selling tutorial videos can succeed in funding the open source plugin.


Subscribe Via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

%d bloggers like this: