If you write a program, and release it under the GPL, it will be available for the greatest number of users. If it is well coded, it will also be of benefit to those who are trying to learn to program, and want to know what programming techniques the programmer behind this program has used. There is no guarantee that you can get the source code, and there's nothing that says you can alter it and redistribute it. A distributor is allowed to charge money for GPLed programs, but he is then also encouraged to contribute financially to the Gnu project. But he is not allowed to stop anyone else from redistributing the Gnu programs that he distributes, for whatever charge, or for free.
Free software means freedom.
Why don't you take a look at the home page of the Gnu project . You'll find lots of interesting information there, and also nice pictures of gnus. Here's a link, if you want to go back to the main page . Here's another link, if you want to mail me .