Most other commenters have answered this well enough—the harm is in breaking the licence under which you accepted the code. The use of the GNU GPL on code is explicitly
not a donation of that code; it’s a contract attached to the code which has both technical and social implications. (It is also a political statement because of the preamble text, but that is neither here nor there for the purposes of this issue.) So Christoph did
not donate his code; he put it out for use with specific terms and conditions. The only way to donate your code for any use whatsoever is to declare it in the public domain. This doesn’t work for some jurisdictions—Germany does not allow for this. This is why SQLite’s license page‡ talks about purchasing a licence (see more on the mailing list°).
‡ http://sqlite.org/copyright.html
° https://www.mail-archive.com/sqlite-users@sqlite.org/msg2437...
There are two points that most people confuse themselves on with respect to the GNU GPL, and they’re captured in this sentence:
> …If someone then uses the work for their own financial benefit, or modifies it without giving you the changes back, what has that deprived you of?…
First, the GNU GPL says nothing about financial gain from the use or modification of the work in question except in terms of mere transmission of the work. That is, when you exercise your right under licence to a copy of the modified code, a company cannot charge you more than it costs them to prepare and send you the modified code. This particular clause comes from the point where the shipment of tapes was used to transmit code rather than the network, because both tapes and shipping had tangible costs.
Second, the GNU GPL says nothing about contributing changes back to the original author. What is required is that people who have (legitimately·) obtained a copy of the modified software are guaranteed the right to request a copy of the modified software’s source code. Further, those people are explicitly permitted under the GNU GPL to further modify and/or redistribute the code and/or their modified versions. The recipient is also permitted to make financial gain of their own, if they choose. (Under the GNU GPL v2, nothing prohibited those modified versions from being useless because you could not load the modified versions onto the target hardware. This is why the GNU GPL v3 has what people called the “TiVo” clause.)
· This leads to the reason for the GNU AGPL, after a fashion. If a company were to make “Lilypond as a service” with their own private modifications, they are not required to either contribute those modifications back to the original project or to their customers, because they are not distributing the software. Someone who hacks into their servers hand obtains the modified Lilypond binaries does not have the right to request the source because the LaaS company did not distribute the software. The Affero GPL is the version of the GNU GPL that requires service companies to make available even the private modifications because it redefines distribution as use, in this case.
I’m not a fan of any of the GNU GPL licences•, but every software developer or company that uses open source or GPLed software needs to have a better understanding of the licences that they are interacting with. Most of them are written in fairly accessible English—and if they aren’t, you probably shouldn’t be using them.
• The cooption of “free” and “freedom” for licences that are highly restrictive is detestable. The effect of these licences may be desirable in a number of cases, but there’s a level of doublespeak and disingenuousness around the GNU GPL family that turns me off.