I've always felt baffled that Free Software has been so bad about this issue. I think there are so many millions of dollars that would be happily donated and would be put to great use. I can just think of so many ways the current situation could be so much better.
Idea: A distribution adds a payment system that would allow easy donations, to individual non-profits, or the distro itself, or a mix. Throw in something to the distro installation ui, the package manager ui which connects non-profits to the packages they work on. Allow people to opt-out, or opt-in to everything.