rileytestut / Delta

Delta is an all-in-one classic video game emulator for non-jailbroken iOS devices.
4.53k stars 334 forks source link

SNES core license incompatible with other cores and does not permit commercial activity #69

Open d235j opened 3 years ago

d235j commented 3 years ago

The SNES core uses snes9x which has for a long time been under a no-commercial-use license: https://github.com/snes9xgit/snes9x/blob/c3fa4009a3ce9724d8d5dc7646b1eed20f91234b/LICENSE

This license is incompatible with the GPL or GPL-compatible licenses of the other cores, and does not permit offering the package in a way where payment is required (e.g. Patreon betas).

One solution would be to separate out the SNES core into a separate plugin that the user can install as desired. The main Delta bundle would not include SNES emulation, but could have an explanation of why SNES is not included and needs to be installed separately. This plugin would have to be accessible for free, and any beta versions of it would need to be accessible to anyone and could not require a Patreon beta of Delta or another package.

Alternatively, some other core, under a compatible license that does not prohibit commercial use, could be included. bsnes/higan/byuu may be an option, but these might not perform sufficiently well on iOS.

dlevi309 commented 3 years ago

Delta isn't sold commercially, if you're referring to beta versions of Delta being available to patrons of Riley, then this whole issue is unnecessary. The beta versions posted are simultaneously committed on this repo (check out a develop branch), they're released publicly for anyone to build and dissect.

DominusExult commented 3 years ago

The non-commercial license doesn't care whether you offer the source at the same time (not doing that would break other licenses) but that he takes money for offering the binary. As much as I love Delta, Riley really needs to look into the licenses of the software he uses.

d235j commented 3 years ago

As @DominusExult stated — the snes9x license does not care whether the software is being "sold commercially" — it includes any instance of charging money for access to Snes9x:

Snes9x is freeware for PERSONAL USE only. Commercial users should seek permission of the copyright holders first. Commercial use includes, but is not limited to, charging money for Snes9x or software derived from Snes9x, including Snes9x or derivatives in commercial game bundles, and/or using Snes9x as a promotion for your commercial product.

This is also GPL-incompatible — see #70.

dlevi309 commented 3 years ago

Listen, I'm not his lawyer, but from what I know in regards to the services provided, he's not actually selling access to beta copies of Delta _specifically__, for example, a month or two could by without any uploads of a delta beta to his patrons (let's say he's just focused on AltStore) and because of this, would you be entitled to a refund through Patreon because the creator hadn't followed through on his agreement? No. What's being given in exchange for a patron subscription is 1. Access to the discord server 2. Beta versions of whatever he's working on (and yeah, maybe he's most known for Delta, but the actual product itself is available through all public domain, all you could really say he's selling with certainty is access to whatever he feels like building & uploading at his own discretion.

d235j commented 3 years ago

@dlevi309 The way software licenses work — if he is not following the license agreement of the software, he is not allowed to distribute the software.

The snes9x core is under a license (snes9x noncommercial) that does not allow for charging for the software in any way. The rest of the emulation cores are under a license that does not allow adding additional restrictions to the software such as the non-commercial use restriction. While the source code must be shared, these can be distributed for a fee, but additional restrictions cannot be added, and the code cannot be combined with other software packages which has additional restrictions.

Paying for a Patreon subscription provides access to the beta of Delta, which includes the emulation core based on snes9x. This would fall under "charging money for Snes9x or software derived from Snes9x", as Delta is derived in part from Snes9x.

Additionally, because the GNU GPL license does NOT allow such a restriction on commercial use/distribution, it is not permitted for the other emulation cores licensed under the GNU GPL to be combined with the snes9x core in the same executable or library.

dlevi309 commented 3 years ago

@d235j alright, I understand now. Sorry if it felt I was just throwing back arguments, you've explained it well and thoroughly. I guess it would be best now to get Riley's input

Lord-Nightmare commented 3 years ago

As one of the contributors to and copyright holders of code in snes9x, this license violation concerns me greatly. The snes9x license states:

Snes9x is freeware for PERSONAL USE only. Commercial users should
  seek permission of the copyright holders first. Commercial use includes,
  but is not limited to, charging money for Snes9x or software derived from
  Snes9x, including Snes9x or derivatives in commercial game bundles, and/or
  using Snes9x as a promotion for your commercial product.

This, as I understand it, forbids commercial use of the snes9x code or binaries in any manner. As I understand it, commercial use includes (but is not limited to) use where money or instruments of or purchased with monetary value are being transferred and/or created to grant access to or use of the resulting code/binary/library in any way. The license, in forbidding commercial use, also forbids embedding ads or other monetary-earning elements within the resulting code/binaries/libraries. This forbids snes9x code/binaries in Patreon builds gated by any non-free backer tier, or in builds/binaries/libraries distributed by App Stores or AltStores where they are not free, or any build, free or not, bundled with ads or other monetary-earning elements. It also forbids snes9x from being legally linked to or compiled into any other program, app, library, or code licensed under the GNU LGPL, GPL, or other licenses, as the snes9x license adds additional restrictions which run afoul of LGPLv2.1 Section 6, GPLv2 Section 6, GPLv3 Section 10, and others not mentioned here. TL/DR: Snes9x cannot be legally used to earn money in any way, including gating builds via Patreon.