Early this year we began an internal FOSS Contributor Fund and invited everyone at Indeed to participate. Why? We wanted to support the open source community in a meaningful way. So we decided to democratize the decision-making process and encourage individual contributions.
Our unique approach aligns with the ideals that have helped sustain the open source community. These ideals also drive our own company culture. The FOSS Contributor Fund has now reached the 6-month mark. We want to talk here about how it works and reflect on what we’ve learned.
How does the FOSS Contributor Fund work?
Each month we select an open source project that will receive a $10,000 USD donation. Anyone in the company can nominate a project, as long as it meets four criteria. The project:
- must be in use by the company or one of its subsidiaries
- must use an OSI-approved license
- must have some mechanism for receiving funds
- cannot be employee-owned
Any Indeed employee who makes an open source contribution during the monthly voting cycle can vote on a nominated project. This means that those who are active with open source projects also make the decision.
Once the votes are cast for the cycle, we count them and declare the winner. Then, we contact the receiving project and make sure that it is prepared to receive the funds. Recipients decide how to use the funds to best suit their project’s needs.
Results to date
Since launching the program, participants have engaged from groups like Engineering, QA, Site Reliability Engineering, and Technical Content Management. We’ve also seen strong employee engagement with open source since announcing the fund: over 3,000 contributions from Indeed employees. Indeed has distributed funds to five open source projects: Django, Git, Homebrew, pandas, and pytest. We’ve also selected ESLint to receive future funds.
The Git project relies completely on donations for its funds. Git has a few core contributors and a very long tail of developers who only work part-time on the project. These funds help us keep them involved, as they pay for travel to conferences, including our yearly Contributor Summit. We also use project funds for the Outreachy program, increasing the diversity of our contributor base.
— Jeff King, Git
Funds will be mainly used to pay for future Homebrew maintainers to meet in person and may be used to pay for contractors to do some repeatedly postponed tasks around updating our CI setup.
— Mike McQuaid, Homebrew
After launching the fund, we learned that all Indeedians wanted to participate. Here are some takeaways for encouraging that wider participation.
Open up the nominating process to all employees, not just those who’ve registered their GitHub IDs or self-identified their work in open source. If an employee believes a project is important enough to your company that you should support it — and they nominate it — that is enough.
Be aware of the parameters that you set for project nominations. You want to ensure a smooth donation process on the backend. You don’t want to create roadblocks and discourage participation. Essential: the nominated project must have a mechanism for receiving funds. A small number of our nominations required a support contract or a subscription. Because the fund operates within a fixed budget, recurring payments were not possible. Yet, these nominations did provide visibility into projects that we would not have known about otherwise.
Continue asking which projects would benefit most from a one-time injection of funds. Our initiative has highlighted dependencies about which people have strong feelings. Yet, the initiative does not necessarily show which projects are in most need of financial support. To date, the projects we support are reasonably well known. They generally have a community of contributors and supporters. These projects need support, but there are many other lesser-known projects that need support too. We continue to dig deeper as we work to identify and highlight projects that will benefit the most from these donations.
Use nominated projects as a starting point for getting more involved in open source. Figuring out where to start is often the biggest barrier to making that first open source contribution. Picking from a list of known dependencies helps us by narrowing the list to projects nominated during the initiative. It allows us to send new contributors to projects that someone believes Indeed should be supporting.
The pandas community is grateful for the funds donated by Indeed’s FOSS Contributor Fund. We will put these to good use. We intend to modernize our documentation, improve our performance metric and benchmarking tools, and help fund annual core developer sprints, where we can really work on pandas in depth. This donation helps unlock more resources to continually improve pandas and make it the best data science library toolkit in any language.
— Jeff Reback, pandas
Pytest will use the donation to fund overall maintenance and future gatherings of pytest developers, possibly including another development sprint sometime in the next year.
— Bruno Oliveira
Donations from companies like Indeed allow ESLint, a project that is currently run entirely by volunteers, to pursue improvements that wouldn’t otherwise be possible. In the short term, funds are being allocated for translating our documentation into different languages; in the long term, funds will be used to support individual developers who contribute regularly to ESLint to ensure that development and maintenance can continue.
— Nicholas C. Zakas, ESLint TSC Member
Indeed’s Open Source Program Office is committed to helping sustain the projects we depend on. We’re committed financially and by encouraging our internal community to contribute to the projects they use. The FOSS Contributor Fund is a great way to marry the two. We gave our open source contributors a voice in the process and are enjoying these benefits: broad contribution activity, increased visibility into a wider range of projects, and a great list of projects we can use to onboard new contributors.
Published also at Indeed Engineering Blog.