You run into a free rider problem, though.
Users benefit from the project, whether they donate to it or not. So everyone thinks, “Why should I contribute? Someone else probably will.”
That’s how you end up with systemically underfunded FOSS projects.
Which is why finding a monetization strategy (like fees for coinjoin coordination, or sales of hardware) can be very useful.