There's a very large difference between Linus's definition of "Selfish" (Which is basically people scratching their own itch, serving their own need) - and societies definition of selfish, "MW Def: concerned excessively or exclusively with oneself : seeking or concentrating on one's own advantage, pleasure, or well-being without regard for others"
To some degree, all human behavior is "selfish" - we're all driven to do those things that bring us pleasure. The question is, in doing so, do we do so exclusively, and without regard for others. Traditionally, when we use "selfish" in the pejorative, that's the differentiator in how we use the word and Linus does.
The genius of the GPL, of course, is that it aligns ones own self interest with those of a greater community. You can use the software as much as you want, just as long as you contribute back your changes to others. An enforced quid-pro-quo, if you will.
I absolutely understand the argument that Linus is making, and I agree with him - that, long term, people need to be driven by the need to satisfy some personal need, not some greater community good. But suggesting that contributing software to the GPL is selfish is using language in the same way that suggesting affirmative action is racist. This is only true if we stretch the definitions of the words selfish and racist.
For example:
- There is no existing project that completely meets my needs. This one almost does. I can patch it, but maintaining a separate fork would be a lot of trouble. Therefore, the easiest thing to get what I want is to contribute a patch to the main project.
- I want to prove to the world that I'm a good developer so that I can achieve my career goals. I can't easily show off my closed-source code. Therefore, the easiest way to get what I want is to release good open source code.
- I like having lots of open source software available for free, and I want to keep that paradigm functioning, therefore I view contributing as an investment with a good payoff for me. (This one is a bit more of a stretch.)
I think you can contribute to open source for truly selfish reasons, and that can work out well for everyone. It's similar to how you can run a business purely for profit, and as a necessary means to that end, provide a good product for a good price.
However, in practice, I personally contribute to open source partly for selfish reasons and partly out of altruistic ones.
I agree. That's basically what Linus also said in the continuation of the quoted interview. I also think that being "selfish" (to some healthy degree) is not a bad thing per se. If we put it in a proper context (like GPL) it can have better results than many truly altruistic efforts in the same direction. It is simply more natural.
One interpretation of this statement is that, if I'm trying to contribute altruistically by solving a problem I don't personally have, it may be that nobody has that problem, or it may be that my solution doesn't help those who do.
Whereas if I solve a problem I have in a way that satisfies me, there's at least one data point to say that it's a good solution, and it's likely that others will benefit.
The common phrase for this is "scratch your own itch."
Open software is often narrow in scope, tied to some preconceived notion of how its going to be used, and spotty in implementation. E.g. Gimp, which is useful for some but useless to me - I have GB of layered images that won't import into GIMP except as flattened bitmaps - I'll need to continue editing my layers in future. I could write my own image importer for GIMP, but hey! paying for a PS license is cheaper and faster.
Other examples: file format interpreting libraries. I've used them lots. Each time I have to untangle the actual code that interprets formats, from the cruft around it that assumes I'm going to run a command-line script, or link with a certain runtime, or have a dialog-based interface, or whatever was the itch somebody scratched when they created the code.
If its in nobodies best interest to separate the actual IP from the scaffolding that surrounds it, then Open Source is delegated to hobby projects by people with time to burn.
Maybe more altruism would make Gimp fit your use cases, but I doubt it. Some work just won't get done without a profit motive.