DISCLAIMER I don't pretend to know anything about licensing. In fact, everything I say below may be completely false!
Backstory:
Recently, I've been looking for a decent game engine, and I think I've found one that I really like, Cafu Engine [1].
However, they have a dual licensing plan, where everything you make with the engine is forced under GPL, unless you pay for a commercial license. I'm not saying that it's a bad engine, they even say that they are very relaxed about the licensing fees. However, the fact that it even involves the GPL scares me.
So my question is basically, how does one escape the GPL.
Here's an example: The id Tech engine, also known as the Quake engine, or the Doom engine, was the base for the popular Source engine. However, the id Tech engine has been released under the GPL, and the Source engine is proprietary. Did Valve get a different license? Or did they do something to escape the GPL? Is there a way to escape the GPL? Or, if you use GPL'd source code as a base for another project, are you forced to use the GPL, and make your source code available to the world. Could some random person take the id Tech engine, modify it past the point of recognition, then use it as a proprietary engine for commercial products? Or are they required to make it open source.
One last thing, I generally have no problem what-so-ever with open source. However I feel that open source has it's place, but that is not in the business world.
You escape the GPL by paying the developers for a commercial license.
ACCEPTED]
If you hold copyright on source code, you can release that code however you like. Releasing it under GPL does not preclude a release under another non or even more restrictive license. I am not sure of the particulars of Source/id Tech but would suppose that Valve negotiated their own license.
If you use GPL code in your project, you are required to provide the source code to the users. This does Not mean you are required to run a website or keep a copy of it to provide on demand. This does Not mean that you are required to make all changes public as soon as you make them - it is only when you redistribute the software, that the code and the changes you make go with it. (http://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic)
If you use even a line of GPL code in your project, you are now bound by the terms of the GPL. One (though not the only way) is to release your code under GPL as well (or don't release it at all).
If you modify it past the point of recognition and do not abide by the terms, you will probably get away with it (i.e. you won't be sued) but just because you'd get away with it doesn't mean you aren't in violation of the license, or make it right.
To use 'GPL'd code' without GPL you have to get it under another license, so that its no longer 'GPL'd code' (by paying Cafu). There is no way out of the GPL - it was designed specifically to be a viral license by its inventors and its purpose would be negated if it were possible.
That said, if you want to use GPL code in your program, you could create a standalone entity that your application utilizes (whether dynamic linking satisfies this is debatable - but generally it's accepted that when the result is a single program, the GPL is invoked [1]). So for example, you could create a new project with GPL code and yours, that you release with your (proprietary) application, along with the GPL and source code. Your application communicates with it however via CLI or RPC and therefore can remain free of the GPL.
Nowadays many developers adopt LGPL, which allows linking in most of its forms [2] without GPL transferring to the destination project. (If you modify the library itself however, you must still provide the code of the library.)
Note that further to Point 2, it is considered polite to publish any improvements you make to open source code, regardless of the license.
[1] https://stackoverflow.com/questions/1394623/can-i-dynamically-call-a-lgpl-gpl-software-in-my-closed-source-applicationYou're basically asking "How do I steal someone else's code?" If you want to use someone's copyrighted code, you have to get a license from them. If the only license you have from them to use their code is the GPL then you must abide by it or you are violating their copyright. If you can get them to give you a different license for their code then that is fine, but you don't escape the GPL.
Do you actually need to escape the GPL? All the GPL requires you to do is release your own source code under the GPL. It does not apply to game levels, art assets etc. You can still sell your game and make the code available via the GPL to people who buy it if they want it, or make it available online to everyone.
The only issue is if you want to use third-party non-GPL libraries, as then you won't be able to distribute them along with your GPL engine.
If you do need to escape the GPL, look at their licensing page [1] they sound flexible enough that you should be able to come to an agreement.
[1] http://www.cafu.de/wiki/cppdev%3aduallicensingThere are a lot of misunderstandings about what the GPL actually is and actually means, and I'm detecting one in your question:
everything you make with the engine is forced under GPL
That's actually not the case at all. The engine source remains under the GPL for sure, but it pays to have a read of the GPL FAQ, particularly the parts of it that relate to the output of a GPL program, which I believe are relevant here: http://www.gnu.org/licenses/gpl-faq.html#GPLOutput
Is there some way that I can GPL the output people get from use of my program? For example, if my program is used to develop hardware designs, can I require that these designs must be free?
In general this is legally impossible; copyright law does not give you any say in the use of the output people make from their data using your program. If the user uses your program to enter or convert his own data, the copyright on the output belongs to him, not you. More generally, when a program translates its input into some other form, the copyright status of the output inherits that of the input it was generated from.
So the only way you have a say in the use of the output is if substantial parts of the output are copied (more or less) from text in your program. For instance, part of the output of Bison (see above) would be covered by the GNU GPL, if we had not made an exception in this specific case.
You could artificially make a program copy certain text into its output even if there is no technical reason to do so. But if that copied text serves no practical purpose, the user could simply delete that text from the output and use only the rest. Then he would not have to obey the conditions on redistribution of the copied text.
This changes your situation quite a bit. You're not actually in a position where any content you develop for or with this engine also falls under the GPL; that content is yours, you own the copyright for it, and you can license it as you wish.
IANAL, etc
Only the person, the group of people, or the activity that owns the code can change its own license.
If that code is yours you can change license every time you want, decide to be payed or not, you can do what you want, but if the code it's not yours you stick with the license if you want to avoid troubles; big troubles.
The owner can also refuse to accept to be payed, it's a situation like the one that you have with the patents, if you can prove that you own the code doesn't mean that you are putting it on the market for money, many many times the patent or the license is supposed to force the market or the user to stay in a confined space.
The answer is no and the only way to change the license is hoping that the owner will do that.
The idea is simple - if company wrote the code, it thus owns all the rights, and thus it can give it to some parties under GPL license, to others under commercial license, and to someone else they can give it as a gift, or rent, or whatever they want.
The fact that they provided the code to some party under GPL, places GPL restrictions on that party, but it can place no restrictions on code owner.
Only, if code owner used in their software some 3-rd party GPL code, written and owned by someone else, then their whole project is locked into GPL forever (or until they remove this 3-rd party GPL code or obtain a non-GPL license for it). Please note that that the same is equally true for no-GPL, 100% commercial engine - if they happen to include some GPL code, they violate GPL, have no right to sell commercial licenses and you have no right to buy such license.
Thus, if all the code in the "Cafu Engine" is written by Cafu staff, you have no problem with the GPL. If you get a commercial license from Cafu, then the GPL license does not apply to you at all.
There's one way to "escape" GPL or (practically) any other license. Make a clean-room implementation.
Hire two groups of people. The task of the first group is to study the original material in minute detail and describe it. The second group, who never, ever get to see the original material, will write a new implementation based on the description.
This is how BIOS on original PC clones was created; the BIOS was the only bit IBM didn't let other people copy.
This doesn't mean that you're safe from lawsuits.. patents and "look and feel" crap is still out there, and at least in the US, anyone can sue anyone for no particular reason (or at least it seems so..)
Regarding the question about the Quake engine: code can be released under GPL and also under other licenses. Valve licensed Quake by paying money to iD. Later, everyone in the world was granted a GPL License (sic) to use the Quake source code. When iD GPLed the engine, they didn't retroactively convert other licenses to GPL; that would be impossible. In fact, iD can still license the Quake engine under a different license if they wish, as they own the original copyright.
You don't if you're being ethical. You're harming the development team. At the very least, you probably cannot get around the GPL, and if you close source your code you'd owe the developers any profits earned from their code.