The GPL license has a couple of clauses/definitions that are not clear outside the original scope (C programming) that give corporations heartburn.
- If you extend a GPL project you are responsible to (a) advertise the fact, providing the GPL license to your users and (b) provide a copy of the source code to anyone who requests it. NOTE: a request can be required to be done in writing, as opposed to making it available for download.
- If you link to an GPL library you are not extending it, so the prior clause doesn't apply. Problem is that link means different things depending on who you are talking to--for example what does it mean in an interpreted language like Ruby?
It's for the reason of potentially giving away corporate secrets that most corporations shy away from GPL based projects. Additionally, there may be other legal/proprietary knowledge type risks that I'm not aware of.
Dual licensing is not uncommon. It's a way of ensuring that the base product is always available, while providing value to people willing to pay for it. It's also not uncommon to simply choose a FOSS license that doesn't contain the scary clauses such as the ASL, MIT license, or some variation. It gives corporations much less heartburn to provide attribution than the source code. In short it's better to say the product uses Apache Xerxes than to have to release the source code because it embedded a GPL'd XML parser.
Additional background on American copyright
Back in the 90's I attended a 2 week seminar that covered copyright law, as pertains to the entertainment industry. That seminar was taught by one of the most pre-eminant lawyers focusing on the subject at that time: Al Schlessinger. What follows is a brief summary of information from that seminar (I myself am not a lawyer, I'm just repeating information):
- Copyright is real property, as in real-estate. It can be bought, sold, bequeathed, and donated just as land can.
- Use of copyrighted material is dictated by licenses, which in turn get their enforcement from contract law. A license is a contract.
- If the terms of the contract you are working under require you to turn over your copyright, you are in a "work for hire" situation. This is how record companies can screw over newbie bands unless they know what to look for. It is also RCA records screwed over Prince.
- GPL does not convert the copyright to the original GPL'd project owners, but specifies terms for the original copyrighted work's use. Essentially, that you would agree to expose your source code to those who asked for it. You still retain the copyright to the derived work--but not the original work that it was derived from.
It is for this reason that when faced with the prospect of incorporating GPL or LGPL code/libraries into your commercial application that you vet everything with a lawyer who specializes in this type of work. They exist, and my previous company used one to discover legal risks. The lawyers did point out the potential problem points, which we had to relay to our client.
The tricky point for dual licensing is that the entity who is licensing the work must be able to prove that they have the only copyright for the work. That is why when you become a committer on some of the larger umbrella organizations (GNU, Apache, etc.) you are required to sign an agreement that you turn over the copyright of that code to that organization. When that condition is met, the organization can dual license, change the license model, or whatever they need to do at will.
It's because there is enough Fear, Uncertainty, and Doubt (FUD) surrounding the GPL on both sides of the equation that recently there's been more of a push to use corporate friendly licensing models.
Can the project you derived your work from cry foul and claim that you are in violation of the terms of the license? Yes. Will they? Probably not. That doesn't mean you should flagrantly violate its terms however.