Giving back to Free and Open-Source Software (FOSS)

Free and Open-Source Software (FOSS) is everywhere. Most of the software we use every day relies on free open-source bricks without users knowing or even noticing.

FOSS is loved by developers and companies because:

  • It is free to use, modify, and distribute, even if the “free to use” part is probably the main draw for most people and companies.
  • It allows developers to know what they’re using under the hood.
  • It allows developers to quickly build applications without reinventing the wheel or paying companies for software that is a black box that users can’t easily debug.

FOSS is hiding in plain sight

To illustrate how ubiquitous Free and Open-Source Software is, let’s take a concrete example with the smallest front-end and back-end application you can think of, a to-do list app.

The front end will probably be written in JavaScript, running on Node.js and using a framework like Vue.js, Svelte, etc. Your application back end could be written in Go or Java (running on OpenJDK) and maybe using specific libraries to handle HTTP requests if that’s not included in the standard library.

You’ll also be using open source to store your data, whether you want to store it in relational databases (MySQL or MariaDB, PostgreSQL) or a document database (MongoDB). And in the cloud era, your app will probably be deployed on a virtual machine (VM) running GNU/Linux on your favorite cloud provider. And even if you’re not aware of it, your cloud provider will probably use open-source software to virtualize a VM.

Evenings and weekends: where FOSS struggles

FOSS is not all rainbows and unicorns, however: there are three main issues:

  • Not enough maintainers or contributors: many developers are writing and providing libraries in their free time. Contributing is, sadly, mostly done during personal time or seen as a hobby, and it’s rarely part of a company’s policies to have employees contribute to open source during work hours.
  • A need for more funding.
  • A lack of appreciation for maintainers, for example, users expecting quick fixes or for-profit companies using repos without so much as a “thank you”.

On the importance and fragility of FOSS, source: xkcd

The problem can be summed up in one simple question: Every developer and company loves free open source, but what are we doing to give back?

In this blog post, we will show you — both individuals and companies — some ways to support the FOSS projects that make your life easier.

Contributing money

There are multiple ways free open-source software is monetized. Finding out how to contribute financially to a project can be difficult, but since most of FOSS is located on GitHub, using GitHub sponsorships can be seen as the standard way to help projects. GitHub can even recommend projects you rely on based on your public repositories, so all you need is a credit card to start distributing good vibes (and money).

Even a small contribution will surely bring a smile to a desperate maintainer’s face because it will allow them to continue their FOSS journey for a little bit longer.

Developers are fully aware that releasing code won’t bring in enough money to support themselves because only a small fraction of users will even consider paying for something that’s free to use. It’s comparable to tipping, except unlike with tipping, there’s no social pressure — the user can hide behind their computer, and no one will think worse of them for not contributing.

Companies, of course, pay their developers but ignore that a huge part of their stack often relies on FOSS developed by third parties whom they are not paying for their work. Even if it’s a small tool that just makes a company’s developers’ lives easier (like a testing framework), internally developing that tool from scratch and maintaining it would require time and money. If you think about it, it’s a bit like using brick and mortar to build a house and expecting the materials to be free of charge.

Source: Unsplash/Simon Lee

So consider contributing financially to open-source projects, especially as a company that uses open source in its stack. It’s not much different than buying a pizza for a friend who helped you move — something you could have achieved yourself but which would have taken you longer without their help.

Just remember: financial contributions don’t make maintainers indebted to you; it doesn’t and shouldn’t mean that your requests to enhance the software will be prioritized over others. That said, there are now initiatives such as Polar, which helps developers and backers tie contributions to specific issues, hoping to create one solution to the FOSS funding problem.

Contributing with your brain

Patrons won’t solve all the issues of FOSS. Which is good news for those who aren’t financially flush and still want to help. If you can’t contribute financially, you can still use your brain to make a difference, and the community will appreciate it.

Lack of contributions or project maintenance has been a common problem in the last few years: even widely used packages such as gorilla/mux have failed to find maintainers and were forced to archive their projects.

So, if you’re a developer and like to get your hands dirty, there are a couple of things you can do to help.

Get involved with feature requests

If you, as a user of an open-source tool, envision features that’ll help you in your daily life, they can probably also benefit others. Don’t hesitate to propose new features, discuss with maintainers, and even create draft pull requests.

Squash some bugs

When you find a bug, you can start tackling it. A small PR could be the perfect start of a discussion with others. You’ll be helping other users and, at the same time, improving your programming skills by getting involved with different codebases. So it’s really a win-win situation. Often, issues tagged as “good first issue” can be used as a launching pad to more complex issues.

Become a maintainer

As a developer, some tools you’re developing as side projects or to automate your job could be worth giving to the FOSS community. See this as a gift to other developers probably facing the same issues your project tries to solve.

Contribute without coding

Finally, if you’re not a developer but just a user, you can jump into issues to help others or triage them. Documentation is also essential, so any mistake you can spot or any sentence you can clarify will be welcomed. Translation is another vital part of building a worldwide community around a project.

What can companies do for open-source?

Making an inventory of FOSS you regularly use could be a good first step to becoming aware of usage and help you decide how to contribute. Financially contributing looks like the logical choice for a company, but having an open-source policy could be even better.

Dedicating company time to FOSS

You could dedicate employee time to FOSS contribution (not personal time). The Open Source Friday movement created by Github is a perfect example of what companies can do to give back to FOSS by making contributions a fixture of the company culture that is actively encouraged and not just tolerated.

If your company offers infrastructure or tools, you can support open-source maintainers by granting free licenses (like Jetbrains does) or giving free cloud credits. If you’re unsure how to create such a program, the TO-DO Group is a community that provides guidance for companies wanting to create and run Open Source Program Offices (OSPO).

You can also promote existing FOSS tools by showcasing or partnering with them (like Scaleway does with FerretDB).

Open-sourcing parts of the company’s stack (or tools)

As a company, many of the in-house tools you create may also benefit others. While open-sourcing your entire stack could be a strategically unsound move, giving parts of your code to the community has plenty of benefits. You’re helping people understand your product better, giving them more confidence in working with it, and also helping them develop their products around yours. And don’t forget that your code can always benefit or inspire others!

A lot of the code used at Scaleway in different products has been open-sourced, from production network code to asynchronous task management libraries to useful tools. But that’s not the end of it! A part of our new messaging and queuing product (SQS over NATS) will also be open-sourced, so stay tuned!

Conclusion

The FOSS model is great but definitely has its limits. Most developers can’t make a living from developing and maintaining FOSS. Meanwhile, most developers and companies can’t live without using FOSS. This isn’t exactly how a mutually beneficial relationship should work; we need giving back to FOSS to become a natural habit. If you want open source to stick around, invest in it, whether that’s time, money, or support.

I want people to ask themselves every time they’re using FOSS: what do I do for FOSS?

Recommended articles