Opensource License

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…

open source, game engine, license, GPL, BSD, MIT

  • noteventime

    What about LGPL? I thought it was meant for these kinds of situations. Or does it only allow dynamic linking?

  • Hmm, interesting set of problems to sort through. Thinking it through, I’m not sure that I particularly see an issue with the GPL –of course, I could be entirely off today, and missing lots, but I’ll explain how I’m seeing it.

    Your two main objections to the GPL seem to be that cheaters will be able to hack the system and beat the game unfairly, and that the game developers will not be able to protect their intellectual property.

    To me, the first issue of cheaters isn’t one to be worried about at all; if someone’s going to cheat, they’re going to cheat. In some ways, it’s kind of like areading a book: you could read the last chapter first to find out what’s going to happen, then read the whole thing from the beginning knowing all the while how it’s going to end. No one who really enjoys the process of reading is going to do that though. Same for games, no one who enjoys playing the game is going to cheat their way through it.

    Now, as far as the game developers protecting their intellectual property, that could potentially be a tad messy. How Sylphis deals internally with the game assets is actually what would determine the license’s hold over the created games. Blender3D’s engine, for example, imports all the files –textures, sounds, game logic code, etc.- into the program itself, and embeds them into the final executable of the game. I’ve heard numerous interpretations here, but the most common is that because the executable was generated directly from Blender, a GPL program, and contains compiled bits of Blender, your game is technically a derivative product of Blender, and thus must be GPL as well –art assets and all.

    I’ve not delved greatly into this part of Sylphis yet, but how Sylphis packages a game for distribution seems quite different that Blender’s method. If I understand it correctly, Sylphis never actually compiles anything for distribution (except maybe the game level… I’ll get to that one in a second.) Instead, Sylphis loads all of the game’s assets from numerous .zip (ish) archives or folders in the filesystem, then deals with them internally at runtime. Because the specific game files are never “derived from” Sylphis, they aren’t subjectc to Sylphis’ license, regardless of whether it’s GPL, BSD, or anything else.

    As another way to look at it, let’s say that while Sylphis was still under a commercial license, I had developed a game that I wanted to release under the GPL. I certainly couldn’t give away the SDK for Sylphis, but I could easily release all of the artwork and game code I had created under whatever license I wanted. Also, it’s like releasing a Photoshop image under a CreativeCommons license; can’t give away Photoshop, but the art I can do with whatever I want.

    The only sticky area I can see with Sylphis and the GPL would be, as I mentioned earlier, the map compiler. Easy solution for that one: release the map compiler under the BSD or ZLib license. If the map compiler happens to use any code from the more general Sylphis library, either break it away and give the compiler it’s own version; or release Sylphis under the LGPL, and dynamically link to the needed code from the map compiler.

    You seem to want the chosen license to require any sourcecode modifications to be given back to Sylphis, and that’s great. GPL/LGPL would do that. I do agree –entirely- that the game assets should not have to follow the engine’s license, but as long as I’m understanding how Sylphis deals with those files, that wouldn’t be an issue.

    The Sun/Java license seems a good one, if a bit new and slightly less known. The only disadvantage I can see to using it would be that it, being a little of an odd license, might scare away potential code contributers. I wouldn’t want to devote time to something if I didn’t exactly understand what was going to happen legally with what I contributed. Then there’s always the purists who will only want to help on a “standard” open source project… But I’ve more or less made my point, I think.

    Ultimately, whatever license it ends up being, great! Open sourcing Sylphis will only guarantee a wider interest in the engine. You’ve spent the last great number of years of your life on this project, so I can certainly understand not wanting to pick exactly the right license for your creation. 🙂

    In any case, thanks great deals of very much for opening the engine!

    Best Regards, Derek Mounce

    P.S. No, I’m not a laywer either. So… Yeah. 😛

  • jacmoe

    I think the GPL is too restrictive. A perfect license for an OS or applications (tools, etc.) The LGPL is suited for libraries, and is used by the OGRE project, with an alternative license for static linking. It depends. Maybe the tools could be GPLed and the library itself LGPLed? With the availability of an alternative license?

    The SUN license seems to be perfect for a programming language, not sure if it would fit a programming library..

    Just my two cents.

    Kudos for open-sourcing Sylphis3D! 😀

  • Derek : About the cheating matter, I mistakenly did mention that I was referring mostly to online games. With GPL the artwork is safe, since it would be no derivative work of Sylphis3D. The problem with GPL comes from the fact that if you are a game studio and you use an AI library and link it to Sylphis3D you will have to release that under GPL (the viral aspect of the GPL). With LGPL you can work it out by using dynamically linked libraries. This is wrong, not only because dynamic libraries are not an option on all platforms, but mainly because I consider it weird to have your system design dictated by the license!

    The license SUN used for Java is GPL with two additional clauses. It also allows you to reject these two clauses and redistribute under straight GPL. And is approved by FSF, so people will have no problem with it, you can always consider it a simple GPL, with the additional freedom of linking to the source and continue to have your core under your license…

  • Yarr, I gets it now, I do. 🙂 I hadn’t even thought about 3rd party middleware being integrated. Whatever the final license, it’s just rather exciting that the engine is going open source!

  • Will Tremblay

    Personally I can’t wait to get sylphis in my hands as soon as possible! Sure I have a few questions (Based on networking and stuff), and wish there was a wiki open (Is one going to be opened) and the forums had less spam (Only recently it seems some spammers are bombing it) but overall this is exciting. Anyone know if sylphis supports softshadows?

  • It is crazy that the license should dictate the architecture of the software. But what about LGPL with an exception that allows static linking? I think most developers would feel safer with that solution than the Sun license, since the LGPL is well known and the exception would be simple to understand.

    But perhaps the exception won’t be so simple to understand any more after being converted to lawyerish. 🙂

  • Actually the LGPL is the most confusing license ever. The fact that it tries to define which parts are of the library and which are not makes things blury. It actually tries to define the whole thing for C and C++ with headers and implementation files. This is not the case in all languages. Even then it isn’t clean when your work that uses a header is a derivative work.. sometime the header can contain actual code and then you are in trouble.

    The general sensation of the LGPL gives me is “bad don’t use it”…

  • jacmoe

    After some investigation, I’ve found the Mozilla Public License.

    [quote]As one of the newest open-source licenses the MozPL was influenced by and to some extent incorporates features from a number of older licenses, including the GPL and LGPL; however the MozPL is a distinctive license in its own right and has a number of interesting and even innovative features not found in other open-source licenses.[/quote]

    [quote]For MozPL-ed source code considered as a set of source files, modifications of the original source files are considered to also fall under the MozPL, as are new source files incorporating extracts from the original source files. Such modified or new files are required to be licensed under the same terms as the original files, and in particular must be made freely and publicly available in source form. In this way the MozPL is similar to the GPL in mandating sharing of code modifications and seeking to prevent open-source code from being converted to proprietary code.[/quote]

    I think this license is better than the GPL or the LGPL, and is widely used (more than the SUN license), and gives the users more freedom, and brings about less confusion: [i]the separation between the open-source code and the proprietary code is made at the source file boundaries[/i], and people have to contribute back changes made to those files.

    I quoted from this page: [url]http://www.eionet.europa.eu/software/licenseexplained.html[/url]

    I am not a lawyer, and will never be one … 😉