snes9xgit/snes9x

Seeking guidance on SNES9X integration in visionOS app (GPL compliance)

Jose4romSandwichVision opened this issue · 9 comments

Hi SNES9X maintainers (BearOso, OV2, kps501, and other contributors)

We're developing an app for Apple's Vision Pro (visionOS) and would like to incorporate SNES9X. We fully intend to comply with the GPLv2 license, including:

  • Providing source code
  • Preserving copyright notices
  • Stating any modifications
  • Licensing our derivative work under GPLv2
  • Maintaining a public repository with any updates or changes we make

We very much welcome your direction on what else we should do to honor the spirit and letter of your project.

Thanks for your great work on SNES9X!

I hate to be the bearer of bad news, but GPLv2 apps are not allowed in the App Store. Not only is the App Store terms of use legally incompatible with the App Store, but Apple actually rejects (or is supposed to reject) software using any version of GPL after the FSF made a big deal of it. Famously, apps that were in the App Store at the time got pulled until they could be relicensed and resubmitted. https://www.fsf.org/blogs/licensing/more-about-the-app-store-gpl-enforcement

Snes9x is not licensed under the GPLv2, and I don't believe that the license is GPL compatible, due to the non-commercial restriction. Beyond that, I can't say.

Thank you both very much! <sad trombone, for now>

The license is more of a limited BSD-type with a noncommercial clause. As long as you follow the guidelines you listed and you're not selling it for profit or to promote a commercial entity, you're OK. Whether Apple allows it is a crapshoot, I guess.

Oh, that's a good point. I thought OP was asking about a few of the filters and the JMA compression code that's GPL and LGPL licensed.

The filters and JMA have exceptions to be used under the Snes9x license, even if we are complying with GPL or LGPL usage. They could just as easily be excluded, since JMA is hardly ever used any more and GPU filters are significantly better.

OV2 commented

You can take a look at how retroarch (GPL) provides snes9x on steam as a free DLC: https://store.steampowered.com/app/1227444/RetroArch__Snes9x/

However here the base application is also free.

If snes9x is not your main content and you do not advertise with it you might be able to do something similar.

My non-authoritative read on the situation is basically this. If your project is one where having all of your ducks in a row on the licensing side is a dealbreaker, you probably don't want to deal with the mess that is the bespoke Snes9x license and its myriad of contributors. If you're just trying to do the right thing to the best of your ability, 1) keep it open source and 2) non-commercial, and you shouldn't have any problems from us. On a more technical side, if you are wanting to use the GPLv2 as your main license, you might look into trying to use the libretro dynamic library interface instead of statically compiling the code together. That way you can keep the licenses separate without the "viral" nature of the GPL kicking in.

Thank you all for your advice, we really appreciate it!