We all love FOSS. Lately, many of us have expressed their disarray at hearing stories of maintainers quitting due to a variety of factors. One of these is financial.
While donating to your favorite app developer is something many of you already do, the process can be tedious. We’re running all sorts of software on our machines, and keeping an exhaustive list to divide donations to projects is somehow more effort than tinkering with arch btw™.
Furthermore, this tends to ignore library projects. Library maintainers have been all over FOSS-centered media rightly pointing out that their work is largely unnoticed and, you guessed it, undervalued.
What can we do about it? Under a recent Lemmy post, some have expressed support for the following idea:
Create a union of open source maintainers to collect donations and fairly redistribute them to members.
How would this work?
Client-side:
- You take some time to list the software you use and want to donate to
- You donate whatever amount you want for the whole
Server-side:
- Devs register their projects to the union while listing their dependencies
- A repartition table is defined by the relevant stakeholders. Models discussed below.
- When a user donates, the money is split according to the repartition table
How do we split the money? It could be:
- Money is split by project. A portion of donations go to maintainers of libraries used by the project.
- Money is split according to need. Some developers don’t need donations because they are on company payroll. Some projects are already well-funded. Some devs are struggling while maintaining widely used libraries (looking at you core-js). Devs log their working time and get paid per hour in proportion of all donations.
- Any other scheme, as long as it is democratically decided by registered maintainers.
Think of it like a worldwide FOSS worker co-op. You “buy” software from the co-op and it decided what to do with the money.
We “only” need to get maintainers to know about the initiative, get on board and find a way to split the money fairly. I’m sure it will be easy to agree on a split, since any split of existing money will be more satisfactory than splitting non-existent money.
What are your thoughts on this? Would you as a maintainer register? Would you donate as a user? Would you join a collective effort to build this project? Let’s discuss this proposition together and find a way to solve that problem so that FOSS can keep thriving!
Removed by mod
I did, and I was intentionally hopeful when I wrote that. I stand by the latter part of the argument though. I’ve seen enough situations where splitting money was not a problem as long as a common interest was there and the decision process was flear and fair
“We choose to go to the moon, not because it is easy but because it is hard”
The previous social model of monetizing everything is also not working and terribly complicated and sends the majority of the profit to those who contributed nothing but their claims to ownership and entitlement. I’d rather live a world where we were constantly debating and discussing while sending the majority of wealth to those people who actually created something.
Human cooperation will never be easy so we have to learn to live with that reality.
I love this take! Its so simple yet so far reaching and well thought out. We need takes like this in our governments.
Hehe, yeah, I was thinking „this surely is sarcasm, right?“ when I was reading that 😹
So now that you’ve stopped OP, what’s your solution?
Spend some hours on that list:
The effort behind that list is great and it does help people out. But I don’t think many people will look at it and decide to donate. This is part of what is to be solved here
This is just a list. Why on earth is it hosted on Github? Terribly incoherent with its mission.
Its versioned using git. Just clone and push to any provider you like.
I’m sure it will be easy to agree on a split, since any split of existing money will be more satisfactory than splitting non-existent money.
Isn’t “how do we fairly distribute wealth” one of the hardest problems we’re still trying to solve as a global society?
A fund that gets distributed to open source volunteers (or contributors?) sounds good on paper (and I think it’s something we should strive for), but whoever is unlucky enough to actually try to formalise it is going to have to deal with a lot of shit and drama.
Oh yes there will be drama. But I would gladly help sort it out if there was enough interest and I think I wouldn’t be alone in that endeavour.
It’s always better to distribute poorly than not distribute at all
It’s always better to distribute poorly than not distribute at all
I’m not even sure you can get people to agree on that either, to be honest…
TLDR: We should make a browser extension where you assign points in what percentage projects get your predefined monthly donations.
So this will be a long text…
I have thought about this problem a lot. If we can have means to build necessary momentum I am all for that and would like to contribute.
I thought about it in a broader way. As to how to monetize content on the internet without ads (open source projects, creators, journalists), in a way we maximize collective good. It may be worth noting I was thinking it in terms of the new internet - Web 4.0 together with tools like ipfs, veilid, and new wave of web browsers (web 1.0 - protocols, 2.0 - platforms, 3.0 - crypto scams, 4.0 - something better, p2p, private…)
I placed highest focus on how to fairly monetize this web 4.0, since I believe the right monetization is the crucial point. If we put only donate our free time (max 2h a day) to projects things move slowly. But imagine what can be done if I am allowed to work 8 hours a day on eg. foss.
I have concluded that few things must have hold true:
- Donator decides on who gets the money.
- It must be very very very very simple to donate and to decide who gets the money.
I can propose one solution i am the most confident with. It would be a browser extension (or even better to be integrated in browsers by default).
-
First you set how much you would like to donate. (I played in my mind also with option to make some minimal donation - eg 1% of minimal salary in your country - may even be necessary as a subscription to internet content)
-
By default the sites (maybe preapproved sites good for community) get percentage of your donation proportional to your views.
-
You can explicitly set some (or all) sites to have higher percentage directly in from address bar by single click. Eg. I visit Linux webpage and I can click a button and set it to 20% of my donations. All the other donations then move proportionally to remaining 80%.
System based on (maybe even forced) donations changes whole behavior of monetization.
You start paying for what you believe in, and not for what you need.
And I believe this is the one of most important goals we can have. So people will have the highest incentive to work on stuff that makes the most good.
Also another note on forced donations: In Slovenia you can decide to put 1% of our taxes to non profit organizations. And this works.
If you read through that. Thank you! I believe my ideas have many flaws. So please comment and we can debate them.
This is reminiscent of Flattr. As are other suggestions here.
The basic principle of Flattr still seems right to me. You pay a monthly sum for all your donations to a third party in escrow. Then the third party redistributes the money according to your instructions, either by means of a tipjar buttons on websites, or a browser add-on, or perhaps just a giant list of checkboxes and sliders.
The major advantage being that the third party deals with the plumbing of payments.
Think Flattr where devs have a say in who gets what. A whole lot of problems to solve, but potential to be a central platform that devs actually want to join and advertise because they trust it
Never heard of them. Should we contact them?
That would be a nice option for web-based stuff. I guess the whole difficulty is to get a list of projects and to publicize it widely. I also believe donations should be stupid simple or they will never take off.
The main difference between your idea and mine lies in who decides where the money goes. I do not think end users should decide 100%, because that ignores a lot of critical under-the-hood software. Users must however have a completely transparent report of who gets what. I guess at that point they should be able to adjust it to their whims, which circles back to your point 1.
I think you can still have users decide which projects get funding and have the system/organization/smart contract/etc automatically distribute funds to the libraries those projects depend on. 80% to the project, 20% to the libraries, etc.
If we let devs decide which projects get funding, they’re just going to always pick their own project. Since that doesn’t align with what users want, users won’t want to donate. If you want users to donate, you need to let them have some say in what their projects their donations go to.
Ideally you would let picky users override every setting and provide fair enough defaults. That includes library donation cascading etc. At the end of the day it seems the core part of the project should be providing fair enough defaults
-
It may not be only for web based stuff. The only things organization would need is the website and a bank account. Which is pretty standard these days.
-
We could have both systems. There should still be the default setting. I proposed the default distribution should be based on views. But the default setting could also be set by the community. This default distribution would also be used by the people who decide to favorize one project and give them 50% of their donation and leave the rest with the default distribution.
Also I believe it is crucial you can override the decision of this community. There will be bad decisions or decisions that you personally do not agree with. But because of that you should not give up on donations. You can simply pick your own, or blacklist one organization you do not agree with.
It is crucial indeed. That makes the project more of a central donation platform removed from the dev world, but it is simpler as such
-
And you did it! I‘m insanely impressed at the depth and commitment shown in this post. Thank you so much for making this.
I‘m ready to help. What do you need? Have a github repo to join? Hit me up if you like.
You are indeed a good motivator! The reason I did not want to make this post at first is that I need everything: people to brainstorm with, people that can carry the project, people with the skills to create a prototype, people who can convince FOSS projects to get on board, and people willing to encourage others to donate.
Overall too much labor, skills and connection for one person. I believe we would need a team of 10-15 volunteers, some already involved in projects, to put something up
I think you‘re not wrong about the total people required. What I can tell you is that not all people are required in the beginning and more will join as you gain momentum. I‘ve built a couple of successful companies so I do have some experience with this.
I’m trying to lay a plan in my head where some software parts of the project could be made as graduate projects. If I can get key teachers in on it they could really help out. I’ll draft a plan in my head and try to gather people who showed interest here for a meeting once a better-crafted top-level view is set
Sounds good. Let me know if I can help.
I am sorry did not see your were planning on doing that. Well do not make your plan alone. Let’s make it together.
So here is matrix space now: https://matrix.to/#/#fairdonationplatform:matrix.org
I would be interested in this as a user and as a dev for OSS projects. I currently donate to a few projects via OpenCollective, Github sponsors, etc. A few options:
- Users vote on how the money is spent, perhaps in proportion to how much they have donated over time. I think this is the simplest model that prevents self-dealing and accurately transmits user interest. You could use a quadratic funding model to better represent user interest instead of just giving the most vote weight to the users with the most money. On the other hand, assigning vote weight based on donations over time incentivizes users to donate more and keep donating (stopping a recurring donation could result in loss of vote weight and help redistribute vote weight as users become less active). You could also do a hybrid model: 50% is assigned according to vote weight based on total donations, 50% is assigned based on quadratic funding.
- Developers vote on how the money is spent. I don’t know how to allocate vote weight here. Devs should also submit a list of downstream libraries which would receive donations. (or is it upstream?).
- User and developers both vote on how it is spent. Vote weight could be distributed however, for example, 50% to users 50% to devs.
This kind of a system would be very possible to implement as a DAO, there are templates out there for making an organization like this. You could use BTC or ETH, both support DAOs. The benefit there is that since no single entity holds the money, no single entity has to file taxes and claim that money as income. It also automates the voting process and solves the issue of users having to trust a single person or organization to hold and distribute the funds. Making a DAO on Bitcoin lightning could reduce tx fees to less than a penny per donation.
You could also incorporate it as a non-profit depending on your jurisdiction. Many organizations like the Linux foundation have pursued this route, look at what things they have tried and what has worked. Also just a link to leave here for your research, I’m not suggesting you use this, I’m just saying it’s relevant interesting thinking in this area: https://blog.obyte.org/kivach-cascading-donations-for-github-repositories-2b175bdbff77
Other relevant links/research for you: https://github.com/Resolvr-io and https://nostrocket.org/About
Also research Gitcoin, they have used quadratic funding to fund a number of OSS web3 projects in a similar manner to what you’re proposing. I have participated in a few of their funding rounds as a donor and a recipient. Their interface is a mess but the concept is cool.
The solutions you linked are interesting but ultimately neglect the most important aspect in my opinion: discussion among stakeholders. They also tend to use bitcoin, which has proven it could not gain enough traction to be mainstream yet.
Taking the core principle of Kivach and making it viable in state-backed currency, using the platforms devs have already set up for payment would be a great leap forward. We need to get something going and build support from a critical mass.
Why is Kivach not more widely used? We should tackle these questions and try to improve it.
The discussion portion wouldn’t happen over BTC, that’s just for funds management and voting. Discussion could happen on a forum, lemmy community, matrix chat, discord hangout, or other space. I suggest BTC because with smart contracts you can automate the voting process among stakeholders and make it so you don’t need to trust any single party to hold onto the money. It solves this exact problem of coordinating financial transactions with multiple people who can’t trust each other. It also solves the “how do we accept donations internationally easily” problem. Bitcoin has a market cap which places it in the top 25 countries by GDP, higher than Sweden. 850 billion dollars. On average, adoption and market cap grows year on on year. It may not be the USD, but it’s already more widely accepted than most national currencies.
Re: kivach, it’s not more widely used because many people don’t know about it, it’s using a lesser known cryptocurrency as a base, and people reflexively go “eew crypto” even though it’s perfect for solving these kinds of problems. Anytime you have a distributed decision-making process that needs to be international and you don’t want to trust a single party or parties to manage that system, crypto is good at solving that problem. Most people know it for solving that problem in the realm of currency production and decentralizing finance, but it has much broader implications in terms of anywhere you have distributed decision making. Note that kivach doesn’t have any kind of distributed decision making or voting, it’s basically just a smart contract bot that distributes coins based on github dependencies.
Bringing the state into this just brings us a bunch of problems and no solutions. For one, every state or block of states has different currency, and for every state whose population you want to participate, you have to some how bridge access to that state’s banking system and incorporate it into the system. And you can’t do it in a decentralized way, so you need some legal entity to be formed to handle all this and the staff to do all this. So that’s a nightmare. State-backed currencies can’t easily or cheaply be transmitted electronically across borders, and often, even within the same country. Or you have to use some third-party service like PayPal or Venmo to do this, which is its own set of complications. More nightmare. Plus, hello fees and making microtransactions prohibitively expensive. And that’s just moving funds from A to B, that’s not even getting into managing the voting system and navigating the laws every single country whose currency you use, each of which are going to have their own interpretation of whether or not your voting system is compliant with their legal system and whether or not they agree that funding a project like the Tor project is allowed. You may say you don’t care what Turkeys laws say, but if you want to maintain a bridge to their banking system, you have to. So that’s what incorporating the state and fiat system brings you. Or, you could write a smart contract once and have the administration of this system run automatically forever and be available to anyone in any country automatically. Running an international organization which receives funds, holds funds, votes on how to distribute those funds, distributes those funds is exactly the kind of thing blockchain excels at.
Got you. It is a shame that this part of crypto is not more widely publicized, as it is its most interesting use in my eyes.
Still think it can’t be the only solution if we want wider reach. To avoid taxes and legal structures, I want to study whether we can interface with projects’ available donation options and automatically split a user donation into several. Skipping the “finding the donation option for each project” problem which can be tediously human-solved for a proof of concept, the issue would be whether the process could be easy for the user while not getting obliterated by transaction fees.
There is no need to develop a crypto side since I’m sure a way to interface with Kivach could be found if the other fiat currency problems are solved beforehand.
Thank you for your input, it means a lot.
Everything that involves money needs to be stupidly simple, and even then there will be controversy. I see what you’re going for, and it does address an important issue. I don’t think it’ll work with this level of complexity. Hopefully I’m wrong or we can come up with something else that would.
Stupidly simple doesn’t seem to be able to fix the problem here. We need to find the simplest way that can help. How would you make it simpler?
Not at all tech savy enough to maintain, but willing to donate. A project like the would be soooo nice
Does this work here: !RemindMe 6 months
Or, people actually give the software they use some time and realise the work of devs working on the underlying library.
Anybody here ever support the ffmpeg project?
The big stumbling block I see with this approach is that it’s not just the maintainers who do the work, as others also contribute code fixes, documentation and help in the community.
I can see the very real need to support the core maintainers on the projects we use, but I can also see that causing friction if the others who contribute to a project being successful and useful are overlooked. I know that some projects’ communities put bounties on bugs they want dealt with, which helps to a degree, but still leaved many contributors effectively donating their time whilst a core group get paid. For instance, I’ve submitted and had accepted several patches across several projects that I use. They’ve usually been tobadd functionality that I wanted and saw others wanted too. I don’t think I’d want paying for them, but I’d probably feel different if I knew the person accepting the pull request was being paid, either commercially or via a scheme like this. Maybe that will work out in practice, but I’d be worried about the change in dynamic.
I don’t have a good solution to this, but I thought i’d offer it as a different viewpoint.
Thank you for the input. I guess it would be hard to track community engagement. Also, whatever is done with the donation is up to the project maintainers, in any case. Accepting the pull request in your case is also a great deal of work given the amount of spam they can create, so it is still fair in some way. No one will get rich off of donations anyway
Maybe I’m missing the point, but if you want to have union of maintainers/contributors, please go ahead, just be careful with assuming it can actually address the problem. You will never have any substantial percentage of maintainers. That’s kind of the main point of FLOSS: people do what they want to do, where they want to do.
If you want to collect data about what is used – with the goal of “not forgetting the little project with the library”, that’s also great but that’s going to be a lot of work and might be impossible to reflect. I can’t think about solution that would not be platform-specific.
Don’t get me wrong, uniting FLOSS developers along common goals, technology domains or philosophy, building communities and providing support systems is an absolute wonderful thing to do, even if you end up having what might feel like just a few projects.
You are not missing the point and bring up something my jaded views keep reminding me about. It is important to not believe too much in your efforts so as to stay grounded and not be too enthusiastic and get disappointed when downturns inevitably appear.
I’m battling between two approaches about data collection: the tedious manual entry on behalf of devs or the fully automated scrapping a la other existing efforts in the field
I would not say “not believe too much in your efforts”, I think the tendency to simply scale down enthusiasm can be toxic in its own way.
I like to remind myself of how Václav Havel said it:
Hope is not the conviction that something will turn out well but the certainty that something makes sense, regardless of how it turns out.
Yes, being enthusiastic about false goals can lead to devastating results. Being hopeful by realizing that your work does make sense even if you won’t necessarily see results of it, that’s much more sustainable source of motivation.
Also, remember that no matter how it turns out you will learn something on the path. If anything, this is one of the “certain” parts.
A balance definitely needs to be struck and I’m hopeful that I am on the right side of it. Thank you for your support, it means a lot
Think I’ve seen this already with some open source groups. But they aren’t open to other projects and generally take direct management over them.
Only way I would consider this (as an open to all thing) is if it were run by a well known non-profit that already operates in FLOSSland. Like FSF or something like that.
FSF stepping up would be awesome and I’ve thought about it. Sadly it doesn’t seem to be in their priorities
What about an approach where there’s a website to facilitate people donating to FOSS project, and all that website needs is a list of possible recipients of the FOSS project (e.g., app developers, libraries it uses). When I want to donate I go to this website and say “I want to donate to Lemmy”, and it shows me “Lemmy has these possible recipients: X, Y, …”. When I say “I want to donate $10” the website asks “should we distribute this evenly among all Lemmy recipients?” (which might be the default) or I have the option of unchecking some recipients or or assigning some recipients a higher percentage of my donation.
Isn’t it kind of what Liberapay is doing?
That’s sort of what is preached here. However, no one is gonna bother making a complete list of projects and dependencies. And we still have to define what is the even distribution among Lemmy and its dependencies for example, hence the need for a democratic structure
I like the idea of just one point to donate to lots of open source projects but I’m not sure if union is the right word for it? I immediately thought of worker’s unions and they dont collect and distribute money for their members, so they? (Or at least it’s not their primary function?)
Many unions collect fees, for operational costs, publications, transportation costs, etc.
Especially they collect funds to support those who have been unjustifiably laid-off, or during strikes to have emergency pay so they can refuse to return due to fin.pressure. Families of disabled or killed at work members…
The thing here is you have for profit corporations producing code as well as executives, and unemployed privateers. Who gets what?
Among distribution rules to be discussed, one of the first points would be who is eligible. I would not want corporations to be supported by these donations, but some companies actually focus on FOSS as a service and I could see them getting in on it. I would exclude devs employed at a company getting paid to contribute as well.
I think this would not drastically change the status quo. Today, corporations contribute to FOSS, but mostly to make sure their hardware or other software is well supported. They will still have that incentive if there is a central donation system that excludes them.
Especially they collect funds to support those who have been unjustifiably laid-off, or during strikes to have emergency pay so they can refuse to return due to fin.pressure. Families of disabled or killed at work members…
Ah, I didn’t think of that, yeah, unions are even more amazing then I thought. So calling it a union would make sense (but I’m still unsure if it’s the right name if it’s primarily about getting money for people’s work?). OP also called it a co-op which I think is more fitting, personally.
I can see a lot of interest here. I believe we should start working on it. By working I mean it would not hurt if we continue the discussion. And if we can agree on implementation we actually start working on it.
Anyone interested in making this real, welcome to join matrix space: https://matrix.to/#/#fairdonationplatform:matrix.org