-
Notifications
You must be signed in to change notification settings - Fork 199
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
license changing #167
Comments
Because the libmad MP3 library is GPL, the mpg123 MP3 library and SMPEG Another task is to switch to SDL2 (zlib) because SDL 1.2 is LGPL |
I agree on switching to MIT when mruby is finished. This gives us more time to resolve the problems mentioned by fdelapena. I missed that SDL1 is LGPL, good to know. My SDL2 branch is basicly finished, will open a pull request soon. And mp3 is a problem I don't have a solution for yet. Fluendo could be an option. Is that included with the linux distributions because of that non-free requirement? SMPEG is junk (and LGPL). |
The non-free issue is with patent licensing special binaries provided (this allows to use prepaid mp3 royalties in countries with patent issues), but as far as I know you can still provide your own build from sources patent-unlicensed library like any other patent-unlicesed mp3 decoders(libmad, mpg123, etc.). In fact, some distributions have fluendo MP3 decoder in their repositories. It's free but with patent issues like any other MP3 decoder. |
okay then this should be fine for our needs. But other libs are still welcome in case you find any ;) |
Readers has been renamed to liblcf and converted to MIT license. Current Player blockers: |
This issue is quite outdated, the current situation is:
Because we don't have limitations with keeping Player as GPL and not a good reason to switch to MIT nowadays, and because the 2k/3 "code lost" issue might be interested on a non-copyleft version for a takeover (liblcf is MIT licensed already for their needs), what do you think about keeping Player GPL and closing this one as |
You make valid points but there is one thing that bugs me: |
Yeah, I've totally forgot this point. Indeed an exception is really convenient for these cases. By the way, any good related real world GPL exception from existing projects to adopt? Update: http://www.gnu.org/licenses/gpl-faq.en.html#GPLIncompatibleLibs |
Yeah imo this is not a problem for distribution because we will not link against these non-free APIs in the normal case. This would be just for special needs, like game developers wanting to use these APIs. Is maybe a good idea to put the whole non-free API in seperate files to make distribution easier for the OSI conform tarballs as you suggested. And all non-GPL files should be manual opt-in via a configure argument. The suggested exception on the GNU page is a bit specific, we should try to generalize it. Or we just get the permission by all devs that adding additional libraries on demand is allowed and then we just extend the license everytime ^^
|
My main concern is about loosing statically linked ports. While using dynamic linking the (open) license does not matter at all, when we not change the used library. |
After a bit of research I think we have to scratch this approach for now. Valve also requires you to sign a NDA for the full steamworks API and you are not allowed to publish any code that is calling into there API. Ancurio wrote a story on Reddit about publishing To The Moon with Steam achivements... So to do the exception part it would get even more chaotic: Write a propreitary library that links against Steam, mention this library in the exception list, link against this library --> Keeps the Steam code secret m( About your text: Yeah, then it should be dual licensed... one GPL and one GPL with that exception. The exception would only apply for that corner case, all linux distributions and homebrews could use the normal GPL version because they don't need the non-free part. |
About game devs selling games including player: About steam api integration: |
This sounds like an option. Allows exactly what I wanted anyway with that library exception: Changes to Player count as derivative work: Must be published under GPL and the other direction doesn't matter and is allowed propreitary. But there is another issue: Propreitary (and NDA) for video game console SDKs. They need a way to handle Video/Audio/Input of the Player. Therefore I would like to see another exempt for classes that implement the BaseUi and the AudioInterface interface. These exceptions should be enough to make the Player usable in 99% of all cases I can think of :) |
Is the "you must ship a license file" part of the GPL? okay so the resulting license would be something like this:
|
Here is a cool list of license exceptions: https://spdx.org/licenses/exceptions-index.html Especially useful is the Qwt and U-Boot exception because it contains stuff I want :D So I would change my
Things that are not stated as exception but are obviously not a derived work in my opinion: System initialisation code required before invoking Player::Init. |
👍, however in case of particular API changes there (namespaces <-> classes) might need to update the license exception later. |
Just to get this finished directly after 0.5 release. In the meanwhile a few further devs joined, git blaming says: You five: Would you agree on adding a linking exception to our GPL license to allow interoperability with propreitary code (and NDA) like the Steamworks Library (Achievements & co.) to make the Player more useful for game developers? The developers that agreed to relicensing in general were: I assume carstene1ns already agreed. People that don't need asking: Rohkea contributed fonts and his work was under public domain. |
Sure. |
Me too i agree, no problem. |
I agree. |
1 similar comment
I agree. |
Just leaving this here regarding steam: https://hg.icculus.org/icculus/steamshim/file/tip/README.txt
|
To simplify this (and carstene1ns already suggested something like this) a "core" and a "player" (find a better name) library could be created. The requirement for "Core" is that the "Player" lib depends on it but the "Core" may not depend on "Player". Therefore core should contain (havn't verified if it still compiles with only these files, will update when I find more deps): Update loop logic, basic engine configuration:
The whole audio backend:
Input backend:
User interface:
Scene handling:
Basic Graphics API:
Fonts:
VFS layer:
Dependencies for this:
This way fancy stuff like Steam integration or DRM-/NDA-API stuff can be added to engine core and all the stuff that wasted hundreds of dev hours is still under GPL in the Player. Opinions? |
Regarding basic graphics API, I'm curious as to why sprite.cpp is "maybe Player, too specific" - fitting with the Plane, Rect and Tone classes makes a very RGSS-style API, from which sprite.cpp would be something of an omission. (And on a side note, anything that could lead to the main screen composite being sufficiently abstract to get replaced without reimplementing bitmap.cpp is probably a good thing.) |
Didn't check all files when I wrote the previous comment. Rechecked sprite.cpp. You are right, besides the "BushDepth" function all of Sprite is very universal so it should be included in "Core". |
Imo FileFinder can be removed from the dependency list because it is highly specific for RPG Maker 2000 features but we need a way to configure the main filesystem that is to be used... I added the WIP FileSystem API instead. Player.cpp is needed for handling an update loop and some basic ui configuration but this must be refactored out in PlayerCore.cpp Made a quick compile with core dependencies only. Many files have useless includes but here are the criticial issues: Problematic files that would need changes for a good core abstraction:
Proposed license text for EasyRPG Player to allow interop with core:
|
In regards to both the recent license proposal and the GPL license exception that @Ghabry wrote two years ago, I'm cool with it, |
Having stumbled upon this decade old issue after recently starting to contribute myself to this project, I'd like to clarify following: |
Please do not use the MIT license, as this will benefit proprietary software developers, but they will not be of much help to us. From here, we can gain a better understanding of proprietary software: |
The change of license that is being discussed is, for instance, to allow games using the engine to be sold on platforms where changes need to be made to the engine while having those changes not be public (e.g. game consoles), and in this case a license like MIT where the possibility to make changes private is required, which is one of the points of the discussion related to the licensing change. Do you have something else than MIT that meets those criterias that you would like to suggest? |
|
I myself don't have any issue with publishing any changes I'm making to the source code of EasyRPG and was planning to do so anyway. Even in case my own game project would be released commercially some day, I'd of course make all new additions available publicly, GPL or otherwise. I want others to profit from the planned new features/tools and make their own awesome games with them... |
I think the problem with staying with GPL in light of possible license negotiation case-by-case is given by the fact every cotnributor should be part of said agreement decision and, given how lengthy and complex even just switching from GPL to MIT is being, I think it would be unrealistically handleable. |
The decline from GPL to MIT. You have forgotten why GPLv3 was originally used, it seems like you couldn't resist the temptation. |
That is unlikely. EasyRPG doesn't have anything like contributor license agreement (and it's a good thing), so you would need to negotiate with every developer separately. It's basically not viable.
You can “forget” something only if you know it. Do you know why it was originally used? I'm not even sure who started the project (I think it was fdelapena? but I'm not sure), and I certainly don't know that person‘s original motivations. Do you? |
I am just strongly advising against the change. I apologize if it makes you feel uncomfortable. After EasyRPG Player changes its license, I should be able to relicense the latest changes/updates under the GPL license in my fork. |
Sure, you can freely decide to stay on a different license. As your code changes are, when we add the callbacks, isolated in other files it will be easy to declare "The multiplayer folder/feature is GPL only". |
That's not possible. By the moment you include GPL code in your executable, the whole executable becomes GPL (since GPL is more restrictive). Either the submitted code must be relincensed to MIT or, if even technically possible, it could be dynamically loaded and published under LGPL rather than GPL. Some reference: https://softwareengineering.stackexchange.com/questions/204410/how-are-gpl-compatible-licenses-like-mit-usable-in-gpl-programs-without-being-su |
I believe the plan was to have a flag like So, some files will exist in 2 variants, perhaps separated into different folders:
Then the user will choose what variant they want:
|
I might not have been clear. What I meant was from MIT to GPL. https://softwarefreedom.org/resources/2007/gpl-non-gpl-collaboration.html (2.2 Adding GPL’d modifications to permissive-licensed files)
Perhaps LGPL can solve this issue. |
Hey. I'm pinging here all new contributors who haven't stated whether they agree to any license changing to a non-copyleft-license (such as MIT). Please state in a comment whether you agree to relicense from GPLv3 to MIT license (or similar). @Desdaemon For difference of GPL vs. MIT see the loooong discussion here. The main difference is that code under MIT can have proprietary changes (so you are not required to publish them contrary to GPL). So the main difference is when distributing the Player e.g. as part of a game and you have made custom changes to the game e.g. a new battle system. Actively hurting is GPL when publishing of games on platforms that are incompatible with GPL (such as console platforms) or linking against SteamWorks e.g. for Achievement support. So you cannot currently do this with our license. There is actually a game planned to be ported to Nintendo Switch and they want to use EasyRPG Player. So would be good to have that roadblock out of the way ;). What happens if I do not agree?: When it is an essential component the code will be removed. When it is something that is optional the code will be hidden behind a compiler flag (so they can opt-in whether the Player is subject under MIT or GPL). btw from now on I will delete any heated discussion about why MIT will hurt the project. |
@Ghabry Agreed |
Sure, why not. |
Agreed! |
I agree to relicensing any of my contributions from GPLv3 to a permissive license (MIT or similar). |
Yes, I agree. |
@Ghabry I agree to the terms. |
@Ghabry I'm all in for the switch to MIT license! |
No problem, I agree. Let's goooo !! 🚀 |
I agree to relicense. |
Not a problem for me, I agree to the relicense. |
Okay for me |
Ok for me |
I agree that any and all of my EasyRPG contributions and work I have written for any fork of an EasyRPG project may be used under the MIT license. |
Okay thanks everyone for agreeing. All the work required for it will be postboned for after 0.8.1 Don't want to delay the release even further 😉 |
Since all the code copyright holder agreed to move to non-GPL new license we need to prepare for it.
The issues for it will be
-> strong candidate would be MIT license.
-> I'm thinking of moving to new license when the mruby branch is merged.
-> maybe we need to remove those libraries or stop distributing it.
-> we'll use some text replace program like sed
If you cannot find your name in the list above:
When you think that you made a significant contribution and cannot find your name in the list above: We are sorry. Please contact us.
The text was updated successfully, but these errors were encountered: