Funding Open Source Software is an NP-Complete Problem
No sustainable solution yet for most folks.
The biggest news story last week in the open source world was about core-js, and its maintainer Denis Pushkarev.
core-js is a JavaScript library that allows web developers to know which standard JavaScript features are available in the visitor’s web browser, which helps them develop specific features or test cases for these users. Many web developers may be using it without even knowing since it is a very core library and not something shiny on the surface.
It has 9 billion downloads in total, and 250m downloads each month from NPM, and is currently used by around %50 of the top 1000 websites on the Internet, and 75% of the top 100 websites.
Yet, despite all this fame, its developer shared his story on how very little donations he has received over the years, and that he can no longer continue what he’s doing for the whole web while only getting $57 at his Patreon.
This sparked a huge discussion about open source funding and sustainability again for the 134144th time.
How can we sustain the development of important open source libraries like this one? What can be done so that no other developers suffer what this guy endured?
This has been a discussion topic since like forever.
I have personally been using open source software and Linux for 13 years, and have witnessed the discontinuation of a lot of these software for the same reasons. I myself have discontinued Green Recorder, which was a Linux screen recorder, for the very same reason. You have thousands of folks who use your software, but no one to support or donate for the effort you make.
Meanwhile, these giant enterprises like Google, Amazon, Facebook or Netflix could be using your software (like they did with core-js), and give you nothing in return. They make billions of dollars, and can’t spare to support you with $500/month.
core-js is used by 75 of the world’s top 100 websites, and none of them even bothered to fund this guy.
Since the software is open source, they can just take it and use it without giving anything in return. It may not be morally correct, but it is the “legally” those folks only care about.
Sometimes, companies get even dirtier by taking the open source code, rebranding it to a project under their control, and simply giving nothing to the original developers. The famous MongoDB and Amazon clash is an example test case on this.
In such situations what happens usually is:
The project switches to a dual-license. Everyone gets it for free and can do what they want with it until they start using it in a commercial project. Then, they have to pay the developer some $$$.
The developer writes a long blog post like our core-js dude did, and finally receives the attention he/she deserves.
The project fails to raise money and development stops (most often).
Apparently, Amazon was temporarily embarrassed for a moment, that they published a blog post on how they support various open source projects. No one mentioned their names directly, but apparently, they know what they did.
But if your project is not a huge enterprise cloud product that can fit under CNCF umbrella, then most of the time you won’t be able to get the funding you need. It is so hard to raise funding for small open source utilities and projects.
Normally, this should have been the job of the Linux Foundation; the largest well-funded foundation that is established about Linux. Unfortunately, it throws money on everything, except the Linux ecosystem itself. For example, it spends only 3.4% of its budget on developing Linux kernel, and the remaining goes towards other projects which sadly do not include small utilities and desktop open source software.
Perhaps the open source model itself is vulnerable in this regard. Enterprises outsource development work to the community “because we love you bro”, and then they recycle the community effort for free and make millions of dollars out of it.
This is why many projects no longer market themselves as open source. Instead, they became a fair code project. Fair code (just like we explained in the blog post), is the same as open source software with the exception of commercialization. If you use the code in any commercial way, then you must pay the developers.
In this way, the project remains open and accessible for everyone, providing the benefits of open source software, while preventing dirty enterprises from taking advantage of it for free.
Share with us your thoughts about open source sustainability and how to solve this problem in the comments below.
Last Week Open Source News
We follow open source news from all over the Internet so you don’t have to.
Version 5.27 of the famous KDE Plasma desktop environment has been released. Major changes include a new welcome wizard, better support for Wayland, and better multi-monitor support than before.
Version 7.0 of the open source CAD program, KiCAD, has been released with many interesting features for engineers.
Firefox browser 110 was released with better WebGL performance for all operating systems.
Ubuntu now allows users to put their hands on their real-time Linux kernel. This could be beneficial for some use cases and applications in finance or highly-critical infrastructure. This is a free feature; Ubuntu Pro is free for up to 5 machines, so you can try it at no cost.
JupyterLab now has a better desktop app. Mainly it has better session management and supports connecting to remote notebooks and configurations.
Homebrew 4.0 was released. For those who don’t know, it is an open source package manager for macOS (also works on Linux).
We published a small tutorial on how you can run multiple GNOME Virtual Boxes at the same time using virt-manager.
Interesting Stuff from the Web
These discussions and articles might be interesting for you, all related to either Linux or open source software:
D3D12 GPU video acceleration is now available in Windows-subsystem-for-Linux (WSL). Could be beneficial for applications that require hardware acceleration from inside WSL itself.
Zstd is a compression algorithm that is widely used in many pieces of software. It is notably used to compress data in ZRAM disks (aka Swap on RAM). Version 1.5.4 of it was released with many performance updates. So this new version could perhaps help your PC, especially if it was an old computer.
“NASA and open source software” is an interesting read about open source software used by NASA.
Hope you liked our newsletter! Don’t forget to share and pledge your support.
(Image via xkcd).
This is a bit of a tough problem for me as an individual. I use Linux, and I have done so for a long time. I'm an advocate of Linux and free software generally. I contribute monthly to the (open source) Ardour project, and occasionally to Linux Mint (my favorite distro + cinnamon). And every once in a while I make a one-off contribution to something or another.
That said, my computer currently has 4916 installed packages. If I were to contribute just $1/month for each of those packages, that would be $4916/month. That wouldn't be sustainable for me as a user. And you must admit, some of those packages are well worth considerably more than $1.
Every one of those packages is valuable or serves a useful purpose, otherwise it wouldn't be installed. So every one of them is worthy of support. And I feel badly for not directly providing the contributors what their efforts are worth.
But at the same time -- who can afford to pay nearly $60k/year for the OS and packages, which is (at least) what it is worth?
If there were a way for me to make a (voluntary) $100 contribution annually, and have that fairly allocated to the maintainers of the software I use (without the party doing the allocation gobbling up half of it) -- I would happily and gladly do it, and maybe even contribute more. But there is no way to do this, and its not practical for me to do individually.
But you see the problem with, for example, the Linux Foundation. I have no idea what sets their priorities, but they aren't set in such a way that me contributing to them makes sense.
So that's the problem.
Any ideas how to fix it?
I am imagining a utility sort of like top that measures how much use I am getting from software over the course of the year. At the end of the year, I send that result to X entity with a check for $100 and they divvy it up. If me and 100k of my closest friends do this, a lot of software that escapes notice of big foundations will be funded.