The last days I’m spending most of my time considering open source licenses and what would be the appropriate license for Sylphis3D. I must say that it is a very brain-melting procedure. I can see now why I could never became a lawyer!
I initially started considering two licenses, the GPL and the BSD. These are both approved open source licenses by the FSF. GPL is the defacto open source license today and has proven its value. Most of open source software today is released under the GPL, including Linux. The license was proven to be able to protect and empower the freedom of the software, by forcing code to be contributed back to the original GPLed software. The BSD on the other side is a more liberal license. Requires for the adopters of the code to make no more than to mention the code that was used. They are not required to release their code back. This is looked upon by some open source people because it allows closed source projects to benefit from open source, without ever contributing back. The classic example here is the Windows operating system that used the networking stack of the freeBSD operating system; no code was ever contributed back by Microsoft.
The problem with GPL is that it is not an easy solution when it comes to 3D game engines. A GPLed engine is always a pain to use in a commercial game and commercial games are the only valuable games today and that is because games are more than source code. Games are multi-million projects with tons of artwork today. Also games require security by obscurity to prevent cheaters from destroying the game experience. Any game with source code provided can be modified to assist the player in any way the cheater wishes. This is not an option.
This is why GPLed engines are not used in commercial games. So if you are about to license an engine as open source and you want to see the engine being used you cant go with the GPL. A license like the BSD or the MIT is a license that will allow your project to be widely adopted. However you not be able to force people to contribute code back to your project. Even if the practice showed that the people that are going to contribute back code will do it no matter if you are GPL or BSD, I would like to have a way to force back contributions.
As a reader of this blog suggested the solution to the problem seems to be what SUN used for opensourcing Java. The GPL with the “Classpath exception”. This is the GPL augmented with the following terms :
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
This license seems to bring the virtues of both GPL and BSD together. It forces contributions back to the original project while not being viral to all the code of the contributor. This is the license of choice for Sylphis3D at the moment. I’m almost decided and even if I still investigate licenses I don’t think I will find something better…