Licensing question

All this licensing stuff is too complicating for me so I wanted to ask you how it works…



Which license would be good / appropriate for an Open-Source game project. I know it depends on 'my particular case and wishes' but still… please try to advise or at least give your opinion. Also - what are the conditions withe the particular license in connection with say - jME.



My particular problem is that I am usin the StrategicHandler by lex in code, but I need to change the original code. However I do not know how to best do it so that it would be legal. Should I just add lex's source to my own project and modify it there? Or should I modify StrategicHandler as a separate project and just add the jar to my project? Would there even be a difference? I think his license is the same as jME's - whatever that is - at least the license texts looked similar.



What is your experience with such open source projects - what would be a good path? I am looking for a more general solution, going beyond this one library. It might seem like a mundane question perhaps, but I really would not want to violate the rights of the fine people here in this project.

The google code page for strategic handler seems to suggest it's under the BSD license (like jME). So you can do pretty much whatever you want with it, except for stripping of the author information.



So code under new BSD you can pretty much do whatever you want with. (including releasing any changes to it under the GPL or LGPL or practically any other license (yes, you could even sell it for money))

If you use GPL code in your project, the rest of the project has to be GPL too.

If you use LGPL code, you should do what you suggest, put the code for that in a seperate project, and release any modifications you make to that project. If your own project is GPL however, you don't have to do that, and you can use LGPL code as if it was GPL code.



Choosing which code your own project should use depends on what you want people to be able to do with your code of course. Remember, you don't have to stick to one license though.

For example you could put changes to jME under BSD (so they could be integrated back into jME more easily), you could put libraries you make for your game under LGPL (so that other games can use an effect you created even if they're not GPL, but they will give back the source if they make changes to it), and the game itself under GPL…



Like I said, that's just an example… whatever you choose though, make sure you put the right license and author information at the top of each source file.

That was very helpful… thank you llama.

Thinking more about this topic I'd still like to ask some more :slight_smile: I am currently set up as GPL, but that was just a more or less random choice.


If you use GPL code in your project, the rest of the project has to be GPL too.


This seems to indicate that I cannot use BSD code in my project? Or does it just mean that if I modify code that is GPL, then I have to release it under GPL and is not connected with the rest of the project?

For example you could put changes to jME under BSD (so they could be integrated back into jME more easily), you could put libraries you make for your game under LGPL (so that other games can use an effect you created even if they're not GPL, but they will give back the source if they make changes to it), and the game itself under GPL..


This seems to contradict the previous quote for me  :|. Would these codes that have different licenses have to be also in different... well.. jar-s? For example in my case - can I just put lex's BSD code inside my own project-basically same package and jar and release it all together under GPL? And what would happen to the original file headers from his code - would they still keep the BSD headers? Would I add additional GPL headers? Or can different files in my project include different licenses so that I have 2 files side by side, 1 in GPL and another in BSD?
Mindgamer said:

Thinking more about this topic I'd still like to ask some more :) I am currently set up as GPL, but that was just a more or less random choice.

If you use GPL code in your project, the rest of the project has to be GPL too.


This seems to indicate that I cannot use BSD code in my project? Or does it just mean that if I modify code that is GPL, then I have to release it under GPL and is not connected with the rest of the project?


What I mean there is: if for your project you take existing GPL code and create a derative of it.. That bascially means if you use it in your own code.. the exact things you can and can not do are rather disputed, having to do with how you distribute your project and such, but for all practical purposes, if you create something of your own based on GPL code, your work should be licensed under the GPL too.

jME's BSD license, like I said, let's you do practically anything with it.. that includes creating derative work of it under the GPL. To oversimplify it, (so not entirely correct, but for all practical purpose the same), it allows you to re-release all the code under GPL at any point.. (technically only a derative of it, but if you copy paste 10 lines of code from a BSD project into your GPL project, that already qualifies for a derative).

There is another thing you have to take into account.. using code in your own project is not the same as using a program, driver, or library in your project. For example on windows you can write GPL program that uses non-GPL libraries and drivers (basically any GPL project on windows does this, since windows itself is not GPL). The other way around too.. you can write a proprietary program running on a GPLed operating system (such as linux). For the circumstances of when what is allowed you'd have to at least read the entire GPL license.. but even then it's not entirly clear and many people disagree on what is and what is not allowed (java being a special case since the license was not writting with a VM like enviroment in mind at all).

To summerize, bsd license is very free with what it let's you do..  gpl wants all the code in your project to be available "for free" when you distribute your project, with the added condition that any modified redistribution  of your project will also have the code available "for free". Since the bsd license let's you do pretty much everything with it, if you have a piece of bsd based code in your project it fullfills the GPL requirments. 


For example you could put changes to jME under BSD (so they could be integrated back into jME more easily), you could put libraries you make for your game under LGPL (so that other games can use an effect you created even if they're not GPL, but they will give back the source if they make changes to it), and the game itself under GPL..


This seems to contradict the previous quote for me  :|. Would these codes that have different licenses have to be also in different... well.. jar-s? For example in my case - can I just put lex's BSD code inside my own project-basically same package and jar and release it all together under GPL?


Yes you can. As long as you stick to the requirments of the BSD license.. ( http://www.opensource.org/licenses/bsd-license.php ), which basically amounts to not removing any copyright information (so lex name will still be in it), leaving a small disclaimer about the code (those nice ALL CAPS statements about not blaming the author if is sets your computer on fire or starts a global financial crisis, etc) which the GPL also has.. and the same notice and copyright statement must be somewhere in the documentation of your binary distribution (for example in the "About screen" or a file in the doc folder).

Eg if I open the "about screen" of my browser I see:

Number-to-string and string-to-number conversions are covered by the following notice:

The author of this software is David M. Gay.

Copyright (c) 1991, 2000, 2001 by Lucent Technologies.

Permission to use, copy, modify, and distribute this software for any purpose without fee is hereby granted, provided that this entire notice is included in all copies of any software which is or includes a copy or modification of this software and in all copies of the supporting documentation for such software.

THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.


(slighty different template than the new BSD license, but basically the same thing).

The new BSD license (as opposed to eg the MIT license) also adds an additional requirment, that you don't use the name of the original author or orginization to promote your product without getting written permission first.

Eg according to the jMonkeyEngine license,  for putting on your website that you wrote a game which is good cause you used jMonkeyEngine you first have to write the "jMonkeyEngine" for permission :P


And what would happen to the original file headers from his code - would they still keep the BSD headers? Would I add additional GPL headers? Or can different files in my project include different licenses so that I have 2 files side by side, 1 in GPL and another in BSD?


You can put the file under the GPL , as long as fullfil the requirments under the BSD as described above (which you basically have to do anyway if you want to properly use the GPL). Of course if you want you can also just leave the BSD header there. You can also put both headers in there..

The most important part about licensing work correctly is that you properly attribute copyright (who wrote what and which license did they put it under). That first part is often ignored. For example in jME excactly who wrote what is very unclear.. maybe with CVS history you could somehow retrieve it, but that's a very weak system (eg if CVS history ever got corrupted). It's certainly not in the files as it should be.. (only the (c) jMonkeyEngine is on every file.. but I still don't know who or what that is). In the end that's also what most people behind that work care about.. they don't mind you using their code as long as you don't claim it to be your own. A lot of them will appriciate a thank you note somewhere in the project too.

That's what in the end counts most, a license is just a license.. it does not give you any ownership of the code. Only the owner (copyright holder) of the code can fault anyone for misuse of their code.. I doubt Aleksey Nikiforov will be knocking on your door with a court order any time soon if you are using his file in your open source project.

Thank you so much for such a detailed reply. And it looks like you have really dealt with this whole license issue before. I think this must be the most thorough explanation of licensing on the forum so far and I am certain it will also be beneficial in the future should anyone search for it… Thanks again.

I dunno if this has been mentioned before, but you might want to loo kat Creative Commons.



They provide a tool that lets you check boxes to tell it what rights you want to grant and it generates the license. A nice extra is that it also generates search tags that many search engines (such as google) know so people cna actually search for content with particular rights grants,



Im probably going to move to Creative Commons myself.




I probably should have mentioned that!



http://creativecommons.org/license/



You can get the same machine readable search tags for GPL, LGPL and BSD from their site too…

Just to clarify and summarize for the more thick-headed among us like me:



GPL



You must make the source available with any build distro. if anyone modifies or adds to the code their changes are also GPL. if anyone "uses" the code in their project, it also becomes GPL



LGPL



You must make the source available with any build distro. if anyone modifies or adds to the code their changes are also GPL or LGPL. if anyone "uses" the code in their project, they can use any license they wish (as long as it's not a derivative work, which is a lawyer question).



BSD



Anyone can use it for basically anything, provided that they include the original copyright/disclaimer in the specified places.  They can't use your name without permission (under new BSD).