Re: Divide and conquer
A common misconception is that EVERYONE needs to contribute back. It's just not true. I have code in open-source projects out there, but it's pretty minimal to say the least, and I have several private patches that I wouldn't dare to pollute a foreign codebase with. But most of the people I know who are the largest users of open-source don't contribute anything at all, and yet it still thrives and grows every year (use Firefox? You're one of them).
The reality is that *I* benefit from other people being able to see the code and play with it. The usual argument is security, but it goes far, far beyond that. A single patch, approved, tested and posted to the Linux kernel will end up on MILLIONS of machines within hours. I benefit from that. I benefit from moaning about it not working too. I benefit from other people looking at code and saying "I can't understand that, it looks like complete nonsense" on any of the projects that I use. I even benefit when projects are forked or abandoned because of that (because otherwise *I* would have to fork myself, be left without support, have to start up a rival project from scratch, or go seek out alternatives on my own).
99.9999% of GPL-licensed software users push back exactly zilch. That's not a problem at all. Nobody really cares, but it's more than, say, the number of Microsoft users whose code ends up in Windows (good luck with that!). You're confusing users with developers, though.
As the barest of bare amateur developers, I have tested, patched and hacked the code I have available to make it work the way I need to. Everything from patching the rt2500 drivers on my private systems with a patch that I had to craft to get it to compile on a new kernel (pre kernel inclusion, something to do with the way interrupts were handled changing in that kernel, if I remember), to the patches I have to make to my own copy of Hylafax to get it to run the numerous fax lines in my workplace without forcing me to upgrade to the next version to get feature X (risking a hefty mid-cycle upgrade), to fixing TuxPaint (I work in schools, it's one of their most used programs) to juggle the menu items to make them easier for little kids, to providing a routine to OpenTTD that reduced the amount of bug reports they got where people were using hacked/unofficial datafiles (which has since stopped a lot of spam on their bug monitoring and provided several people with the knowledge that their datafile were unintentionally corrupted - who knows, maybe I found out for someone that their hard disk was corrupt by that patch!).
Those little changes are the freedom I pay for. If notepad doesn't want to open a particular file, there is bog-all I can do about it. But if *metapad*, the program I use in preference because it lets you do lots more, does it then I can work out why and change its behaviour, or lobby to have it changed. I don't expect a user to, but like some of the things mentioned above, after some time they may be able to do exactly what I've done without having to know how (the first person to invent the wheel was a genius, the people who followed after benefited from his genius, and now we all take wheels for granted).
Similarly, I just hacked Classic Shell because that open-source project refused to allow in a feature that I think it needs (an option so right-clicking the toolbar provides the "old" Windows context menu by default and the "new" Windows context menu if you're holding Shift, instead of vice-versa). So I hacked the code myself, added the feature, and *I'm* better off even if no-one else is. And I didn't require their co-operation at all (and received just the opposite). But how many people can actually go and tweak their *Microsoft* Start bar or put it back into Windows no matter how nice they are to MS.
The GPL, especially, gives users and developers the freedom to benefit from each other. It's arguable that the average end user ever really benefits from MS developer's wild ideas. But certainly, though your granny can't hack into the KDE source code, she benefits from it being available to others.
Think about the movie I, Robot:
Man (sarcastically): "Can a robot create a masterpiece?"
Robot: "Can you?"
Arguing that users don't benefit is like saying that air passengers don't benefit from someone looking into aircraft designs, their safety, effectiveness and room for improvement, from outside the industry, or even the general public provoking outcry when a particular type of plane keeps having problems. Of course they do. They just can't necessarily do it themselves directly.
The GPL's epitaph? "Someone better came along and replaced us. Mission accomplished."