KelvinShadewing / brux-gdk

Free runtime and development kit using SDL and Squirrel
GNU Affero General Public License v3.0
38 stars 20 forks source link

GPL Concerns #11

Closed joseph-montanez closed 6 years ago

joseph-montanez commented 6 years ago

I hate to push on this topic yet again but I don't think this is a long term solution. GPL just does not work well for video games. The Blender Game engine is GPL and uses python scripts, so please read this:

https://www.blender.org/support/faq/

What about Add-ons or my Python scripts? If you share or publish Python scripts – if they use the Blender API calls – have to be made available compliant to the GNU GPL as well.

This is incredibly important because Squirrel scripts will be calling XYG Studio API calls. Those scripts must be under the GPL. The only part of the video game that someone can claim to not be GPL are the assets, images, videos, and music.

The other issue to this part is integrating runtimes like Spine 2D, a 2d bone animation application which has a runtime to play Spine based animation in real-time for your game.

http://esotericsoftware.com/support#Spine-FAQ

Can I use the Spine Runtimes in my open source project? While we do contribute to a number of OSS projects (libgdx, Kryo, KryoNet, and many more), Spine is a commercial product. The Spine Runtimes and any derivative works or improvements must be released under Spine Runtimes license. They cannot be released under the GPL, LGPL, BSD, MIT, or any other license.

All this stuff is incredibly complicated and my biggest fear is that Game Developers will not want to use this game engine because of the entanglement of GPL. If you really really want GPL then I urge you to consider commercial licensing as an option. It can be $5.00, 1% revenue share, something cheap, and this way you can control how the engine is used so that it's not stolen or taken away from the community. It is perfectly acceptable to use dual licensing and a business will choose GPL for the sole purpose of selling a commercial license. This will put money back into your pockets which could be used to spend more time on this project.

KelvinShadewing commented 6 years ago

Wait, I don't understand. People's Squirrel scripts aren't part of the program; they're just a file being passed to the runtime. It's not a derivative work of the runtime or anything like that. Wouldn't that be like an emulator under GPL only allowing people to run applications that are also GPL? I don't understand how the license would leak into things that aren't part of the program itself like that.

As for Spine, if they don't allow their stuff to be used in open source projects, that's their choice. I don't think there's anything I can do about that, so if you want bone animation, I think it would be better to look for something that isn't commercial.

joseph-montanez commented 6 years ago

People's Squirrel scripts aren't part of the program; they're just a file being passed to the runtime.

https://www.gnu.org/licenses/gpl-faq.en.html#IfInterpreterIsGPL

If a programming language interpreter is released under the GPL, does that mean programs written to be interpreted by it must be under GPL-compatible licenses?

However, when the interpreter is extended to provide “bindings” to other facilities (often, but not necessarily, libraries), the interpreted program is effectively linked to the facilities it uses through these bindings. So if these facilities are released under the GPL, the interpreted program that uses them must be released in a GPL-compatible way.

Squirrel is not GPL, but XYG Studio is, and XYG Studio provides bindings through the interpreter such as "update()" to call xyUpdate which is GPL 3. In that regard that statement becomes true.

An example of this being true is also using PySoy a (A)GPL game engine. The engine is not written in Python, its written in C (libsoy). It provides bindings to Python (pysoy), which is also written in C.

Yet any game written in Python using PySoy must follow the same license. AGPL 3 or GPL 3. The difference between AGPL and GPL really has to do with networked games. PySoy was GPL 3, but switched to due concerns of the network programming bypassing the GPL3 license.

KelvinShadewing commented 6 years ago

So even if it could possibly be interpreted by other programs, the script has to have a compatible license or running it in XYG would technically be illegal? That makes no sense. Why would they make it that way?

sigh The reason I chose GPL is because I didn't want someone to take XYG and make some sort of closed-source commercial version of it, which MIT and ZLib seem to allow. If it actually does take off, I want it to stay free to use, but if GPL is affecting what people are allowed to make for it, then I may have to make my own license for it.

joseph-montanez commented 6 years ago

That my understanding. So what I suggest is LGPL 3 instead. This way if they make changes to the game engine those changes must also be shared to anyone that receives a copy of the game engine but not the game code. Then if you were making a visual game editor like Game Maker 2, then that application can be under GPL while using the game engine as LGPL.

KelvinShadewing commented 6 years ago

But wouldn't LGPL also allow people to make closed-source versions of the runtime?

joseph-montanez commented 6 years ago

No, If I need to make changes to the runtime then I still must provide the code to those changes. Now if I wanted to use the engine and make a DLL to use inside a visual editor, then that visual editor code could be closed sourced because XYG LGPL, while if it was GPL, that visual editor would also need to be GPL.

KelvinShadewing commented 6 years ago

So they could still pack the whole engine into a closed source project? That's basically what I'm trying to avoid, but I want to allow the actual Squirrel files to be unaffected. They can distribute the runtime with it if they want, but I want it to be clear that the runtime and the Squirrel files are separate things entirely that just communicate. If someone wants to make a visual editor that exports a Squirrel script to be run in XYG, that's fine, but the runtime itself and only the runtime should be made to remain open.

joseph-montanez commented 6 years ago

So they could still pack the whole engine into a closed source project?

There is no way someone can take XYG, modify it, and keep it closed source under LGPL. To be clear both LGPL and GPL will require the person modifying the source code to provide to those that have received copies of the runtime.

The way to see LGPL vs GPL is if someone built tools using XYG. Say for example I built a sprite boundary tool, where I do not modify XYG runtime, but include it.

Bottom line LGPL protects the runtime, and allows games and tools using the runtime to remain under licenses of their choosing. Its a much less intrusive license when it comes to commercialization.

Another example of GPL being an issue is the MacOS App Store, it does not allow GPL software. http://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement

That's the problem in a nutshell: Apple's Terms of Service impose restrictive limits on use and distribution for any software distributed through the App Store, and the GPL doesn't allow that. This specific case involves other issues, but this is the one that's most unique and deserves explanation.

KelvinShadewing commented 6 years ago

I checked with GPL, and an interpreted language like Squirrel would count as input, and so it doesn't affect the license.

The way to see LGPL vs GPL is if someone built tools using XYG. Say for example I built a sprite boundary tool, where I do not modify XYG runtime, but include it.

What would you need XYG for? For rendering the sprite? And by include it, do you mean just having the binary distributed with it and have a Squirrel script do the sprite boundary stuff, or have another program including a DLL version of XYG? Because XYG was never intended to be turned into a DLL in the first place.

As for MacOS App Store, are they required to get an application on Mac? Can't people just download it off the site?

I just keep getting the impression you're trying to use XYG for things it wasn't meant for. It's just for making 2D games written in Squirrel.

joseph-montanez commented 6 years ago

Alright, I thank you for your time, and patients. Its probably best to split ways on this subject and project. I am not thinking about myself in anyway for this project which is why I jumped on board. I in every way agree with you on being free and open source as such project like Construct 3 is moving to a subscription model and Game Maker has gotten to be too expensive. My time is probably best spent on something like Godot since its under MIT or Love2D which is under Zlib/Libpng license.

I hope you the best on your endeavors and ultimate success of this project.