Thursday, March 11, 2010

Move to a Permissive License?

I am considering relicensing all the code I wrote in this project to something more permissive, like zlib, BSD, Apache, etc. - basically, to let people use the code entirely freely. Please let me know whether you think that is a good idea or not, and if it is, which license we should switch to. This is a big decision - involving some 65,000 lines of code (about the same as Cube 2, btw) - so it should be done carefully.

As background, I chose the AGPL when I started, because I wanted to keep open the possibility of dual-licensing (to generate income for the project), and to make fragmentation of the community less likely. The situation with both of these has changed: I don't intend to make money myself from this project anymore (I still think it can be done - but it would take time, and before that time arrives, I will have run out of money myself...), and so far there seems little worry of fragmentation and incompatible forks.

So, I am considering moving to a license like zlib/BSD/etc., which are simpler and make life easier for people using the code - clear benefits, and could lead to more people using the code. Of course the flip side is that the code could then be used and modified in closed source projects without returning anything to the community. These are the usual tradeoffs between the BSD and GPL approaches.

Some thoughts on possible licenses:
  • zlib: Same license as Cube 2, so kind of simple in that respect - a single license for almost the entire project (almost, because things like V8, ENet, Django, etc., have other licenses).
  • BSD: Probably the most common permissive license out there, and the most familiar to people. Also worth mentioning, zlib is not an option on Google Code, while BSD is.
  • Apache: Permissive, while adding some patent protections, which is useful. However, it does make the license text quite long and complex compared to zlib/BSD/MIT, which is a downside. Another downside is Apache is not compatible with GPL2, but is with GPL3. There are many codebases out there that are GPL2-only (including ones relevant to this project) so that is an issue.
  • LGPL, MPL, etc.: More permissive than GPL&AGPL, but still some requirement of giving back, at least for changes to existing code. If the license is to be changed, I kind of tend not to go this route, because the current license is already quite close to it, since we don't consider games to be derivative works anyhow, which makes our AGPL sort of like the LGPL in that respect (a good comparison is how the Linux kernel is GPL, but you can run apps in userspace that are not GPLed). So really the actual change in going to one of these licenses is the removal of the 'A' from AGPL, that is, removing the condition of providing the source even if running over a network.
So, again, I am looking for feedback on this topic. We can also hold a vote if there are strong opinions and that makes sense. One thing though: Please let's not make this into a GPL vs. BSD flamewar with all the usual arguments we have all heard before - I ask that the discussion be about this project, which license makes sense for it (and not which license in general is 'better').

EDIT: Followups in this post.


  1. "Everybody else (OGRE, Irrlicht, Horde3D, Cube2...) does it, so we have to do it too!". :)

    I finally found the article I wanted to hold against all claims of "Permissive will make us more popular!". GPL, BSD, and NetBSD - why the GPL rocketed Linux to success.

    On the other hand, it might be very hard to do a proprietary game using a copyleft-licensed engine. On the other other hand, it seems to happen with the quake engine. If you want to allow people make non-free game (engines) based on syntensity, you should switch. If you want to use the value you create to make people contribute to the open source, even though they have second thoughts and would prefer to close the source or write their own 'license', don't. PySoy for example is an engine, whose developers intensionally want to be only available to foss developers.

  2. Use BSD if you want to make it less complicated, and/or you don't care about the risk that people might not contribute back. Otherwise, don't. I wouldn't switch to BSD simply to gain popularity.

    qubodup: I think he glosses over the lawsuit against BSD around that time, and a single case isn't enough to draw conclusions. IIRC BSD TCP (hurrah for acronyms!) code found it's way into most widely-used operating systems. Not to mention OS/X, which certainly isn't open, but has BSD code and is more popular than Linux on the desktop.

  3. "f you want to allow people make non-free game (engines) based on syntensity, you should switch."

    I don't think this is true. If you are going to make a closed-source game, then chances are you plan to sell it. If that's the case, you shouldn't have any problem forking over a little money for a great engine like Syntensity (especially since you don't have to buy a commercial license until you are ready to sell).

    If you want more interest from commercial (indie) games, I think the thing to do is advertise specific costs under the licensing section, instead of the "contact us" wording. Usually "contact us" means "If you have to ask, you can't afford it." However, if you advertise it as: "A commercial license is only $199" (for example), then I don't think you'll have any problems with attracting indie developers.

    However, this doesn't answer Kripken's question. I think the key phrase is:

    "I don't intend to make money myself from this project anymore"

    Although your intention may not be to make money, are you still planning on hosting the syntensity website? Paying the hosting costs for the master server and instances? Acting as the benevolent dictator? (at least for

    If so, then I think you should leave it AGPL and leave the commercial licensing option. I think this project has a lot of room for growth, and even if the commercial licenses don't pay for a full time salary, they can offset costs.

    It may be that this project just needs a couple of years to grow, and it can (at some point in the future) turn into the commercial success that you originally envisioned.

  4. I would support a move to the Simplified BSD License. Quite honestly I think that the more you open up and let people do what they want without worrying, the more you'll get back in return.

    I would however caution you not to give up on the project just yet. I know you've been working on the project for quite some time but you honestly haven't given it a chance to grow legs and start moving on it's own yet.

  5. ceninan: I think >>The GPL has created a "safe" zone of cooperation among companies, without anyone having to sign complicated legal documents. A company can't feel safe contributing code to the BSDs, because its competitors might simply copy the code without reciprocating.<< is the essence of that article for me.

    I would prefer the zlib license, since cube2 and bloodfrontier use it too.

    The AGPL would prevent incompatibly-licensed forks a la Sandbox.

    Warsow, AlienArena and World of Padman might be closed source if the Quake engines were licensed permissively. On the other hand I might be wrong, as BloodFrontier and AssaultCube did keep the zlib license of the engines they're based on (Cube/Cube2).