Friday, March 12, 2010

Move to a Permissive License? (Part 2)

This is a followup to this post.

Following the previous post, I got some feedback in comments and on IRC. Here are some of the points raised, and comments on them:
  • It was pointed out to me that zlib is the most permissive license of those mentioned, allowing binary copies to be made without attribution, whereas BSD still requires that you keep the copyright notice in that case (so you don't need to distribute the source, but you do need to document that you are using code written by whomever wrote it). It seems MIT does the same thing, but the wording is slightly less clear - BSD explicitly mentions source and binary distributions, while MIT just talks about 'copies of the software' (which many people seem to interpret as intending both source and binaries, but I would have expected to see something like 'copies or transformations of the software', where 'transformations' means compilation to binary form, etc.). So, out of zlib/BSD/MIT, I lean towards ('new') BSD.

  • I should clarify my goals with the license change. There are basically two: First, I want the code to be useful for people, however it can be, which includes making money off of it in commercial games. My second goal is to improve the situation of open source in gaming - which is currently one of the last fields of software almost entirely dominated by proprietary code (compare the situation to operating systems, web browsers, web servers, databases, programming languages, etc. - open source is doing very well in all of those). I guess the two goals are not necessarily in perfect alignment, hence the need to think carefully about the license.

  • Also I should clarify my own personal goals&status: I am looking for a job right now, so I will likely have less time for this project than I have had, but I certainly intend to continue contributing. Anyhow since we are past a stable 1.0 release, and the engine is in very good shape, really what we need now is more people creating games with it rather than more engine features that I add.

    About my role in the project, I would be very happy if the development team were to expand, and have more sharing of responsibilities. I've been talking to related projects and various people about that, and hopefully there will be progress on that front soon. Permissive licensing might make that easier, since with GPL projects it matters who owns copyright, whether you have copyright assignment or not, and all that, whereas in permissively licensed projects it is far less of an issue.

  • I've been looking at open source code that is successful in gaming, for inspiration. Basically three projects come to mind, detailed below. I'm not sure what lesson to learn from them yet, but they are worth thinking about.

    • Quake Engine(s): Released as open source some time after the commercial releases, GPL with dual licensing. The GPL option has been used extensively in the open source community. However, the GPL uses did not become a significant force in gaming. Basically the GPL code releases play catchup, always being behind the closed code. Also, it is not certain that GPL code releases will continue after id Software was acquired by ZeniMax.

    • Ogre 3D: Used to be LGPL + optional commercial licenses, has moved to MIT. It is not clear yet if moving to the MIT license will change anything, as Ogre 3D was already doing very well before, including being used in commercial games. I am guessing that Ogre 3D has support for consoles, but that code isn't in the public repo (likely it can't be, because of the console SDK terms of use), which leads to a quasi-dual licensing model: Free for use (MIT) on regular computers, requires a license for consoles (or, implement all the console integration yourself, in theory).

    • Bullet: zlib licensed. The Bullet physics library is very popular, and has been used in many commercial applications, including ones that significantly modified Bullet, presumably without contributing changes back (but not sure). Unlike Ogre 3D, Bullet can be used on consoles freely, as there is really no need for special console integration code.

7 comments:

  1. All the BSD will require more is a text file with a copyright notice.

    Syntensity is an open source 3D game engine and the other ones are idtech1/2/3-based engines, cube1/2 and panda3d.

    Bullet and Ogre are libraries, rather than engines.

    >"However, the GPL uses did not become a significant force in gaming. Basically the GPL code releases play catchup, always being behind the closed code. Also, it is not certain that GPL code releases will continue after id Software was acquired by ZeniMax."
    What do you mean? "proprietary gaming"?
    The quake engines are the code basis for the engines used by Warsow, Nexuiz, Openarena, Tremulous, AlienArena, World of Padman and some other that I missed :)

    ReplyDelete
  2. When it comes to permissive, I would suggest zlib just for the fact that cube2/bf use it. - syn is still based on cube2, is it? (or was the engine re-written?)

    ReplyDelete
  3. @qubodup:

    By "The GPL option has been used extensively in the open source community. However, the GPL uses did not become a significant force in gaming," I meant that it was used by a lot of FOSS games - like the ones you mentioned - but overall it had no impact on gaming in general. Unlike say Bullet, which the average gamer is likely to have played a game which utilizes that code.

    Yeah, zlib would be nice because the Cube 2 code we use is zlib. On the other hand even Cube 2 itself has MIT code inside - ENet. And we are using Google V8 which is BSD, and some other stuff. So zlib would not lead to a single license for the entire codebase. And I do like the idea of binaries using our code needing to at least include a little text file mentioning the code.

    ReplyDelete
  4. Attribution should be required. If zlib doesn't require attribution for binary but does for source distribution, then that's going to give commercial organizations a get outta attribution free card and kinda seems to defeat the point of the license in the first place.

    Overall though, I think AGPL is perfectly permissive enough if you want to require contributions to the project. Just because there haven't been many yet doesn't mean there won't be and that's one of the advantages of the GPL.

    ReplyDelete
  5. I would prefer some license that requires proper credit to the original author.

    ReplyDelete
  6. roger, technically all the licences kripken's considering require that to some degree or another.

    ReplyDelete
  7. I do agree with others that source code, so I thi9nk it shoudl be zlib, LGPL, or even keep AGPL.

    ReplyDelete