There is no way to deny (and, in fact, a major purpose of the GPL
is to assure) that if somebody creates an "major addition" to a piece
of software that is under the GPL, then, if the person wants to
distribute a binary including that addition, then they have to
distribute the sources to their addition as well. The GPL denys the
"middle men" the "freedom" to _not_ pass on the source.
Now we get down to brass tacks. The accusation about controlling what
other people can do with "their" code was a side issue.
The real issue is, which freedom is more important?
1. The freedom to redistribute and change a program.
2. The freedom to control whether other people can redistribute and
change the program.
It is tempting to say, "Choose both," but that choice is not
available. If freedom 2 exists, some people will use it, and then
most users will be denied freedom 1.
Here is how I look at the decision. Freedom 1 is the freedom to be
cooperative, whereas freedom 2 is the freedom to obstruct. I would
rather have neighbors who cooperate that neighbors who obstruct, so I
choose freedom 1.
The GPL is designed to protect that freedom. And it works. With GNU
software, all users really do have the freedom to decide whether to
distribute the program or not, and whether to change it or not.
Public domain software, and equivalent formulations such as the BSD
distribution terms, choose freedom 2.
People who make this choice often say their aim is maximize the number
of people who use the program. Here "use" means "run, as a black
box." These two views do fit together. If you think that what
matters is to give them programs they can *run*, even as a black box
that he is forbidden to share, then the BSD terms are a good way to
accomplish that.
I'm aiming for more than that. It isn't worth hurting my fingers for
50 hours a week just to give people better proprietary black boxes. I
want to give people the freedom to *really* use software, not just run
it.