First, remember that we're all friends and we all share the same goal. What I'm going to ask is how to best get there. If you think I'm flat-out wrong, please say so.
Drupal core is extremely powerful, but without all those contributed modules, it wouldn't be as successful as it is today.
Our problem is "how to make module development sustainable?"
Most contributed modules were created because someone needed something that wasn't there. Then, they added the module to Drupal's repository, so that others can use it and improve it.
However, the heavy lifting remains the responsibility of the author. While community members help enormously with bug reports, patches and ideas, most of the work remains with the author. As modules mature and become more popular, ongoing support and maintenance becomes a significant task.
And now that Drupal 7 is out, this work basically doubles, as D6 and D7 are very different beasts.
My Theory - Paying for Modules will Drastically Improve Them
For the last year, we've been working on the Translation Management module. It's a complex project that powers some of the larger multilingual Drupal sites around. The folks using it save thousands of dollars every month on management of translation work.
Our little dilemma is how much time we allocate to handling user issues and how much time we dedicate to building our own translation system.
Right now, all of our Drupal translation clients are running smooth without any technical or workflow problems. It's taken months to get there. However, there are quite a few others who are using our module without our translation service.
We do our best to support everyone and make our TM module play nice with every possible Drupal configuration and with other major modules. The problem is time. When we debug complex problems for others, we practically neglect our paying clients - the ones who make all this work possible for us.
Asking money per support issues is a bit like running a beg-ware business. You find yourself in endless negotiations whether someone found a bug and you should be paying them or whether they should be paying you for support. It doesn't work.
If we could charge a small fee from everyone using out module, we would be able to spend far more time into making it more robust, perform faster and more compatible with other modules.
GPL Means Free as in Freedom, but not Free as in Beer
Just because modules come with a GPL license it doesn't mean payment is a bad idea. You can think about it anyway you like and give it any name. The end result is the same - you're sponsoring the tools that you use for your business and help them get better.
When you pay for something, you also get something in return. The promise of a for-pay module is support. If you could pay for a module, you would deserve reliable support.
This means that when you run into a problem or you need help, there's an address and there's commitment. When you create an issue, you know that there's a maximal time until it's handled and that time is measured in hours, not in weeks.
What do you think? Would you be willing to pay for using modules that you depend on?