Throughout the last three years, we have continuously supported Open Source projects through an initiative we call the Open Source donation program. From its inception until the end of 2023, we will have donated 12,000 USD to 24 projects. This blog post shares the story of why and how we created the Open Source donation program and where we see its future.
The reasoning
At commercetools, we have always supported our engineering department to engage in Open Source projects. As a result, employees have built and maintained quite successful Open Source projects like sangria, cornichon and flopflip. We have continuously evolved them and adopted them internally while other companies also began using them. In the summer of 2020, however, we started discussing how we wanted to do more by starting to donate to Open Source projects.
You may wonder why we wanted to invest in Open Source and what we expected in return. Like almost all businesses, we build our products on numerous stable Open Source projects — and we benefit greatly from software which is freely available. These projects are mostly built and maintained by volunteers during their free time without any compensation, leaving projects underfunded and maintainers often burned out. We want to recognize the impact of these projects and support maintainers financially, but we don't expect any influence or say in the direction of any project in return.
The ideation phase
To start, we set out to donate 1,000 USD per quarter totaling 4,000 USD per year to elected Open Source projects. We wanted to make the election of projects a democratic but equally distributed process across all disciplines of our engineering department. So, we opened a poll accessible to anybody working or contributing to the engineering department. Anybody from Scala backend engineers, frontend engineers, test automation engineers, UX/UI designers and product managers were empowered to suggest or vote for projects.
Additionally, we didn’t want to put up strict requirements on the project. However, we suggested focusing on projects which are in need of funding and not company backed. We assumed we could use most sponsoring mechanisms as long as the project has it outlined through whatever channels (e.g. GitHub Sponsors or PayPal) it prefers to receive donations.
To provide some guidance to anybody who wanted to put up a project or just vote, we gave the following food for thought:
What is essential to our product but is rarely in the spotlight? For instance, currency conversion or timezone libraries.
Try to think of a project which we have not donated to. We already donated to some projects twice, so let’s not make it a donation subscription.
What new project last year was a great idea and could go further? Are there, for instance, Rust projects which we intend to support?
Which person should just be able to allocate time to improve a project for the better?
We set up a poll without further ado and hoped for mighty responses.
The first donations were on their way
Our first poll in 2021 was well received and suggested approximately 20 projects with around 30 votes among them. It, however, was slightly skewed toward the frontend discipline in our engineering department. We still wanted to live up to our goal to donate to any impactful project within our organization.
As a result, we bucketed the projects into the disciplines of frontend, backend and site reliability and chose two to three projects from each group to balance the donations. Additionally, we confirmed that selected projects were able to receive a donation via PayPal, an OpenCollective or GitHub Sponsors. Finally, we ended up at our first donation targets being Vale, MSW, TypeLevel Cats, Emotion, Let's Encrypt, Rollup, lint-staged and Scala.
Time for some initial reflections
During the first round of donations, we collected the learnings we wanted to share for anybody wanting to follow in our footsteps. What struck us as an unexpected challenge was the complexities in donating from a financial perspective.
Firstly, we needed to define what cost center donations can be pulled from. In our case, it was not our tech budget, but rather, employer branding. While using GitHub Sponsors and utilizing the credit card associated with your engineering department in GitHub, you may encounter difficulties in making donations through it. Alternatively, you can consider forwarding the cost internally to the respective cost center.
Secondly, you will always need an invoice when donating. The invoice is important for internal bookkeeping. Wherever you donate money through a transfer using, for example PayPal, an invoice is not given. It is highly recommended to contact the recipient of the donation before donating to ensure an invoice can be provided.
Lastly, some small projects — just like larger projects — were not prepared to take donations. As a result, we had to reach out to them and help them set up an Open Collective or similar. This had a lasting impact as others are able to now donate to these projects.
Continuing in the 2nd and 3rd year
Going through a learning curve from our first round of donations, we were determined to move into a second and hopefully third round of donations. This is when we realized we wanted to turn it into a regular process and not a one-off action. We liked our internal process of democratic voting on projects and set up similar steps for the next round. At the same time, we wanted to widen the audience of donation recipients. To do so, we simply reminded people what projects had already received a donation and encouraged them to think of different ones.
In 2022, we again had around 20 projects which were suggested to receive a donation with around 50 votes. This resulted in us choosing Prettier, pytest, ScalaMeta, Logback, Yarn, Typelevel Cats, K9s and Jest as our donation recipients. We applied our learning from the first donation process and everything ran more smoothly than the year before. As a result, commercetools' contribution wall at Open Collective quickly filled up with donation recipients.
By the end of 2022 we were already planning for 2023 knowing that economic circumstances might restrict our ability to make donations. Still, we managed to secure the same budget as the years before and now plan to donate to eight projects again. So far we've donated to neovim, pnpm, Vite and Excalidraw and will work our way through our list of this year's projects that have received the highest number of votes.
Looking forward
The last three years of organizing support for Open Source financially has been a huge joy and learning process for all of us — from its complexities around cost allocation to being able to donate to projects we wanted to donate to. Overall, the support, involvement and gratification from everybody has been hugely motivating.
Personally, I enjoyed being able to donate to a broad range of projects and involving many in the decision to find them, instead of focussing the donation on a few already large and well-known foundations. Our ecosystem goes through small projects just as much as it does through the larger ones and none should be neglected when thinking about financial support.
To keep up-to-date about our many projects in the pipeline, checkout our Github page.