this post was submitted on 17 Feb 2024
345 points (97.8% liked)
Programming
17540 readers
75 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Donations is a good way to handle paying maintainers, but unfortunately most people don't even know what open source software is or what software they depend on greatly that would deserve donations.
The problem is a bit deeper than this, because even if a user is familiar with open source software and is willing to support application projects that they like, they aren't going to know what other open source modules or libraries are being used in those projects and probably wouldn't think to check or to support those developers. The user front-end is visible, but the stack of dependencies often isn't and these days no software is a monolith. How many end users would think about donating to Qt directly, or alsa, or libusb?
This is one of the major universal gaps in FOSS. I have a yearly reminder set to donate, and a list of projects within it — I do it this way because a) every project I've encountered only offer MONTHLY recurring, which is stupid as fuck because b) no I'm not fucking donating the $5 a month minimum to dozens of projects and c) larger donations usually have lower fees (e.g. donating $60 usually has lower fees than 12 x $5); why the fuck would I give the banks 30% more of my donation than necessary?
Users shouldn't have to manually deal with this shit, and valuable projects shouldn't have to beg for pennies. There should be a FOSS payment management project that enables users to create an account, add ALL of the FOSS projects they use (or want to donate to), set a monthly / yearly contribution, and be done with it. Users can choose to allocate percentages or let the software divide the money between all of them evenly, including all of their FOSS dependencies.
Well, sure but at some point that donated money has to get distributed out to the accounts of the individual developers, and then you still have the transaction fee problem.
It might seem like the obvious solution is to collect donation amounts for a developer until some minimum value is reached and then distribute it, but then the donation platform is holding money (in trust? in escrow? not sure) basically making them a bank, which makes the whole thing a lot more complicated in terms of financial regulation (not impossible, but probably too expensive to operate to be worthwhile).
I think this part might be a practical impossibility. All of the larger/more popular open source projects are basically this:
That XKCD reminds me of the case a year or three ago where some solo dev that no-one had ever heard of was maintaining a library that a couple of other very popular and major libraries depended on. Something somewhere broke for some reason, and normally this guy would've been all over it before most people even realized there had been a problem, but he was in hospital or jail or something, so dozens of huge projects that indirectly relied on his library came crashing down.
What upset me most was reading the community discussion. I didn't see a single person saying, "How can we make sure that some money gets to this guy and not just the more visible libraries that rely so heavily on his work?", even though the issue was obliquely raised in several places, but I did see quite a few saying, "How can we wrest this code out of this guy's hands against his will and make multiple other people maintain it (but not me, I'm too busy) so we don't have a single point of failure?"
Well obviously giving financial support is important, but having more than 1 maintainer is good too. Because any amount of money wouldn't have stopped him from going to the hospital / jail, and certainly wouldn't help if he got hit by a bus.
Correction! It's practically impossible to implement with conventional fiat banking. It would be functionally plausible to implement if the donations were in cryptocurrencies, with a built in audit trail, and smart contracts handling the escrow and distribution — though FOSS funding would be exposed to all the downsides of cryptocurrencies (high volatility, low liquidity, regulatory fuckery, etc).
If you don't want to pay banks, ask the devs for a crypto address perhaps
When I buy a turnip from the grocery store I don't have to pay the farmer directly.
If I donate to debian, that I depend on , then debian (morally) should disburse some of that donation to the linux kernel that debian depends on.
This makes logical sense on the face of it, but in practice dependency stacks can be very broad and very deep. I doubt there would be enough donation money to make the effort of distributing it worthwhile, and at some point there would be so many small transactions that the transaction fees would eat up a significant amount.
Especially for something as complex as an OS, the dependency inventory is less like a list and more like a fractal.
It's a donation so you're never going to have perfect pricing everything down to the nearest penny or remunerating each person-hour worked. I think It's about something rough and ready that is better than nothing. And it's all goverened by morality anyway . . .
so doomed to failure on that side.
Buy hypothetically a simple principle with reasonable administration cost, like each 3 months, each node shoud add up all donations, slice off 25-50% , split it equally among their top 5 or 10 most important dependencies - just guess, and maybe swap from quarter to quarter if if there's doubt. There's some wiggle room there for small projects to do less and large over funded projects to do more.
Each node in the network could follow a simple rule like that, making a limited number of transactions each time period ,and you'd probably end up with quite a complex outcome after a few iterations (years).
The real trick would be having enough nodes in the network that actually enact such a simple rule. (Apart from having enough donations flow in to the consumer level projects of course).
But enough nodes and enough inflow and the fractal would work for you - roughly.
THe speed is an issue, the more often you settle up then quicker people see money, but the more the admin cost.
But even doing it quaterly is not slower than doing nothing.
Such a model is not something anyone will be securing bank loans off though, so if that's the point then you probably need a paid licensing / service model of some sourt maybe Canonical and redhat.