It might be helpful to provide the motivation for the GPL.
If I run your application on my computer, I should be able to read the corresponding working source codes and modify them as needed. It recognizes the right of the computer owner to retain control over his computer, regarldess of the software he has installed.
It does not say code should be free. It does not say application should be free. It only says that if I provide you with binaries of my product, I must also give you sources that can be used to modify the product in any way.
So, if you have code under GPL, and you sell the application as an end product the customer runs on their own hardware, you must provide the sources to that customer. If you the code doesn't run on the customer's hardware, you don't have to provide sources. In examples:
- If you have a GPL-based PHP application that you're hosting, you don't need to provide the source codes to anyone (beyond the HTML/JS you run in the user's browser, of course)
- If you have a GPL-based desktop application, anyone who buys your application has the right to request the corresponding source codes. You can choose to bundle the source codes with the application, or have them available at request (for at least 3 years after the sale happens).
- If you have a non-GPL desktop application that uses a GPL-based web service you host on your own servers, you don't need to provide source codes to anyone.
That should clarify the requirements and rights you have as developed of GPL-based software. But it doesn't end there, of course. Any of the customers who run your code on their own hardware:
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
Anyone can take the GPL program you sold them, and distribute it further with or without any modifications of their own, and sell them for whatever price they want. The only requirement is that the copyright notice isn't removed (i.e. you can't take random GPL code and say it's your work) and all of the license and notices stays in place.
The work must carry prominent notices stating that you modified it, and giving a relevant date.
You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy.
If you do modify the code, and release your modified version, you still must include all of the notices, along with extra notices that you made some modifications, and when.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
You may use any GPL-based application without accepting the GPL license, since that doesn't infringe on the original copyright. To redistribute and modify the work, you need to accept and follow the GPL.
So for a final summary of what is probably important to you:
If I buy a piece of software from you and install it on my own computer, I have every right to redistribute your piece of software further, at a profit to myself, without giving you a notice or any licensing fees. You must also provide source codes to me if I ask for them, and I can modify the application any way I want, as long as the notices stay, and the whole work is under GPL. I do not have automatic access to any further updates, either for new binaries or source codes, and there's no requirement for you to support my modified or redistributed versions of your application.
Needless to say, this is why commercial GPL works are usually either 1) services you do not run on your computer or 2) free, but with paid support. If I wanted to, I could order every single piece of GPL software on the market, and release it for free to everyone in the world, including the source codes.