But that idea flies in the face of reality: tens of thousands of bugs are fixed in Free software code bases around the world every year; huge numbers of features are added to free software code bases on a regular basis. Yet most of the people who use Free software did not perform any of the work that went into it, and those of us who do put effort into it are never responsible for more than a tiny, tiny fraction of the global result. So obviously people will and do make things for us. I have DVDs full of the stuff; I use it on all the computing devices I own every single day. You probably do as well.
This is where the paradox kicks in: the people who do the work specifically did not assume that someone else will do it for them. They assumed that they ought to do the work so that it actually, you know, gets done. For the person writing a patch in the quiet of their office, dorm room, house, local coffee shop .. (you get the picture) .. nobody did it for them. In fact, if everyone who adds to the body of Free software simply assumed someone else would do it, there wouldn't be much Free software out there at all.
Interestingly, some of the early Free software nay-sayers used to boggle at this concept of "making stuff for others" and would present it as a "logical" proof that Free software was obviously not happening because it was not realistic: "Why would anyone do it for you? Of course they won't!", they'd say, "Therefore Free software won't happen."
Indeed, in spite of the disbelief, people do realize that it is up to them to make things happen, that it is unrealistic to wait for it to magically occur at the hands of others and so they dig in and get it done, thankfully often with great joy. (Most of us working on Free software love what we do.)
By assuming that it is up to us and therefore taking on the responsibility of doing it ourselves, we prove ourselves wrong in way because we have just, indeed, done it so the majority doesn't have to. If everyone suddenly grew complacent and decided that someone else somewhere would do it all for us and therefore we don't have to anything, then we'd be wrong all over again because nobody would do the work and nothing would get done.
What can appear as a delicious paradox is the triumph of self-motivated participation: it is people accepting that it is possible it could never happen if we all wait on each other, rejecting that as an acceptable result and so doing what needs to get done to make it happen. Put another way: stuff happens because people realize that it won't. Maybe it's just me, but I see a certain kind of heroism in these acts of self-motivation that end up benefiting others.
"Patches welcome," indeed.
Yes, there are caveats to the above discussion, such as:
- many participants do things for "selfish" reasons, such as "scratching their own itch"; however, that does not change the fact that by making the result available as Free software, that act can (and usually does) benefit others who didn't have to do anything to receive that benefit, and that the person who did the work took it upon themselves to do it rather than wait for someone else to do so.
- some people write software out of enjoyment of the act itself: even if there are a thousand other text editors out there, there are people who will write another one just for fun. While true, in my experience most participants are not entirely free of practical motivation, so while this is an interesting phenomenon it is not enough to explain the amount of Free software (and the output from other participation-based communities).
- not everyone involved is self-motivating. This is true: some people are doing it because it's a job or require regular guidance and external motivation. I would assert that behind those people are individuals (usually large numbers of them) who are.
- there are many ways to make "code get written for me" that doesn't involve actually "writing the code"; for instance translating text, doing promotional work or providing project support services has a direct positive correlation to the rate of participation. So does hiring a developer with money. I would classify those acts as examples of "doing it because nobody else will" which are of equal import and primacy to the act of writing the code that forms the body of software itself (or whatever the end product of the project is intended to be).
What made me think about this today of all days? Well, I was on IRC again for the first time in quite a while and I saw a number of people discussing patches, improvements and bugs as if someone else might suddenly appear and make it happen. That got me to thinking about the paradox outlined above .. and I love a good mind tease like this one.