Delta icon indicating copy to clipboard operation
Delta copied to clipboard

The current licensing is incompatible with AGPLv3

Open ermonas opened this issue 3 months ago • 10 comments

The current licensing for this project is incompatible with AGPLv3.

AGPLv3 explicitly allows all uses, commercial or not, derivative or not, of any work licensed under it, as long as it’s released under the same license afterwards.

Limitations cannot be imposed on its distribution, and are not compatible with the original license.

Since this project is based on projects that use the AGPLv3 license, it also has to use it.

The restriction that stops submissions to the App Store is, in consequence, not applicable, and could be considered a license breach.

Specifically, this part would be in violation of the license:

That being said, I explicitly give permission for anyone to use, modify, and distribute all my original code for this project in any form, with or without attribution, without fear of legal consequences — unless you plan to submit your app to Apple’s App Store, in which case written permission from me is explicitly required.

I suggest reading this Stack Exchange post for more details explained in a simple-to-understand language.

The offending part of the license should be dropped for it to be compliant.

ermonas avatar Apr 15 '24 04:04 ermonas

It all boils down to the “no further restrictions” parts of the AGPLv3 license, that are mostly present in the sections 7 and 10 of it.

ermonas avatar Apr 15 '24 04:04 ermonas

Yeah, so far licensing problems have been ignored

DominusExult avatar Apr 15 '24 05:04 DominusExult

I’ve been re-reading Delta’s license, and I’m under the impression Riley believes he can have different licenses for the code he wrote, separating it from the third party code he used under the GPL.

This isn’t true. A derivative work is still governed under the GPL. There’s no way to separate “his code” from the “original code”.

Furthermore, besides being against the license “legally speaking”, it’s also against the spirit of it. GPL is all about giving people freedom to tinker and own the software they use. By design, the license is infectious to allow future devs to use it in the same way the previous dev used it.

This means, if Riley’s work is derivative of a work published under the GPL, then his work has to be GPL, because if someone wants to expand on it, the license stipulates they have to have the same rights Riley had when he began developing Delta.

ermonas avatar Apr 15 '24 19:04 ermonas

Aside from the discussion, the repo doesn't have a license listed under the "License" section, does that matter or is that just a github thing? It seems not since it inherits licenses from other projects it uses.

Proryanator avatar Apr 16 '24 04:04 Proryanator

Aside from the discussion, the repo doesn't have a license listed under the "License" section, does that matter or is that just a github thing? It seems not since it inherits licenses from other projects it uses.

The license was hastily added at the end of the readme page last week, so it shouldn’t matter too much.

Also, yes, you’re correct, the license was inherited from the projects this one is based on.

ermonas avatar Apr 16 '24 04:04 ermonas

Soon someone else will submit emulators to App Store legally and morally in case Riley doesn't do it.

haoranliu666 avatar Apr 16 '24 10:04 haoranliu666

I am not a lawyer, nor claim to be one, but from a cursory glance at the licenses it would appear that Riley would be in violation of the AGPLv3 license agreement with the attempted restriction imposed.

While yes he inherited the license from the cores used for this project, he still made a derivative work that is licensed to him under such terms, in which said terms mandate that any derivatives must be under the same license with no downstream restrictions.

I hope he fixes this issue is fixed soon.

SIDENOTE: His fears of an ‘App Store’ release of his project would be understandable if for the fact that Apple forbids any GPL licensed work on their storefront. It has been a known fact for a while, so despite Apple’s relaxation of emulation restrictions, this app wouldn’t be allowed on the App Store due to its licensing. (You can do what he’s doing by making your own store)

ndo360 avatar Apr 17 '24 00:04 ndo360

Apple does not forbid GPLed software, they don't care. BUT if anyone files an issue with Apple about GPLed software (seemingly by anyone who has code in the software), Apple will pull the app.

DominusExult avatar Apr 17 '24 05:04 DominusExult

IANAL, but there does seem to be multiple layers of licensing violations at play here:

  1. AGPLv3 licensing, as is, is not compatible with all the existing cores.
  • Most cores are GPLv2+, which are compatible with AGPLv3, due to the upgradability clause (the +) allowing for going to GPLv3, this then explicitly allows for combining with an AGPLv3 work.
  • One core is GPLv3+ (melonDS), which is compatible with AGPLv3, due to Section 13 explicitly allowing for combining with an AGPLv3 work.
  • One core is GPLv2 only (gambatte), which is incompatible with AGPLv3 (mainly due to some terms with patents), and the lack of the upgradability clause means the resulting larger work is mandated to be GPLv2 (fine with GPLv2+ cores, but not anything else).
  • Two cores are licensed under non-commerial licenses (Snes9x and GPGX), and thus these are simply not compatible with AGPLv3 licensing (nor any non-L GPL license in the first place). This is more egregious as the GPGX core is advertised to be locked behind Patreon builds (which is a clear violation of the non-commerial license), and presumingly Snes9x is also part of these paid builds (which is also a violation non-commerial license, although less egregious since it's not presumingly not locked out of free builds). Regardless of the Patreon however, these cores still cannot be combined in a larger work against GPL code.
  1. The "added" restriction is not quite clear in how it's intended to work.

That being said, I explicitly give permission for anyone to use, modify, and distribute all my original code for this project in any form, with or without attribution, without fear of legal consequences — unless you plan to submit your app to Apple’s App Store, in which case written permission from me is explicitly required.

  • If being charitable, you could potentially presume this entire sentence is a separate license (i.e. dual licensing). Keep in mind the terms "all my original code," this thus means this is licensing only applies to the original code. If this is in fact a separate license, this is perfectly fine and plays no part against AGPLv3, as riley is free to license their own original code however they please (as long as such a license is not at play with the "larger work" with third party GPL dependencies; i.e. someone theoretically using Delta as the frontend for their own core with other cores removed). Of course, this also means in theory this makes the separate license kind of useless in preventing App Store submissions, as a licensee can simply choose not to use this license which prevents App Store submission, and instead choose the AGPLv3 license which allows App Store submission. In practice, this would just "scare" people away from submitting to the App Store if anything, without having (legitimate) legal teeth.
  • If being uncharitable, you could assume the sentence is an additional clause against the AGPLv3 license. This would be a GPL violation only due to the other cores in the repo (sort of) forcing a GPL license to be at play, and thus not allowing such an additional clause. This is only thus a GPL violation due to third party GPL components (if such components are not at play, adding such a clause is fine, it just means it's not a pure AGPLv3 license, but rather a "AGPLv3 + App Store submission exception" license.
  • Regardless of whatever way you dice it, the original AGPLv3 is in violation with some of the cores regardless.

There are solutions of course here.

  1. The GB/C core can simply be replaced with one agreeable to the AGPLv3. SameBoy would be an obvious choice here (although other options exist).
  2. The Genesis core can likewise be replaced.
  • The old original Genesis Plus which GPGX is based on was dual licensed as non-commerial and GPLv2+, and thus it could be used here (and probably is the simplest option).
  • BlastEm is another option (GPLv3+), although it would need to use its hacked-in MAME interpreter branch.
  • Gens is another (old) option (GPLv2+)
  • Note that Picodrive is not an option, due to it also being under a non-commerial license
  1. The SNES core can likewise be replaced.
  • BSNES would be a somewhat obvious choice here (GPLv3+; with all the speed options toggled an iPhone probably could run it fine)
  • mednafen's SNES Faust core might be a good option (GPLv2+)
  1. Clarify the licensing of the App Store restriction possibly (otherwise it could just be assumed to a dual license regardless)
  2. A solution which avoids replacing any core could simply be to not mix them all in the same app, but instead release separate apps, this would then work fine as long as the larger work ends up under different licenses depending on the core (and of course if you go with the dual licensing theory the App Store restriction is technically not an issue). This also of course means still not offering any Snes9x or GPGX builds under Patreon.

CasualPokePlayer avatar Apr 18 '24 06:04 CasualPokePlayer

I wonder if @ekeeke is aware of this blatant disregard of the license in GPGX. If I wrote any of the cores used in Delta I'd be pretty pissed, especially considering Riley constantly calls this "an emulator he wrote" or similar terms, when in fact he wrote the frontend and infrastructure, but none of the actual emulation code.

endrift avatar Apr 18 '24 08:04 endrift