How we support open source software

Our mission at Underthreaded it to have a positive impact on the free/open source landscape. It is very important to us. How we do this is going to evolve over time, but the way we’ve decided to begin the journey is through fairly simple fundraising.

Every item we sell will have a given donation amount on it. For every purchase made, this money will be split and go into a pot for each of the projects we support. Then, every month (accounting for refund windows), each project will be donated the money from their pot.

This should be a nice and simple system for us to begin with, and it’ll be interesting to see how well it works!

We have many ideas on how to expand our efforts into more strategic or goal-specific fundraising, such as sponsoring conferences. Not all projects we’d like to support are actually set up to deal with money being donated to them. For the smaller projects, we’d like to eventually build a pot for smaller monthly recognition payments to a wider group of open source contributors/maintainers, similar to and maybe even using GitHub sponsors. Ideally we’d like to build it into something more than just a free coffee every month, for example providing specific benefits to the individuals who make it into the program. Things like mental health support, as we know open source maintainership is a hard and frequently unrewarding task. But it must be said making this a reality won’t be easy!

Another program we’d like to eventually introduce is feature bounties. For specific projects where there’s a killer missing feature, we can put some budget towards putting a bounty on someone implementing the feature. Like how bug bounties help motivate people to contribute to various projects, we think if done well this could be a good way to encourage new people to work on projects. Although this one will need some thinking through, as we don’t want maintainers to get bombarded with PR’s.

Sadly all of this dreaming will get us nowhere until we can prove ourselves capable of raising any money at all. So, if you can get behind these lofty ambitions, please check out our store. We aim to only make quality products which live up to the standards of our sponsored projects.

How can we choose what projects to support?

We want to be fully transparent on how we chose our initial set of projects to support. The software community is large, and there are so many ways you can divide it up, so you can make categories to choose from. We could split it up by general software discipline {web frontend/backend, embedded, data, game, quantitative} engineer. We could split it up by project age, hype, user base or any other metric.

In the end we chose generally on software type, and we chose the subcategories:

  • Compilers
  • Operating systems/Kernels
  • Networking
  • Databases

We chose four categories because we decided that was a small enough number that any meagre proceeds we begin with won’t be split too thinly. The reasoning behind these categories are:

Compilers

Compilers are fundamental to software development. Even if you use interpreted languages, those languages normally run in some way thanks to a compiler.

Compilers are hard to build, the mature options are getting very, very good, but the scope is so massive for compilers there are huge gains to be made. Imagine the impact on software if a compiler made even a 1% performance improvement on its code gen for C (C++, Rust, or whatever), how much energy could that save for all the C code on the planet? I’m not a compiler expert, and I don’t know if a 1% performance improvement of that scale is viable at this point. I am sure that even greater than those gains have been made since the work on GCC and LLVM began.

Not only this, but the open source compilers are pretty much de facto standard, and the amount of knowledge held in their codebases and docs is unimaginable.

Operating systems

Everyone uses an operating system when interacting with most software, because it’s normally unavoidable (shush embedded friends, you at least need one to develop on. And if you don’t, I’d love to hear more!)

They form the interface we use to work with these rocks we tricked into doing maths and pushing bits for us. Shepherding the processes we spawn while using our computers and making sure they all get their work in a reasonable time without too much fuss. Patiently handing out memory to hungry, hungry applications, all pleading for more. Packaging up your bits and singing them to sleep on the way to their stasis chamber. The day in the life of an operating system is like a hyperactive charity volunteer. Incidentally like a lot of the people contributing to the open source operating systems and kernels we have kicking about.

We call the category “Operating systems”, but we do include kernels within the category, as they are a subset of what an operating system does. We include Linux as a project which would come under this category, as we define it. But spoiler alert - Linux won’t be our starting choice in this category.

Networking

Networking is an admittedly vague category. Networks and our methods of communicating over them are what form the internet, opening up the possibilities to use our computers to do all the good stuff we know and love. Look at all the progress that has been made over the last couple of decades compared to the centuries beforehand. It’s hard to say how much the internet has affected this, but it’s easy to say: a lot! Such a large field with some dastardly intelligent people working on amazing software which hides most of the scary edges and makes building systems on the internet a breeze.

Databases

The information we store in computing systems is arguably the thing which makes anything in tech worth doing. Storing this data is the job of a database (or a filesystem, which is a database if you squint). Doing this well is dark magic to most. Data compression, packing, indexing, querying are all research fields in their own rights. The hard work that’s been done to make so many of these features available to anyone to use is nothing short of staggering. Server side, in memory, in file storage, so many options for each packed with so many features you can barely keep up with them all. Relational, Key Value, Time series, Streaming, Vector and more types of database exist and are all trivially installable and free to use on your project should you need them. The wizards of data storage are overdue their tithe.

And now for some close runner ups who will be our next point of call…

Browsers

Our portal to the internet. A standard piece of technology, potentially the most used user facing tech out there. The complexity in the web standards has made it very hard for new browsers to come about and competition has certainly stagnated.

Edit @26th of Aug ’24: This article and the choices we describe were written and made before the new Ladybird Browser project was announced. We are thrilled to hear that we have another potential player in this space, but we want to prevent any dilution of impact we can make in the short term after we launch. Ladybird is at the top of our list of projects to expand to once we have the capacity to. We of course wish them all the best and only hope we can soon expand to do what we can to help them.

Package managers

At first glance this may be the odd one out among the esteemed company of the other categories. However, we think having good package management and package distribution is incredibly valuable. One of the most obvious selling factors for people first coming across Unix based operating systems is the obvious sense of having high quality software distribution. The simplicity and power this affords the user where accessing any number of powerful software packages is no more than a command away is huge.

Productivity

For the masses, productivity software is all people use. Email clients, office software, multimedia editors. Hence, why most of the household names in this space are paid software, because that’s where the users lie. The amount of high quality open source software in this space is extraordinary. People complain about a lack of valid MS Office alternative, but in our view this is a non issue.

Software like:

  • FFmpeg
  • ImageMagick
  • Pandoc
  • Blender
  • Inkscape
  • Gimp
  • LibreOffice
  • Many, many more

Makes it possible to achieve so much for zero cost, and we’re so glad they exist.

More, definitely

There are definitely more, and if you think we’ve missed anything, let us know!

Our actual project choices

Now, this will be a contentious one, everyone will have their own idea of what this projects should be first. Let us know on socials or by replying to this blog what your choices would be if you were in our shoes!

So, we have to start somewhere and choose a group of projects. There are so many worthy projects out there, and it is tough to accept you can’t support them all. Still, we also don’t want to dilute our support and lose any positive impact we have the opportunity to make.

  • Compilers: GNU Toolchain (GCC)
  • Operating systems: OpenBSD
  • Networking: Curl
  • Databases: Postgres

We choose these not just because they build incredible software. They are large enough to be able to do something with the money we give them. Some were chosen to hopefully increase competition in their space. All were chosen because we know there is a lot of good work going on and more to be done yet. We’ll expand a bit more in later posts why we chose each of these.

How this may evolve over time

Until we see any growth a lot of this thinking is pointless. We can dream all we like about funding FOSS, but we need to prove we can make good donations before we can make that a reality. Anyway, for better or for worse, those were our thoughts and choices! Feedback is always welcome.

When we first decided we wanted to pay a portion of proceeds forward we thought we’d let you choose which project to support for that particular purchase. But as time went on we decided to start simpler with the even split model. We will reassess as time goes on and see what feedback we get. But the first step is…

If you want to support the projects above, or show support for our plans and drive forward the day we can expand our project support efforts. Visit our shop now and pick up something worth having!

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.